Table of Contents
1 Inception Score (IS)
参考
[1] Improved Techniques for Training GANs
[2] A Note on the Inception Score
[3] https://zhuanlan.zhihu.com/p/432965561?utm_id=0
基本思想
IS是将生成的图片,通过图片分类器Inception Net-V3来进行评估图像质量,从而得到的一个值,这也是Inception Score的名字来源。Inception Net-V3是通过ImageNet训练得到的模型,故IS有最大值1000。公式如下:
I
S
(
G
)
=
e
x
p
(
E
x
∼
p
g
D
K
L
(
p
(
y
∣
x
)
∣
∣
p
^
(
y
)
)
)
IS(G) = exp(E_{x\sim p_g}D_{KL}(p(y|x)||\hat p(y)))
IS(G)=exp(Ex∼pgDKL(p(y∣x)∣∣p^(y)))
其中
- exp : 形式更好看
- E x ∼ p g E_{x\sim p_g} Ex∼pg : 遍历所有生成的样本,p_g表示生成样本的概率分布
- D K L D_{KL} DKL : KL散度,衡量两个分布的差异程度
- p ( y ∣ x ) p(y|x) p(y∣x) : 表示对于图像x,他属于所有类别的概率分布。其中x是生成的图片,这是一个1000维的向量。
- p ^ ( y ) \hat p(y) p^(y) :表示所有生成的图片x,计算得到p(y|x),再求所有向量的平均值,最后也是一个1000维向量,相当于每个类别的占比。
解析
生成模型最基本应该考虑清晰度以及多样性,IS指标也是对生成图片的清晰度和多样性的衡量,IS值越大越好。
- p ( y ∣ x ) p(y|x) p(y∣x) : 如果此概率分布越尖锐(熵越低),说明生成图像x属于某一个类别的概率越大,表明它生成的图片应该是越清晰的(暂且不说准确与否…)
- p ^ ( y ) \hat p(y) p^(y) : 如果此概率越接近于均匀分布,说明每一个类别生成的图像数量相当,雨露均沾,说明生成模型的多样性也很不错。
问题
(1) 数据集
IS基于的Inception Net-V3是在ImageNet上训练的1000类分类任务,所以生成模型也应在ImageNet上训练。如果是其他数据集上训练的生成模型,将生成的图片丢进分类器里,得到的效果并不好。
比如说,使用Inception Net-V3来计算 p ( y ∣ x ) p(y|x) p(y∣x)的熵,在ImageNet上计算结果为1.97bit,在CIFAR-10上计算结果是4.664bit,在随机噪声图片上计算结果是6.512bit。随机噪声反而和CIFAR-10数据集得到的熵更相近,这是不合理的,说明它只在ImageNet数据集上表现的好
所以这是一个使用IS要注意的点:必须是在ImageNet上训练的生成模型,其他数据集打灭。
(2)敏感性
不同的深度学习框架下的Inception Net的权值,尽管对同一个数据集有差不多的分类精度,但是在同一个数据集下IS却相差很大。
所以说明不是IS越大模型越好,也有可能是对模型的权值太敏感了,其实生成的图像都差不多…
(3)IS分数并不是越高说明生成的图片越好(过拟合,生成的图片不真实),也不是越低说明生成的图片越差(生成的图片真实但不属于ImageNet1000类中的一个)。IS并不能反映过拟合现象,IS分高可能是过拟合的原因。
这也是使用IS要注意的点:切不可使用IS作为优化的一个指标(有实验证明如果优化IS其实很烂)
2 Fréchet Inception Distance (FID)
参考
[1] https://zhuanlan.zhihu.com/p/432965561?utm_id=0
[2] https://www.bilibili.com/video/BV1zr4y1X78p/?spm_id_from=333.788&vd_source=9e9b4b6471a6e98c3e756ce7f41eb134
基本思想
FID同样也是通过将生成的图片通过Inception Net-V3来评估图像质量,只不过它的输出不是最后的1000维向量,而是2048维特征,通过特征来评估生成图像质量的好坏(如果质量好的话,生成图像的特征的概率分布应该近似于真实样本的特征的概率分布)。公式如下
F
I
D
=
∣
∣
μ
r
−
μ
g
∣
∣
2
+
T
r
(
Σ
r
+
Σ
g
−
2
Σ
r
Σ
g
)
FID=||\mu_r-\mu_g||^2+Tr(\Sigma_r+\Sigma_g-2\sqrt{\Sigma_r \Sigma_g})
FID=∣∣μr−μg∣∣2+Tr(Σr+Σg−2ΣrΣg)
其中
- μ \mu μ: 特征的均值
- Σ \Sigma Σ : 特征的协方差矩阵
- Tr : 迹(既矩阵的对角线之和)
FID默认数据遵循多元高斯分布(虽然并不是)。且如果生成样本和真实样本一致,那么 μ \mu μ和 Σ \Sigma Σ会完全一致,所以FID=0,所以FID是越小越好的。
论文中的实验
这是人脸生成任务上的消融实验,可以看到对于FID评估指标,不真实的生成图像确实会导致更高的FID(包括最后一行的在生成图像中插入随机的ImageNet中的图像)。
但是论文作者在这里也犯了一个错误:IS只适用于ImageNet上训练得到的生成模型!!
FID优缺点
(1)优点
- 生成模型的训练集可以不是ImageNet,由上面的实验可知只要是训练样本和真实数据样本是一致的就可以
- 刷分并不会导致生成图像质量更差(FID越低只会表示生成图像质量更好,因为他是在特征层面的,不像IS)
(2)缺点
- FID默认遵循多元正态分布,但提取的图像特征不一定符合
- 无法解决过拟合问题,也可能会生成和训练集一毛一样的数据。