如何将GAN生成图像的IS和FID量化评估方法为一个?

摘要:生成模型产生的是高维的复杂结构数据,它们不同于判别模型,很难用简单的指标来评估模型的好坏。下面介绍两种当前比较流行的评估生成模型的指标(仅判别图像):IS(Inception Score)和FID(Frechet Inception Dis
生成模型产生的是高维的复杂结构数据,它们不同于判别模型,很难用简单的指标来评估模型的好坏。下面介绍两种当前比较流行的评估生成模型的指标(仅判别图像):IS(Inception Score)和FID(Frechet Inception Distance score)。 IS   IS基于Google的预训练网络Inception Net-V3。Inception Net-V3是精心设计的卷积网络模型,输入为图片张量,输出为1000维向量。输出向量的每个维度的值对应图片属于某类的概率,因此整个向量可以看做一个概率分布。下面讲解IS的思路和推导过程。 定义   IS考虑以下两个方面评估生成器的质量:   1、对于单一的生成图像,Inception输出的概率分布熵值应该尽量小。越小说明生成图像越有可能属于某个类别,图像质量高。   2、对于生成器生成的一批图像而言,Inception输出的平均概率分布熵值应该尽量大。也就是说,因为生成器应该保证生成图像的多样性,因此一批图像在Inception的输出应该尽量平均地“遍历”所有1000维标签。   1定义如下: \begin{equation} \begin{aligned} &E_{x\sim p_G}(H(p(y|x)))\\ =&\sum\limits_{x\in G}P(x)H(p(y|x))\\ =&\sum\limits_{x\in G}P(x)\sum\limits_{i=1}^{1000}P(y_i|x)\log \frac{1}{P(y_i|x)}\\ \end{aligned} \end{equation}   即先求批量输出分布的熵值再求熵的均值。其中$p(y|x)$表示Inception输入生成图像$x$时的输出分布,$P(x)$表示生成器$G$生成图像$x$的概率,$P(y_i|x)$表示Inception预测$x$为第$i$类的概率。   2定义如下: \begin{equation} \begin{aligned} &H(E_{x\sim p_G}(p(y|x)))\\ =&H\left(\sum\limits_{x\in G} P(x)P(y|x)\right)\\ =&H( p(y))\\ =&\sum\limits_{i=1}^{1000} P(y_i)\log \frac{1}{P(y_i)}\\ =&\sum\limits_{i=1}^{1000} \sum\limits_{x\in G}P(y_i,x)\log \frac{1}{P(y_i)}\\ =& \sum\limits_{x\in G}P(x)\sum\limits_{i=1}^{1000}P(y_i|x)\log \frac{1}{P(y_i)}\\ \end{aligned} \end{equation}   即先求批量输出分布的均值再求均值的熵。其中$p(y)$表示$G$生成的图片在Inception输出类别的平均分布,$P(y_i)$表示Inception判断$G$生成的图片属于$i$类的概率。   为了将1和2放在一起作为一个整体,取$(1)$式为负,这样这两个指标的目标就一致了,都是越大越好。然后将它们加起来,得到: \begin{equation} \begin{aligned} &\sum\limits_{x\in G}P(x)\sum\limits_{i=1}^{1000}P(y_i|x)\log \frac{P(y_i|x)}{P(y_i)}\\ =&E_{x\sim p_G}KL(p(y|x)||p(y)) \end{aligned} \end{equation}   其中$KL(p(y|x)||p(y))$是这两个分布的KL散度(相对熵)。最后再加上指数,得到最终的IS: \begin{equation} \begin{aligned} \text{IS}=\exp E_{x\sim p_G}KL(p(y|x)||p(y)) \end{aligned} \end{equation}   根据定义,IS值越大,生成图像的质量越高。
阅读全文