1、引言
随着深度学习的发展迅速,生成式模型如生成对抗网络(GAN)、变分自编码器(VAE)等取得了显著的进展。看似逼真的图像数据,仍旧会有结构缺陷等情况发生,那么如何客观、准确的评估这些生成式模型的性能,就成了我们需要解决的问题。
有了客观的评估标准,对后续模型的迭代、以及用户的体验上能够有很清晰的认知,也能够很好的反映生成图像的真实感和自然度。研究人员意识到,评估生成式模型不仅仅要考虑生成图像和真实图像的像素级差异,更重要的是衡量生成数据与真实数据在整体分布上的相似性。传统指标如峰值信噪比(PSNR)、结构相似性指数(SSIM)等难以从分布的角度对生成模型进行有效的评估。因为对于生成模型来说,学习真实数据的分布是其最主要的目标,达到此目标才能生成符合真实数据分布的新样本。
与训练的卷积神经网络(如Inception网络)在图像特征提取方面取得了很好的效果,能够提取出具有代表性和语义信息丰富的图像特征,这为特征空间的角度评估生成数据和真实数据的分布差异提供了技术思路上的支持,让基于特征统计的评估指标FID成为生成式模型的重要评估指标之一
2、概念
FID(Frechet Inception Distance)评估指标是一种用于评估生成式模型生成的样本质量的评估指标,核心是衡量生成样本分布与真实样本分布之间的差异。
3、作用
解决与人类感知一致性的问题
FID指标通过计算预训练模型提取的特征的统计量差异,能够更好的与人类主观生成的图像感知相匹配,能够更准确的反映出生成图像看起来真实性、自然性。
解决全局分布评估问题
FID考虑了整个数据集的统计特性,能够从全局角度衡量生成数据与真实数据在整体特征空间中的分布差异。它计算的是所有数据的特征均值、协方差等统计量之间的距离。而不是仅仅关注局部、单个数据的像素差异或特征差异。从而更全面的评估了两者的拟合程度。
解决模型多样性和真实性平衡的问题
FID指标对生成结果的多样性和真实性都比较敏感,能够在一定程度上反映二者的平衡。如果FID指标较高,则需要技术人员对样本真实性进行排查,如果真实性不高、则说明生成的样本数据单一,解决单一的问题后,可降低FID指标。
4、原理
FID基于两个高斯分布之间的Wasserstein 距离的一种近似。它假设真实数据和生成数据在一个高纬度的特征空间中可以用高斯分布近似表示。然后通过2个高斯分布之间的距离来衡量其相似程度。具体来说,FID利用了Inception模型提取的特征来构建这些高斯分布。其计算方式和过程有以下3个步骤:
第一步:特征提取
首先使用预训练的Inception模型对他们进行特征提取,其模型通常会输出一个高维度特征向量,假设对于每个图像,提取到的特征维度为D。
对于「真实图像」的数据集X有:
其特征向量的集合为:
对于「生成图像」的数据集Y有:
其特征向量的集合为:
第二步:计算均值和协方差
计算「真实图像」特征向量的「均值Ax」和「协方差矩阵Ex」分别为:
同理,计算「样本图像」特征向量的「均值AY」和「协方差矩阵EY」分别为:
第三步:计算FID分数
FID最终分数的计算公式为:
其中,|| . || 表示欧几里得范数,Tr(.)表示矩阵的迹。
在实际计算中,计算可能会遇到数值稳定性问题,通常会使用一些数值计算方法来解决,比如通过特征分解或奇异值分解来计算矩阵的平方根。
FID分数越低,说明生成样本的分布与真实样本的分布越接近,生成模型的性能越好。
5、优缺点
5.1、优点
与人类感知相关性强
FID 指标在很多情况下与人类对图像质量和真实性的主观感知具有较好的一致性。它能够捕捉到图像在整体结构、纹理等方面的差异,评估结果能较好地反映生成图像是否看起来真实、自然,是否与真实数据分布相似,这使得它在评估生成模型生成图像的视觉效果上具有较高的可信度。
考虑全局统计信息
该指标不仅仅关注图像的局部特征,而是综合考虑了整个图像数据集的统计特性。通过计算真实数据和生成数据在特征空间中的均值和协方差等统计量,来衡量两者分布的差异,能够从全局角度评估生成模型的性能,避免了只关注局部细节而忽略整体分布的问题。
对多样生成结果敏感
FID 指标对于生成模型生成结果的多样性较为敏感。如果生成模型只能生成有限种类或模式的样本,而不能很好地覆盖真实数据的多样性,FID 值会相应地较高,能够反映出生成模型在多样性方面的不足;反之,若生成模型能生成丰富多样且与真实数据分布相似的样本,FID 值会较低,这有助于评估生成模型在生成多样性和真实性之间的平衡。
无需人工标注
FID 的计算不需要对数据进行额外的人工标注,只需利用真实数据和生成数据本身,通过预训练的模型提取特征并进行计算即可得到评估结果。这大大降低了评估的成本和工作量,尤其在大规模数据和复杂模型的评估中,具有较高的效率和可操作性。
广泛的适用性
FID 指标不仅适用于评估图像生成模型,在其他领域如语音生成、文本生成等,只要能够找到合适的特征提取器来提取数据的特征表示,也可以应用 FID 来评估生成数据与真实数据的分布差异,具有很强的通用性和扩展性。
5.2、缺点
依赖预训练模型
FID 的计算高度依赖于预训练的 Inception 模型或其他类似的特征提取器。如果预训练模型本身存在偏差或不能很好地适应特定的数据集和任务,可能会影响 FID 指标的准确性和可靠性。例如,对于一些具有特殊领域知识或特定风格的数据,预训练模型可能无法准确提取有代表性的特征,导致 FID 评估结果不能真实反映生成模型的性能。
对局部细节不敏感
尽管 FID 能够考虑全局统计信息,但它对图像的局部细节变化相对不敏感。在某些情况下,生成图像可能在局部存在明显的瑕疵或错误,但由于整体分布与真实数据相似,FID 分数可能仍然较低,不能很好地捕捉到这些局部的质量问题。
计算复杂度较高
FID 的计算涉及到高维特征向量的统计量计算,如协方差矩阵的计算和矩阵平方根的求解等,计算复杂度较高,尤其是在处理大规模数据集时,计算量会显著增加,需要消耗大量的时间和计算资源。
不能完全反映语义信息
FID 主要关注的是数据在特征空间中的分布差异,对于数据的语义信息的捕捉能力有限。它可能无法准确区分一些在语义上有明显差异但在特征分布上相似的生成数据和真实数据,在评估一些对语义理解要求较高的生成任务时,可能存在一定的局限性。
缺乏对动态变化的适应性
在一些动态变化的场景中,如生成模型在训练过程中不断更新和进化,FID 指标可能无法及时准确地反映模型的实时性能变化。因为它的计算基于固定的统计量,对于模型在不同训练阶段或不同参数设置下的细微变化,可能不能很好地进行动态评估。
6、应用
6.1、图像生成领域
应用范围:用于评估生成对抗网络(GAN)、变分自编码器(VAE)等生成模型生成的图像质量,衡量生成图像与真实图像在分布上的相似程度,帮助比较不同生成模型的性能,指导模型的改进和优化。
案例:在动漫图像生成中,研究人员使用 FID 指标评估不同 GAN 架构生成的动漫角色图像的质量。通过计算 FID 分数,发现改进后的 GAN 架构生成的图像在整体风格、细节纹理等方面更接近真实的动漫图像,FID 分数明显低于传统 GAN 架构,表明其生成效果更好。
6.2、视频生成领域
应用范围:可用于评估视频生成模型生成的视频质量,判断生成视频的内容、动作、场景等是否符合真实视频的分布特征,对视频生成模型的研发和优化具有重要的指导意义。
案例:在自动驾驶场景模拟视频生成中,通过 FID 指标评估生成的自动驾驶场景视频与真实道路场景视频的相似性。模型经过不断训练和优化,FID 分数逐渐降低,生成的视频能够更逼真地模拟真实的交通场景、车辆行驶轨迹和行人行为等,为自动驾驶算法的测试和验证提供了更可靠的模拟数据。
6.3、医学影像领域
应用范围:在医学影像合成、图像增强等任务中,FID 指标可以帮助评估生成的医学影像与真实医学影像的相似性,辅助医生和研究人员判断生成影像的质量和可靠性,为医学影像分析和诊断提供支持。
案例:在肺部 CT 影像生成中,利用 FID 指标评估生成的肺部 CT 影像与真实 CT 影像的差异。通过对比不同生成方法的 FID 分数,选择出最能准确生成肺部病变特征和正常组织形态的方法,有助于提高肺部疾病的诊断准确性和效率,为医生提供更多的诊断依据。
6.4、文本生成领域
应用范围:虽然不像在图像领域那样直接,但可以通过将文本转换为向量表示等方式,利用 FID 指标衡量生成文本与真实文本在语义空间中的分布差异,用于评估文本生成模型的性能,如语言模型生成的文章、对话等的质量。
案例:在智能客服对话生成中,使用 FID 指标评估对话生成模型生成的回复与真实客服对话的相似性。通过不断优化模型,降低 FID 分数,使生成的对话更符合真实场景下的语言表达和逻辑,提高智能客服的服务质量和用户满意度。
6.5、语音生成领域
应用范围:用于评估语音生成模型生成的语音与真实语音的相似程度,从语音的频谱、韵律、音色等多个维度衡量生成语音的质量,推动语音合成、语音转换等技术的发展。
案例:在语音助手的语音合成功能中,利用 FID 指标评估不同语音合成模型生成的语音质量。通过比较 FID 分数,选择出能够生成更自然、流畅、接近真实人声的语音合成模型,提升语音助手的用户体验,使语音交互更加自然和高效。
7、常见的FID计算工具
-
PyTorch-FID
-
特点:基于 PyTorch 的库,实现了 FID 和 Inception Score 两种评估图像生成模型质量的方法。内置预训练的 InceptionV3 模型,支持 GPU 加速,提供简洁易用的 API,还包含处理数据集、批处理计算和分数统计等功能。
-
clean-fid
-
特点:专门用于 PyTorch 的 FID 计算,考虑了图像调整大小和量化步骤等细节问题,使 FID 分数在不同方法、论文和团队之间具有可比性。支持使用 CLIP 特征计算 FID,提供了简单的接口来计算 FID 和 KID 分数,还提供了一些常用数据集的预计算统计信息。
-
metrics
-
特点:支持 PyTorch 和 TensorFlow 框架,提供了官方等效版本的 TF 实现以及更快捷的 PyTorch 版本。支持多 GPU 计算,能极大提升大规模数据集上的计算效率,还支持对任意文件夹中的图片进行统计分析,可用于计算 Inception Score 和 FID 分数。