Fréchet Inception Distance (FID)
了解弗雷歇起评分(FID)如何评估生成式AI图像质量、保真度与多样性,以及如何计算和解读评分。
Fréchet Inception Distance (FID) 是一种用于比较生成模型生成的图像与真实图像参考集的指标。它将两组图像转换为学习到的视觉特征,总结每个特征分布,并测量它们之间的距离。较低的 FID 通常表明生成的图像在视觉质量和多样性上与真实图像更相似,而较高的 FID 则暗示存在伪影、缺失变化或内容不匹配。
FID 的工作原理#
FID 评估的是图像集,而不是单个图像对。这使得它非常适合评估生成式 AI系统,例如生成对抗网络和扩散模型。
计算过程遵循四个主要步骤:
- 真实图像和生成的图像通过Inception v3 特征提取器,该提取器通常在ImageNet上预训练。
- 网络将每张图像转换为嵌入,即其高级视觉特征的数值表示。
- FID 估计真实和生成特征集的均值和协方差矩阵。均值表示它们的中心,而协方差描述特征如何共同变化。
- 它将均值之间的平方距离与协方差矩阵之间的差异结合起来。此计算包含一个矩阵平方根。
得出的 FID 分数是非负的。在理想极限下,相同的特征分布会产生零,尽管有限样本和数值效应意味着即使是两个真实图像子集也会产生非零分数。
解读 FID 分数#
越低越好,但“良好”的 FID 分数没有通用的阈值。解读取决于数据集、图像分辨率、样本数量、预处理管道和特征提取器。只有在这些条件保持一致时,才应比较分数。
FID 对生成图像的两个重要方面做出响应:
- **保真度:**模糊的图像、不真实的纹理、扭曲的物体和其他视觉伪影会使生成的特征偏离真实分布。
- **多样性:**重复的输出或模型坍塌会减少特征变化,从而改变生成分布的协方差。
然而,FID 并没有解释分数变化的原因。它还可能忽略罕见但重要的失效情况、记住的图像、不正确的提示对齐或数据集偏见。因此,团队应将 FID 与目视检查、特定于应用的测试和子群分析结合起来。
FID 与相关指标的对比#
FID 常常与其他图像生成和计算机视觉指标混淆:
- **Inception 分数:**评估生成的图像,而无需将其直接与真实参考图像进行比较。由于 FID 同时使用真实样本和生成样本,因此它通常能提供更多关于分布不匹配的信息。
- **核 Inception 距离:**同样比较特征分布,但使用的是基于核的估计器。当样本高效或无偏估计很重要时,它会很有用。
- **平均准确率均值:**衡量目标检测器是否正确分类和定位了带标签的物体。FID 评估的是生成的图像分布,而不是检测准确率。
- **感知相似度:**通常比较对应的图像对。而 FID 评估的是两个集合是否具有相似的整体统计数据。
实际应用#
一个实际应用是评估用于制造检查的合成数据。团队可能会生成划痕、裂纹或缺失组件的图像,并计算与真实生产线中保留的照片相比的 FID。高分数可以揭示出合成光照、纹理或缺陷形状不像部署条件。在改进生成器后,团队仍应训练其检测器并使用Ultralytics 验证模式来验证特定任务的性能。
第二个例子是模拟道路场景生成。工程师可以创建夜间、雨天或雾天图像来扩充自动驾驶训练数据。FID 可以将每个合成条件与该环境中的真实帧进行比较。较大的距离警告存在域不匹配,这可能导致下游检测器学习到不真实的背景或天气伪影,而不是可迁移的道路特征。
Ultralytics 平台数据集管理可以帮助团队在训练和部署之前组织、检查和版本控制真实及合成图像拆分。
在 Python 中计算 FID#
文档化的TorchMetrics FID 实现接受真实和生成的图像批次:
import torch
from torchmetrics.image.fid import FrechetInceptionDistance
generator = torch.Generator().manual_seed(7)
real_images = torch.randint(0, 256, (64, 3, 64, 64), dtype=torch.uint8, generator=generator)
generated_images = torch.randint(32, 224, (64, 3, 64, 64), dtype=torch.uint8, generator=generator)
fid = FrechetInceptionDistance(feature=64)
fid.set_dtype(torch.float64)
fid.update(real_images, real=True)
fid.update(generated_images, real=False)
print(f"FID: {fid.compute().item():.3f}")这个小例子使用 64 维特征进行快速演示。标准基准比较通常使用默认的 2,048 维表示和更多的图像。为了进行可靠的评估,请保持预处理和样本数量固定,报告准确的配置,尽可能重复测量,并在生成的数据支持下游视觉任务时,用Ultralytics 模型评估工作流来补充 FID。









