转载 https://www.jiqizhixin.com/articles/2019-01-10-18    全面解析Inception Score原理及其局限性

https://blog.csdn.net/qq_27261889/article/details/86483505

https://blog.csdn.net/qq_35586657/article/details/98478508 GAN的多种评价指标

很多关于 GAN 生成图片的论文中,作者评价其模型表现的一项重要指标是 Inception Score(下文简称 IS)。其名字中 Inception 来源于 Google 的 Inception Net,因为计算这个 score 需要用到 Inception Net-V3(第三个版本的 Inception Net)。

Inception Net 是图片分类网络,在 ImageNet 数据库上训练,ImageNet 数据库共有 1.2M 个 RGB 图片,分为 1000 类。Inception Score 只是把 Inception Net-V3 作为一个工具,理解 Inception Score 不需要知道 Inception Net-V3 的细节,各种深度学习框架中都已经包含了预训练好的 Inception Net-V3 了,直接拿来用就好了。

基本原理

评价一个生成模型,我们需要考验它两方面性能:

1. 生成的图片是否清晰;

2. 生成的图片是否多样。

生成的图片不够清晰,说明生成模型表现欠佳;生成的图片够清晰了,我们还要看是不是能生成足够多样的图片,有些生成模型只能生成有限的几种清晰图片,陷入了所谓 mode collapse,也不是好的模型。

Inception Score 是这样考虑这两个方面的:

1. 清晰度:把生成的图片 x 输入 Inception V3 中,将输出 1000 维的向量 y ,向量的每个维度的值对应图片属于某类的概率。对于一个清晰的图片,它属于某一类的概率应该非常大,而属于其它类的概率应该很小(这个假设本身是有问题的,有可能有些图片很清晰,但是具体属于哪个类却是模棱两可的)。用专业术语说, p(y|x) 的熵应该很小(熵代表混乱度,均匀分布的混乱度最大,熵最大)。

2. 多样性:如果一个模型能生成足够多样的图片,那么它生成的图片在各个类别中的分布应该是平均的,假设生成了 10000 张图片,那么最理想的情况是,1000 类中每类生成了 10 张。转换成术语,就是生成图片在所有类别概率的边缘分布 p(y) 熵很大(均匀分布)。

具体计算时,可以先用生成器生成 N 张图片,然后用公式 (1) 的经验分布来代替:

综合上面两方面,Inception Score 的公式为:

exp:仅仅是为了好看,没有具体含义。

x~Pg :表示从生成器中生图片。

p(y|x) :把生成的图片 x 输入到 Inception V3,得到一个 1000 维的向量 y ,也就是该图片属于各个类别的概率分布。IS 提出者的假设是,对于清晰的生成图片,这个向量的某个维度值格外大,而其余的维度值格外小(也就是概率密度图十分尖)。

p(y) :N 个生成的图片(N 通常取 5000),每个生成图片都输入到 Inception V3 中,各自得到一个自己的概率分布向量,把这些向量求一个平均,得到生成器生成的图片全体在所有类别上的边缘分布,见公式 (1)。

:对 p(y|x) 和 p(y) 求 KL 散度。KL 散度离散形式的公式如下:

KL 散度用以衡量两个概率分布的距离,它是非负的,值越大说明这两个概率分布越不像。但这个距离不是对称的,观察公式, P(i) 很大 Q(i) 很小的地方对 KL 距离贡献很大,而 P(i) 很小 Q(i) 很大的地方对 KL 距离的贡献很小。

我们预期的某个维度值很大,而 p(y) 总体均匀,因此需要把放在公式 (2) 中双竖线的前面。放到后面可能会造成的极端值被忽略,而正是这个极端值的存在告诉了我们这个生成的图片是否清晰。

综合起来,只要 p(y|x) 和 p(y) 的距离足够大,就能证明这个生成模型足够好。因为前者是一个很尖锐的分布,后者是一个均匀分布,这俩距离本就应该很大。

公式 (2) 很不直观,在实际操作中可以改成如下形式:

实际操作中,先用生成的大量样本代入公式 (1),求出,然后再对每个样本求出,计算它和的 KL 散度,最后求平均,再算一下指数即可。

Inception Score 的 pytorch 版本代码可以参考下面的链接,十分清晰易懂:

https://github.com/sbarratt/inception-score-pytorch

局限性
虽然IS是GAN中使用最多的一种评价标准,但是这个计算方法本身就存在一些问题。

Inception Score 对神经网络内部权重十分敏感。不同框架预训练的网络达到同样的分类精度,但由于其内部权重微小的不同,导致了 Inception Score 很大的变化,在 ImageNet 上,Inception V3 Torch 和 Inception V3 Keras 算出的 IS 相差 3.5%;
通常计算 Inception Score 时,会生成 50000 个图片,然后把它分成 10 份,每份 5000 个,分别代入公式 (2) 计算 10 次 Inception Score,再计算均值和方差,作为最终的衡量指标(均值±方差)。但是 5000 个样本往往不足以得到准确的边缘分布p(y),尤其是像 ImageNet 这种包含 1000 个类的数据集;
如果某一个物体的类别本身就比较模糊,在几种类别会得到相近的分数,或者这个物体类别在ImageNet中不存在,那么p(y|x)的概率密度就不再是一个尖锐的分布;如果生成模型在每类上都生成了 50 个图片,那么生成的图片的类别边缘分布是严格均匀分布的,按照 Inception Score 的假设,这种模型不存在 mode collapse,但是,如果各类中的50个图片,都是一模一样的,仍然是 mode collapse。Inception Score 无法检测这种情况。
不能判别出网络是否过拟合。如果神经网络记住了所有的训练集图片,然后随机输出,那么它会得到一个很高的 Inception Score,但这明显不是我们希望的。

原文链接:https://blog.csdn.net/qq_35586657/article/details/98478508

总结

Inception Score作为论文中最常出现的评价标准,在一定程度上可以反映出生成图片的质量以及多样性,但也存在一些问题:数值受样本选取的干扰较大,不适合在内部差异较大的数据集上使用,分类模型和生成模型应该在同一个数据集上训练,无法区分过拟合等等。

Inception Score的更多相关文章

  1. GAN量化评估方法——IS(Inception Score)和FID(Frechet Inception Distance score)

    生成模型产生的是高维的复杂结构数据,它们不同于判别模型,很难用简单的指标来评估模型的好坏.下面介绍两种当前比较流行的评估生成模型的指标(仅判别图像):IS(Inception Score)和FID(F ...

  2. GAN评价指标之mode score

    通过 Inception Score 的公式我们知道,它并没有利用到真实数据集的信息,所有的计算都在生成的图片上计算获得.而 Mode Score 基于此做了改进: 也就是说,想要提高 Mode Sc ...

  3. Generative Adversarial Nets[EBGAN]

    0. 背景 Junbo Zhao等人提出的"基于能量的GAN"网络,其将判别器视为一个能量函数而不需要明显的概率解释,该函数可以是一个可训练的损失函数.能量函数是将靠近真实数据流形 ...

  4. Generative Adversarial Nets[pix2pix]

    本文来自<Image-to-Image Translation with Conditional Adversarial Networks>,是Phillip Isola与朱俊彦等人的作品 ...

  5. (转)GANs and Divergence Minimization

    GANs and Divergence Minimization 2018-12-22 09:38:27     This blog is copied from: https://colinraff ...

  6. 强化学习论文(Scalable agent alignment via reward modeling: a research direction)

     原文地址: https://arxiv.org/pdf/1811.07871.pdf ======================================================== ...

  7. LARGE SCALE GAN TRAINING FOR HIGH FIDELITY NATURAL IMAGE SYNTHESIS

    最强GAN图像生成器,真假难辨 论文地址: https://openreview.net/pdf?id=B1xsqj09Fm 更多样本地址: https://drive.google.com/driv ...

  8. Texygen文本生成,交大计算机系14级的朱耀明

    文本生成哪家强?上交大提出基准测试新平台 Texygen 2018-02-12 13:11测评 新智元报道 来源:arxiv 编译:Marvin [新智元导读]上海交通大学.伦敦大学学院朱耀明, 卢思 ...

  9. 《StackGAN: Text to Photo-realistic Image Synthesis with Stacked GAN》论文笔记

    出处:arxiv 2016 尚未出版 Motivation 根据文字描述来合成相片级真实感的图片是一项极具挑战性的任务.现有的生成手段,往往只能合成大体的目标,而丢失了生动的细节信息.StackGAN ...

随机推荐

  1. 吴裕雄--天生自然HADOOP操作实验学习笔记:qq好友推荐算法

    实验目的 初步认识图计算的知识点 复习mapreduce的知识点,复习自定义排序分组的方法 学会设计mapreduce程序解决实际问题 实验原理 QQ好友推荐算法是所有推荐算法中思路最简单的,我们利用 ...

  2. Ubuntu 安装MySQL并打开远程连接

    首先使用su命令切换到root账户 在用apt-get install mysql-server命令获取到MySQL的服务 等待下载安装,按照提示输入MySQL的密码 安装完成后对mysqld.cnf ...

  3. 【剑指Offer面试编程题】题目1366:栈的压入、弹出序列--九度OJ

    题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈 ...

  4. Android中的Sqlite中的onCreate方法和onUpgrade方法的执行时机--(转)

    原文:http://blog.csdn.net/jiangwei0910410003/article/details/46536329 今天在做数据库升级的时候,遇到一个问题,就是onCreate方法 ...

  5. PyQt5点击菜单栏弹出新窗口,解决新窗口闪退的实现方法

    实现的功能为:当点击菜单中某个菜单时,会弹出一个新窗口,下面就列出部分代码 def mail_setting(self): log.debug("open mail settings&quo ...

  6. 机器学习、深度学习中的信息熵、相对熵(KL散度)、交叉熵、条件熵

    信息熵 信息量和信息熵的概念最早是出现在通信理论中的,其概念最早是由信息论鼻祖香农在其经典著作<A Mathematical Theory of Communication>中提出的.如今 ...

  7. java多线程知识回顾(笔记)

    线程创建的方式 有两种 第一种是继承Thread类 重写run方法 (个人偏向这一种实际中这种用的较多) 例如 public class MyThead extends Thread { int j= ...

  8. PostGIS官方教程汇总目录

    一.PostGIS介绍 二.PostGIS安装 三.创建空间数据库 四.加载空间数据 五.数据 六.简单的SQL语句 七.几何图形(Geometry) 八.关于几何图形的练习 九.空间关系 十.空间连 ...

  9. No 'Access-Control-Allow-Origin'跨域问题- (mysql-thinkphp) (6)

    因为ajax请求一个服务的时候,服务器端,比如thinkphp端,或者java框架,它会检测,你请求时候的域名,就是http请求的时候,request header不是会把客户端的Request UR ...

  10. Oracle错误览表

    Oracle 错误总结及问题解决 ORA     本文转自:https://www.cnblogs.com/zhangwei595806165/p/4972016.html  作者@承影剑 ORA-0 ...