生成对抗网络(简称GANs)是一种有效的用于开发生成模型的深度学习方法。
与其他使用损失函数直到收敛的深度学习神经网络模型不同,GAN生成器模型是使用一个名为判别器的第二模型进行训练的,该模型用于将图像分类为真实或生成的。生成器和判别器模型一起训练以维持平衡。
因此,GAN生成器模型没有用于训练的目标损失函数,也无法仅从损失函数来客观评估训练的进展以及模型相对或绝对的质量。
取而代之的是,已经开发了一系列定性和定量技术,以基于生成合成图像的质量和多样性来评估GAN模型的性能。
在本文中,您将了解基于生成合成图像的生成对抗网络模型评估技术。
阅读本文后,你将了解:
- 在训练GAN生成器模型时没有使用目标函数,这意味着必须根据生成的合成图像的质量来评估模型。
- 手动检查生成的图像是入门的好方法。
- 像Inception Score和Frechet Inception Distance这样的定量度量可以与定性评估相结合,以提供对GAN模型的稳健评估。
通过我的新书《Python生成对抗网络》开始您的项目,其中包括分步教程和所有示例的Python源代码文件。
让我们开始吧。

如何评估生成对抗网络
照片由 Carol VanHook 拍摄,部分权利保留。
概述
本教程分为五个部分;它们是:
- 评估GAN生成器模型的问题
- 手动GAN生成器评估
- 定性GAN生成器评估
- 定量GAN生成器评估
- 选择哪种GAN评估方案
评估GAN生成器模型的问题
生成对抗网络是一种基于深度学习的生成模型。
GAN在生成高质量和大规模合成图像方面已被证明非常有效,并在各种问题领域中得到了应用。
生成器模型不是直接训练的,而是由第二个模型(称为判别器)进行训练,该模型学会区分真实图像和假图像或生成的图像。因此,生成器模型没有目标函数或目标度量。
生成对抗网络缺乏目标函数,这使得比较不同模型的性能变得困难。
——《改进GAN训练技术》,2016。
这意味着对于评估给定的GAN生成器模型,没有普遍接受的方法。
这对GAN的研究和使用是一个问题;例如,当
- 在训练过程中选择最终的GAN生成器模型。
- 选择生成的图像来展示GAN生成器模型的能力。
- 比较GAN模型架构。
- 比较GAN模型配置。
GAN生成器模型的客观评估仍然是一个未解决的问题。
尽管已经引入了多种度量,但到目前为止,对于哪种度量最能捕捉模型的优缺点并应用于公平的模型比较,还没有达成共识。
— GAN评估度量标准的优缺点,2018。
因此,GAN生成器模型根据生成图像的质量进行评估,通常是在目标问题域的背景下。
想从零开始开发GAN吗?
立即参加我为期7天的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
手动GAN生成器评估
许多GAN实践者倾向于通过手动评估生成器模型合成的图像来评估GAN生成器。
这包括使用生成器模型创建一批合成图像,然后评估这些图像相对于目标域的质量和多样性。
这可以由研究人员或从业者本人执行。
通过人类视觉检查样本是评估GAN最常见和最直观的方法之一。
— GAN评估度量标准的优缺点,2018。
生成器模型经过许多训练周期迭代训练。由于没有模型性能的客观度量,我们无法知道训练过程何时应该停止,何时应该保存最终模型以供以后使用。
因此,通常使用模型训练过程中的当前状态来生成大量合成图像,并保存用于生成图像的生成器的当前状态。这允许通过其生成的图像对每个保存的模型进行事后评估。
一个训练周期是指用于更新模型的训练数据集中的图像的完整周期。模型可以系统地跨训练周期保存,例如每隔一个、五个、十个或更多训练周期。
尽管手动检查是模型评估中最简单的方法,但它也有许多局限性,包括
- 它是主观的,包括审阅者对模型、其配置和项目目标的偏见。
- 它需要了解目标域的什么才是现实的,什么不是。
- 它仅限于可以在合理时间内审查的图像数量。
……使用人类视觉评估生成图像的质量既昂贵又麻烦,存在偏见……难以重现,并且不能完全反映模型的容量。
— GAN评估度量标准的优缺点,2018。
主观性几乎肯定会导致有偏见的模型选择和挑拣,并且不应用于非平凡项目的最终模型选择。
尽管如此,对于从业者来说,在熟悉这项技术时,这是一个起点。
幸运的是,已经提出并采用了更复杂的GAN生成器评估方法。
有关全面的调查,请参阅2018年题为“GAN评估度量标准的优缺点”的论文。这篇论文将GAN生成器模型评估分为定性和定量度量,我们将在以下各节中根据此划分回顾其中的一些。
定性GAN生成器评估
定性度量是非数值的度量,通常涉及人类主观评估或通过比较进行的评估。
以下列出了五种用于评估GAN生成器模型的定性技术。
- 最近邻。
- 快速场景分类。
- 评分和偏好判断。
- 评估模式丢失和模式崩溃。
- 调查和可视化网络内部。

定性GAN生成器评估方法总结
摘自:GAN评估度量标准的优缺点。
也许最常用的定性GAN生成器模型是对图像手动检查的扩展,称为“评分和偏好判断”。
这类实验要求受试者根据其生成图像的保真度对模型进行评分。
— GAN评估度量标准的优缺点,2018。
这是要求人类评判者对该域的真实图像和生成图像的样本进行排名或比较。
“快速场景分类”方法通常是相同的,尽管图像以非常有限的时间量呈现给人类评判者,例如一秒钟的一部分,并被分类为真实或伪造。
图像通常成对呈现,并要求人类评判者选择他们更喜欢的图像,例如,哪张图像更逼真。得分或评分是根据在这些比赛中特定模型生成图像的次数确定的。通过对多个不同的人类评判者的评分取平均值来减少评判的方差。
这是一项劳动密集型工作,尽管可以使用诸如亚马逊的Mechanical Turk之类的众包平台来降低成本,并使用Web界面来提高效率。
通过让人类注释者评判样本的视觉质量,可以获得一个直观的性能度量。我们使用亚马逊 Mechanical Turk……使用Web界面……来自动化此过程,我们用它来要求注释者区分生成数据和真实数据。
——《改进GAN训练技术》,2016。
该方法的一个主要缺点是人类评判者的性能不是固定的,并且会随着时间的推移而提高。如果他们获得反馈,例如关于如何检测生成图像的线索,情况尤其如此。
通过从此类反馈中学习,注释者能够更好地指出生成图像中的缺陷,从而提供更悲观的质量评估。
——《改进GAN训练技术》,2016。
另一个主观总结生成器性能的流行方法是“最近邻”。这包括从该域中选择真实图像样本,并找到一个或多个最相似的生成图像进行比较。
通常使用距离度量,例如图像像素数据之间的欧几里得距离,来选择最相似的生成图像。
最近邻方法有助于为评估生成图像的逼真程度提供背景。
定量GAN生成器评估
定量GAN生成器评估是指计算用于总结生成图像质量的特定数值得分。
以下列出了二十四种用于评估GAN生成器模型的定量技术。
- 平均对数似然
- 覆盖率指标
- Inception Score (IS)
- 改进的Inception Score (m-IS)
- 模式得分
- AM得分
- Frechet Inception Distance (FID)
- Maximum Mean Discrepancy (MMD)
- Wasserstein Critic
- 生日悖论测试
- 分类器双样本测试 (C2ST)
- 分类性能
- 边界失真
- 统计上不同的箱数 (NDB)
- 图像检索性能
- 生成对抗度量 (GAM)
- 比赛胜率和技能等级
- 归一化相对判别得分 (NRDS)
- 对抗准确性和对抗发散性
- 几何得分
- 重构误差
- 图像质量度量(SSIM、PSNR和清晰度差)
- 低级图像统计
- 精确率、召回率和F1分数

定量GAN生成器评估方法总结
摘自:GAN评估度量标准的优缺点。
Goodfellow等人在2014年的原始GAN论文“生成对抗网络”中使用了“平均对数似然”方法,也称为核密度估计或Parzen密度估计,来总结生成图像的质量。
这涉及估计生成器在多大程度上捕捉了该域中图像的概率分布这一挑战性方法,但总的来说,它在评估GAN方面效果不佳。
Parzen窗口估计似然有利于平凡模型,并且与样本的视觉保真度无关。此外,它在低维空间中无法近似真实似然或对模型进行排序。
— GAN评估度量标准的优缺点,2018。
Inception Score和Frechet Inception Distance是评估生成图像的两个广泛采用的度量。
Inception Score由Tim Salimans等人于2016年题为“改进GAN训练技术”的论文中提出。
Inception Score (IS) […] 可能是GAN评估中最广泛采用的分数。
— GAN评估度量标准的优缺点,2018。
计算Inception Score涉及使用预训练的深度学习神经网络模型对生成的图像进行图像分类。具体来说,使用Inception v3模型,该模型由Christian Szegedy等人于2015年题为“重新思考计算机视觉的Inception架构”的论文描述。依赖于Inception模型赋予了Inception Score其名称。
使用该模型对大量生成的图像进行分类。具体来说,预测图像属于每个类别的概率。然后,这些概率在分数中进行汇总,以同时捕获每张图像在多大程度上看起来像一个已知类别,以及图像集在已知类别中的多样性。
较高的Inception Score表示更高质量的生成图像。
Frechet Inception Distance(FID)得分由Martin Heusel等人在2017年题为“GAN通过双时间尺度更新规则训练收敛到局部纳什均衡”的论文中提出并使用。该得分被提出作为对现有Inception Score的改进。
FID在可区分性、鲁棒性和计算效率方面表现良好……。研究表明,FID与人类判断一致,并且比IS对噪声更鲁棒。
— GAN评估度量标准的优缺点,2018。
与Inception Score一样,FID得分也使用Inception v3模型。具体来说,使用模型的编码层(输出图像分类之前的最后一个池化层)来捕获输入图像的计算机视觉特定特征。这些激活是为一组真实图像和生成图像计算的。
每个真实图像和生成图像的激活被概括为一个多元高斯分布,然后使用Frechet距离(也称为Wasserstein-2距离)计算这两个分布之间的距离。
较低的FID得分表示更逼真的图像,并且与真实图像的统计特性相匹配。
选择哪种GAN评估方案
在入门时,最好从手动检查生成的图像开始,以便评估和选择生成器模型。
- 手动图像检查
对于初学者来说,开发GAN模型已经足够复杂了。在改进模型实现和测试模型配置时,手动检查可以帮助您取得很大进展。
一旦您在开发GAN模型方面的信心提高,就可以使用Inception Score和Frechet Inception Distance来定量地总结生成图像的质量。没有单一的最佳和公认的度量,尽管这两种度量接近。
到目前为止,对于最佳得分还没有达成共识。不同的得分评估了图像生成过程的各个方面,并且不太可能有一个得分能够涵盖所有方面。尽管如此,一些度量似乎比其他度量更合理(例如FID得分)。
— GAN评估度量标准的优缺点,2018。
这些度量捕捉了生成图像的质量和多样性,这些图像既独立(前者)又与真实图像(后者)进行比较,并且被广泛使用。
- Inception Score
- Frechet Inception Distance
这两种度量都易于在生成的图像批次上实现和计算。因此,在训练过程中系统地生成图像并保存模型的做法可以而且应该继续用于事后模型选择。
可以使用最近邻方法来定性地总结生成的图像。如果需要,也可以通过众包平台使用基于人类的评分和偏好判断。
- 最近邻
- 评分和偏好判断
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
- 生成对抗网络, 2014.
- GAN评估度量标准的优缺点, 2018.
- 训练 GAN 的改进技术, 2016.
- GAN通过双时间尺度更新规则训练收敛到局部纳什均衡, 2017.
- GANs是创建的平等吗?一项大规模研究, 2017.
总结
在本文中,您了解了基于生成合成图像的生成对抗网络模型评估技术。
具体来说,你学到了:
- 在训练GAN生成器模型时没有使用目标函数,这意味着必须根据生成的合成图像的质量来评估模型。
- 手动检查生成的图像是入门的好方法。
- 像Inception Score和Frechet Inception Distance这样的定量度量可以与定性评估相结合,以提供对GAN模型的稳健评估。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
您好!博客很棒,涵盖了很多内容。
我需要评估一个训练用于生成人脸的GAN的不同版本。鉴于Inception v3在训练时没有包含数据集中的人脸类别,我想Inception Score就不能用了,对吗?
FID怎么样?我想它可能比IS更适合这种情况,因为真实图像也是输入,但我不知道它是否足够可靠。您怎么看?
谢谢!
是的。
是的,FID可能是个不错的起点。
https://machinelearning.org.cn/how-to-implement-the-frechet-inception-distance-fid-from-scratch/
您好,感谢您的精彩教程。
我有一个问题。我刚开始接触GAN,之前我只做过监督学习ML/DL任务,比如分类或分割。在监督学习中,我们总是比较训练和验证数据上的损失值。
1)在GAN中这样做有意义吗?
假设我正在训练一个CycleGAN,我有生成器和判别器的损失。它们有一定的趋势。如果我在验证集(未见数据)上计算相同模型的损失——趋势略有不同。例如,判别器和生成器的训练损失都较低。
2)由此我能得出关于GAN性能的结论吗?
不,不太可能。
我使用的最可靠的方法是使用模型生成图像,然后选择生成最佳图像的模型。
评估GAN性能的有用指标?
是的,这是以上教程的主题。
如果无法选择,请考虑IS或FID。
你好,
感谢这篇非常有用的文章。
我正在处理表格形式的网络数据。我尝试使用经典的和条件GAN来生成类似的数据。目的是通过GAN生成的网络流量数据来对抗性地训练分类器,以最小化假阴性。我在每个epoch后评估生成器的性能。我的方法是生成大小为输入数据X的数据G。然后将G和X分成两半,将X/2和G/2组合起来分别构成训练集和测试集。然而,我在评估生成器性能时遇到困难,因为结果不令人鼓舞。请给我建议。
谢谢!
也许可以专注于生成图像并进行主观评估?这是一个很好的起点。
我在训练其他部分后,记录测试集(X/2 U G/2)上的最低准确率的权重。然后我使用这些权重生成数据添加到训练集中,以提高分类器性能。
(顺便说一句,抱歉又发了一帖)
准确率是GAN的一个糟糕的度量,请不要使用它。
您好。您会推荐哪种度量来评估Pix2Pix GAN?
好问题,我建议从这里开始。
https://machinelearning.org.cn/how-to-evaluate-generative-adversarial-networks/
这样说吧:IS和FID度量是否适用于评估Pix2Pix GAN,还是手动方法是更好的解决方案?
您必须选择与您项目目标一致的度量。我无法为您选择。
对于增强一维信号,您认为合适的度量是什么?
我不知道,我想这取决于您问题的具体情况。
太棒了。您的作品真是帮了我大忙。
谢谢,很高兴听到这个。
如何对不同的GAN定量评估指标进行比较?有没有什么方法可以将平均似然与FID和其他指标进行比较?
请参阅“延伸阅读”部分中的一些论文以进行比较。
您好!我正在使用GAN进行音频异常检测。那么哪种评估指标最好?
让我们这样想:从好结果与坏结果中能得到什么?我们如何将它们的差异转换为一个单一的标量值?
您好,感谢这篇精彩的文章。
我正在研究一种特定的皮肤病变分类,但缺乏此类标记数据,因此我想使用GAN生成合成图像来训练我的模型,但我担心这些生成的图像在医学上可能不正确。因为几乎所有著名的皮肤病变数据都由皮肤科医生和组织病理学家标记,那么我是否可以使用IS和FID来评估我的GAN,或者这对于我的项目来说不够?
我认为这是一个更好的问题,可以问领域专家。他们可能会给你一些关于如何做得更好的见解。
您好,您知道如何评估用于表格数据的GAN吗?我正在使用Vanilla GAN来对信用卡欺诈数据集中的少数类进行过采样。
你好Nicholas……有趣的问题,因为这不是典型的应用,但以下内容可能对您有帮助。
https://towardsdatascience.com/review-of-gans-for-tabular-data-a30a2199342
您好,感谢这篇精彩的文章。
对于增强一维数据,如具有向量输入的基因表达数据,您认为合适的度量是什么?
你好Bahar……你可能会发现以下内容很有趣。
https://machinelearning.org.cn/how-to-implement-the-frechet-inception-distance-fid-from-scratch/
谢谢你的回复。
FID不仅仅用于图像数据吗?
如果我使用Brisque分数来计算图像质量,GAN输出的哪个范围是合适的?前提是我使用的图像在11-15的范围内。
你好Kushagra……以下讨论可能有助于澄清。
https://www.researchgate.net/post/How_to_infer_the_magnitude_of_a_BRISQUE_or_NIQE_score
我想要mnist数据集的mnist分数(Inception score)的代码。
你好Noel……以下资源可能对您有帮助。
https://github.com/sundyCoder/IS_MS_SS