Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Fréchet Inception Distance (FID)

Fréchet Inception Distance(FID)通过比较生成图像与真实照片的 Inception 特征统计量,为生成图像评分。了解其计算和比较方式。

弗雷歇 Inception 距离(FID)是一种生成图像模型的评分指标,它会比较模型生成图像与真实图像的统计特征。两组图像都会通过预训练的 Inception v3 网络;每组图像的特征都会汇总为一个具有均值和协方差的多元高斯分布,而 FID 就是这两个高斯分布之间的弗雷歇距离。分数越低越好;分数为零表示两组特征的均值和协方差完全相同。约翰内斯·开普勒林茨大学的 Martin Heusel 及其同事于 2017 年在论文《使用双时间尺度更新规则训练的 GAN 会收敛到局部纳什均衡》中提出 FID。它很快取代 Inception Score,成为生成对抗网络(GAN)以及后来扩散模型的标准指标。

FID 的计算方法#

  1. 生成大量图像,通常为 50,000 张,并收集一组真实图像作为参考,通常使用训练集。
  2. 将每张图像调整为 299 x 299 像素,然后输入 Inception v3。该网络是一个在 ImageNet上进行图像分类训练的卷积神经网络。保留其最后一个池化层输出的 2,048 维向量,作为图像的嵌入。
  3. 分别计算真实图像嵌入和生成图像嵌入的均值向量与协方差矩阵。
  4. 将两者合并:FID =(两个均值之间的平方距离)+ trace(C_real + C_gen - 2 x sqrt(C_real x C_gen)),其中 sqrt 表示矩阵平方根。

第一项会在生成图像与真实图像的平均差异增大时上升,例如出现色偏或内容构成不正确。第二项会在图像多样性异常时上升,例如 GAN 发生模式崩溃,只生成少数几种输出的情况。因此,一个分数就能同时反映保真度和多样性,这也是 FID 成为 Stable Diffusion等文生图系统默认评分指标的原因。

使用 NumPy 对模拟的 64 维特征向量进行相同计算:

import numpy as np

rng = np.random.default_rng(0)

# Simulated 64-D feature vectors for 5,000 real and 5,000 generated images
real = rng.normal(0.0, 1.0, size=(5000, 64))
generated = rng.normal(0.3, 0.8, size=(5000, 64))  # shifted mean, less variety

# Summarize each set as a Gaussian: a mean vector and a covariance matrix
mu_r, mu_g = real.mean(axis=0), generated.mean(axis=0)
cov_r, cov_g = np.cov(real, rowvar=False), np.cov(generated, rowvar=False)

# Trace of the matrix square root of cov_r @ cov_g, via its eigenvalues
tr_covmean = np.sqrt(np.linalg.eigvals(cov_r @ cov_g)).real.sum()

# FID = squared distance between means + covariance mismatch
fid = ((mu_r - mu_g) ** 2).sum() + np.trace(cov_r) + np.trace(cov_g) - 2 * tr_covmean
print(f"FID: {fid:.2f}")

脚本打印出的 FID 为 8.78。均值偏移贡献约 5.8,分布范围较窄贡献约 2.6,剩下的约 0.5 来自有限样本对统计数据的估计,这总会推高 FID。在实际评估中,TorchMetrics FID等库会使用随该指标发布的原始 TensorFlow Inception 权重来计算特征。Torchvision 的 ImageNet 训练版 Inception v3 使用不同的权重,因此其得分无法与已发表的结果进行比较。

解读与比较 FID 分数#

只有在完全相同的条件下,FID 值才可以比较:使用相同的参考集、图像分辨率、样本数量和预处理方法。使用不同的库调整图像大小或将图像保存为 JPEG,都可能让分数偏移几个点;这正是 Clean-FID实现诞生的原因。小样本会抬高分数,因此原作者建议至少使用 10,000 张图像;基于 5,000 个样本计算出的分数不能与基于 50,000 个样本计算出的分数比较。

举例来说,StyleGAN2 在 FFHQ 数据集的 1024 x 1024 人脸图像上达到 2.84 的 FID;在 30,000 条 MS-COCO 图像描述上进行零样本文生图时,Google Imagen 的分数为 7.27,而 DALL-E 2 为 10.39。

其他生成图像指标#

  • Inception Score(IS):仅根据生成图像评分,衡量 Inception 对图像分类时的置信度和多样性。它完全不查看真实数据,因此无法发现生成清晰图像但图像类别不正确的模型。
  • 核 Inception 距离(KID):使用无偏核估计器比较相同的 Inception 特征,因此在样本量较小时更可靠。
  • CLIP 分数:衡量图像与文本提示的匹配程度,而 FID 不会反映这一点,因此文生图模型通常会同时报告这两项指标。
  • 生成模型的精确率和召回率:将 FID 的单一分数拆分为保真度(生成图像中看起来真实的比例)和覆盖度(模型重现的真实数据多样性比例)。
  • FD-DINOv2:使用 DINOv2 特征计算相同的弗雷歇距离。DINOv2 是一个自监督视觉 Transformer。George Stein 及其同事于 2023 年提出了该指标,此前一项大规模人类研究发现,FID 无法反映人们对扩散模型图像逼真度的评价。

视频模型也采用相同思路,使用弗雷歇视频距离;VBench等评测套件则将视频质量拆分为不同维度,而不是只用单一距离衡量。

合成训练数据的 FID#

FID 也可用于在训练检测器前筛选合成数据。针对自动驾驶汽车视觉中的夜间驾驶,或缺陷检测中的特定产品缺陷等罕见场景,将生成图像与部署摄像头拍摄的真实照片进行评分比较,可以在投入训练时间前发现领域差距。最后还要检查下游准确率:使用和不使用合成图像分别训练 Ultralytics YOLO26,然后在验证模式下,使用相同的真实留出图像比较平均精度均值(mAP)。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来