IS & FID

目录

用于统计评估生成样本质量的两个最常用且公认的度量标准:Inception(IS)和Fréchet Distance(FID)。

这两个指标的优点在于,它们已被广泛证实与至少某些期望性质(如图像的视觉吸引力或真实感受)高度相关。IS完全是基于“样本应该是可识别的”这一理念设计的,但也被证明与人类对真实图像构成的直觉有关,这一点已经过Amazon Mechanical的验证。

1. Inception Score(IS)

1.1 基本思想

基本思想:Inception Score使用图片类别分类器来评估生成图片的质量。其中使用的图片类别分类器为Inception Net-V3.这也是Inception Score名称的由来。

(Inception Net-V3是图片分类器,在ImageNet数据集上训练。ImageNet是由120多万张图片,1000个类别组成的数据库。Inception Net-V3可以对一幅图片输出一个1000分类的概率。)

清晰度:IS对于生成的图片x输入到Inception Net-V3中产生一个1000维的向量y。其中每一维代表数据某类的概率。对于清晰的图片来说,y的某一维应该接近1,其余接近0。即对类别y来说,P(y|x)的熵很小(概率比较确定)。

多样性:对于所有生成的图片,应该均匀分布在所有的类别中。比如共生成10000张图片,对于1000类别,每一类应该生成10张图片。即P(y)=\sum p(y|x^{(i)})的熵很大,则多样性越好,总体分布接近均匀分布(理想是均匀分布)。

评价一个生成模型的好坏,需要从两方面考量:

  • 生成的图像是否清晰,清晰度高的表示生成图像的质量高
  • 生成的图像是否具有多样性,即每个类别生成图像的数目尽可能相等。

1.2 Inception Score公式

IS是对图像清晰度和多样性的衡量,IS值越大越好。具体公式如下:

IS(G) = exp(E_x\sim_P_gD_K_L(p(y|x)||p(y)))

其中:

  • exp:为了形式更加好看
  • E_x\sim_P_g:遍历所有的生成样本,求平均值
  • D_K_L:KL散度,D_K_L(P||Q)用于衡量分布P和Q之间的近似程度
  • p(y|x):对于图片x,属于所有类别的概率分布。对于给定图片x,表示为一个1000维数向量。
  • p(y):边缘概率,具体实现为对所有的验证图片x,计算得到p(y|x),再求所有向量平均值。

我们希望生成的图片,足够清晰且生成类别多样,所有IS越大越好。并且对于Inception Net-V3由于是1000分类任务,故IS(G)有最大值:

IS(G) ≤ 1000

1.3 Inception Score的问题

(1)数据集问题

Inception Score是基于Inception Net-V3得出的,而Inception Net-V3是在ImageNet上1000分类任务。所以生成模型应该也是在ImageNet上训练,生成ImageNet相似图片。

比如说,使用Inception Net-V3来计算p(y|x)的熵,在ImageNet上计算结果为1.97bit。在CIFAR-10上计算结果是4.66bit,在随机噪声图片上计算结果是6.512bit。

可以看出真实的图片数据集CIFAR-10居然和随机噪声图片结果相近,这是不科学的。

总结:不能使用在一个数据集上训练分类模型,在另一个数据集上评估训练的生成模型。

(2)Inception Score敏感性问题

使用pytorch、tensorflow、keras等不同框架下的Inception Net权值,在同样的分类精度下,计算同一个数据集的IS。IS的差别很大,仅仅由于使用的框架不同,IS分值可以相差11.5%。

总结:神经网络中权值的细节改变可能很大的影响IS分数。

(3)Inception Score高的图片不一定真实

由于Inception Score是根据分类器进行给分,则可以根据分类器的结果来进行刷分。刷分的关键是全体图片的类别要全,其中具体的一幅图片,分类器计算出的熵要比较低。

比如现有数据集50000张,取第一张图片,使用Inception Net-V3计算分类概率,要使图片第1类概率达到最大。使用梯度下降,对图片进行更新,直到第一类概率极大。如此对第2张图片进行强调至符合第2类…遍历所有的图片之后,在1000类中,每一类有10张图片,但每张图片的分类概率都很明确。但这样生成的图片大概率是不真实的。

(4)Inception Score低的图片不一定差

如果给出一张真实的图片,但并不属于Inception Net-V3的1000分类中的任何一类。分类器无法判别,那么Inception Score分数不高,但图像是真实的。

(5)Inception Score的多样性检验有局限性

Inception Score检测生成图片是否多样,是根据生成的类别进行检验判断。如果模型输出图片,类别是平均分配的。但每一类中,图片都一样,也就是mode collapse。这种情况Inception Score是无法检测的。

(6)Inception Score不能反应过拟合

如果神经网络只是单纯地拷贝训练集的图片,那么Inception Score肯定是很高的,但是这样生成模型是没有意义的。

总结:Inception Score得分多余依赖分类器,是一种间接的对图片质量评估的方法,没有考虑真实数据与生成数据的具体差异。Inception Score是基于ImageNet得到的。在IS看来,凡是不像ImageNet的数据,都是不真实的。

2. Fréchet Distance(FID)

设计GAN的初衷是希望得到一个分布,使得该分布尽可能与真实分布靠近。但是IS只是考虑了生成图像的清晰度和多样性,完全忽略了真实数据的影响,再加上IS本身的缺点,显然不能胜任GAN评价指标的王者地位。

因此,FID应运而生。FID考虑的更多是生成的图像与真实图像之间的距离,距离越小越好,表明生成模型的效果越好,即图像的清晰度高,且多样性丰富。该算法也是通过Inception模型进行计算的。

不同的是,FID拿掉了Inception模型最后的一个用于分类的全连接层,将前面一层的2048维向量进行输出。在这里,Inception不再进行分类,而是进行特征提取,得到2048维向量,每一个维度都表示着某种特征。

取同样数目的生成图像和真实图像各N张,经过改造后的Inception网络,各自得到N*2048维的特征向量,然后用下面的公式计算两个N*2048维的特征向量之间的距离:

FID = || \mu _r -\mu_g||^2+T_r(\sum r + \sum g) -2(\sum r\sum g)^{1/2})

其中:

  • \mu _r:真实图片的特征均值
  • \mu _g:生成图片的特征均值
  • \sum r:真实图片的协方差矩阵
  • \sum g:生成图片的协方差矩阵
  • T_r:迹 

2.1 FID优点

  • 生成模型的训练集可以和Inception Net-V3不同
  • 刷分不会导致生成图片质量变差

2.2 FID缺点

  • FID是衡量多元正态分布直接按距离,但提取的图片特征不一定是符合多元正态分布的
  • 无法解决过拟合问题,如果生成模型只能生成核训练集一模一样的数据无法检测

参考:IS、FID、PPL,GAN网络评估指标 – 知乎

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2022年5月23日 下午1:59
下一篇 2022年5月23日

相关推荐