GAN网络评估指标:IS、FID、PPL

GAN网络评估指标:IS、FID、PPL

转自:IS、FID、PPL,GAN网络评估指标

另外关于GAN的评价指标,推荐李宏毅老师的视频:【機器學習2021】生成式對抗網路 (Generative Adversarial Network, GAN) (三) – 生成器效能評估與條件式生成

0 图形生成指标的要求

众所周知,评价生成模型最基本的要考虑以下两方面

  1. 生成的图片是否清晰
  2. 生成的图片是否多样?即使图片足够清晰,只能生成几种图片的网络(也就是mode collapse)肯定不是好的。

此外可能也要考虑以下几点

  • 生成的图片是否和训练数据图片过于相近?比如我设计一个网络,只是简单的拷贝训练数据图片,这样认为也是不好的。
  • 生成的图片是否可以平滑的变化?对于从噪声z得到的图片x,如果在z附近取值,应该也是得到近似变化的图片x。

1 Inception Score

1.1 Inception Score的基本思想

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

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

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

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

1.2 Inception Score的公式

直观感受,IS是对生成图片清晰度和多样性的衡量,IS值越大越好。具体公式如下
IS(G)=exp⁡⁡(Ex∼pgDKL(p(y∣x)∣∣p(y)))IS(G)=\exp⁡(\mathbb{E}_{x\sim p_g}D_{KL}(p(y|x)||p(y))) IS(G)=exp(ExpgDKL(p(yx)∣∣p(y)))
其中

  • exp⁡\expexp :为了形式更加好看
  • Ex∼pg\mathbb{E}_{x\sim p_g}Expg :遍历所有的生成样本,求平均值
  • DKLD_{KL}DKL :KL散度, DKL(P∣∣Q)D_{KL}(P||Q)DKL(P∣∣Q) 用于衡量分布 PPPQQQ 之间的近似程度
  • p(y∣x)p(y|x)p(yx) :对于图片 xxx,属于所有类别的概率分布。对于给定图片 xxx,表示为一个1000维数向量。
  • p(y)p(y)p(y) :边缘概率,具体实现为对于所有的验证图片 xxx,计算得到 p(y∣x)p(y|x)p(yx) ,再求所有向量平均值。

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

1.3 Inception Score的问题

(1)数据集问题

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

不能生成任意的图片,而直接套用Inception Net-V3。

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

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

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

(2)Inception Score敏感性问题

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

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

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

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

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

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

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

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

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

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

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

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

2 Fréchet Inception Distance

2.1 Fréchet Inception Distance的基本思想

基本思想:直接考虑生成数据和真实数据在feature层次的距离,不再额外的借助分类器。因此来衡量生成图片和真实图片的距离。

众所周知,预训练好的神经网络在高层可以提取图片的抽象特征。FID使用Inception Net-V3全连接前的2048维向量作为图片的feature。

2.2 Fréchet Inception Distance的公式

直观感受,**FID是反应生成图片和真实图片的距离,数据越小越好。**专业来说,FID是衡量两个多元正态分布的距离,其公式如下:
FID=∣∣μr−μg∣∣2+Tr(Σr+Σg−2(ΣrΣg)1/2)FID=||\mu_r−\mu_g||^2+Tr(\Sigma_r+\Sigma_g−2(\Sigma_r\Sigma_g)^{1/2}) FID=∣∣μrμg2+Tr(Σr+Σg2(ΣrΣg)1/2)
其中

  • μr\mu_rμr :真实图片的特征均值
  • μg\mu_gμg :生成图片的特征均值
  • Σr\Sigma_rΣr :真实图片的协方差矩阵
  • Σg\Sigma_gΣg :生成图片的协方差矩阵
  • TrTrTr :迹

2.3 Fréchet Inception Distance的优缺点

(1)Fréchet Inception Distance优点

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

(2)Fréchet Inception Distance的缺点

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

3 Perceptual Path Length

对生成图片除了要求清晰、多样之外。我们还希望生成模型可以结合不同的训练图片的特征。比如说我取一个人的发型,取另一个人的脸型,然后结合生成一张图片。

也就是生成器能否很好的把不同图片的特征分离出来,论文StyleGAN提出了Perceptual Path Length(PPL)用来评估这个指标。

如何理解生成器把不同图片的特征分离开呢?

首先回顾最初的GAN网络,给定隐空间中的噪声 z∈Zz\in ZzZ ,通过生成器,可以得到一副图 x=G(z)x=G(z)x=G(z) 。优秀的生成器,应该可以把 ZZZ 空间进行良好划分。

比如说对于生成人脸的生成器,对于任意的噪声向量 zzz 来说,我们希望第一个分量 z1z_1z1 控制人的头发,改变 z1z_1z1 的大小仅仅改变生成图片的头发,希望第二个分离 z2z_2z2 控制人的眉毛形状…那么这个生成器就把隐空间中不同的部分和不同的特征分离开了。

3.1 Perceptual Path Length基本思想

基本思想:给出两个随机噪声 z1,z2z_1,z_2z1,z2 ,为求得两点的感知路径长度PPL,采用微分的思想。把两噪声点插值路径细分成多个小段,求每个小段的长度,再求平均

3.2 Perceptual Path Length公式

直观来说,PPL评估利用生成器从一个图片变道另一个图片的距离,越小越好。公式如下
PPL=E[1ϵ2d(G(slerp(z1,z2;t)),G(slerp(z1,z2;t+ϵ)))]PPL=\mathbb{E}[\frac{1}{\epsilon^2}d(G(slerp(z_1,z_2;t)),G(slerp(z_1,z_2;t+ϵ)))] PPL=E[ϵ21d(G(slerp(z1,z2;t)),G(slerp(z1,z2;t+ϵ)))]
其中

  • ϵ\epsilonϵ :细分小段,用1e-4代替
  • d(⋅,⋅)d(⋅,⋅)d(,) :perceptual distance,使用预训练的VGG来衡量
  • GGG :图片生成器
  • slerpslerpslerp :spherical linear interpolation球面线性插值,一种插值方式
  • t∼U(0,1)t\sim U(0,1)tU(0,1) ,插值参数,服从均匀分布

3.3 理解Perceptual Path Length

具有良好perceptual变化的优秀的GAN网络应该什么样子的?

perceptual是比较抽象的人理解的概念,我们希望GAN网络可以让在欧几里得空间中相近的噪声点,得到的图片也是相近的。如下图

在这里插入图片描述

假设上图表示perceptual距离空间z1z_1z1 可以生成一张白色的狗, z2z_2z2 可以生成一张黑色的狗。那么我们在 z1z_1z1z2z_2z2 的欧式最短路径上,移动蓝色的点。在优秀的GAN网络中,得到的结果应该是perceptual距离也是最短的(也就是蓝色的线,最短距离)。

绿色的线是比较差的GAN网络,在从白狗向黑狗变化的过程中,变化perceptual过大,出现了卧室。

而PPL就是通过类似曲线积分的方法,计算出perceptual path的长度。比如下图,在两个不同的网络中。 PPL(t+ϵ1)<PPL(t+ϵ2)PPL(t+\epsilon_1)<PPL(t+\epsilon_2)PPL(t+ϵ1)<PPL(t+ϵ2) 。通过累加的方法逐步计算出绿线比蓝线长,那么得到了蓝线代表的GAN网络要比绿线代表的GAN网络要好。这里也就是说,以优化PPL为目标可以提升GAN网络的质量

在这里插入图片描述

t+ϵ1t+\epsilon_1t+ϵ1t+ϵ2t+\epsilon_2t+ϵ2 在欧式空间 ZZZ 中是向一个方向移动,但在perceptual距离空间下,不同的GAN网络可能会向不同的方向移动。)

参考资料

A Note on the Inception Score (arxiv.org)

Inception Score 的原理和局限性 - 知乎 (zhihu.com)

Fréchet Inception Distance (FID) - 知乎 (zhihu.com)

From GAN basic to StyleGAN2. This post describes GAN basic… | by Akihiro FUJII | Analytics Vidhya | Medium

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

降维后输入分类器分类时报错_逻辑回归解决多分类方法及其优缺点分析

众所周知&#xff0c;逻辑回归常用于解决二分类任务&#xff0c;但是在工作/学习/项目中&#xff0c;我们也经常要解决多分类问题。本文总结了 3 种逻辑回归解决多分类的方法&#xff0c;并分析了他们的优缺点。一、One-Vs-Rest假设我们要解决一个分类问题&#xff0c;该分类问…

PyTorch 的 Autograd

PyTorch 的 Autograd 转自&#xff1a;PyTorch 的 Autograd PyTorch 作为一个深度学习平台&#xff0c;在深度学习任务中比 NumPy 这个科学计算库强在哪里呢&#xff1f;我觉得一是 PyTorch 提供了自动求导机制&#xff0c;二是对 GPU 的支持。由此可见&#xff0c;自动求导 (a…

商场楼层导视牌图片_百宝图商场电子导视软件中预约产品功能简介

百宝图商场电子导视软件中预约产品功能简介 管理端&#xff0c;可配合百宝图商场电子导视软件配套使用 1&#xff1a;数据展示&#xff1a;图形展示总预约数/预约时间峰值/预约途径/各途径数量对比 2&#xff1a;数据统计&#xff1a;有效预约数量/无效预约数量/无效预约原因备…

Pytorch autograd.grad与autograd.backward详解

Pytorch autograd.grad与autograd.backward详解 引言 平时在写 Pytorch 训练脚本时&#xff0c;都是下面这种无脑按步骤走&#xff1a; outputs model(inputs) # 模型前向推理 optimizer.zero_grad() # 清除累积梯度 loss.backward() # 模型反向求导 optimizer.step()…

相对熵与交叉熵_熵、KL散度、交叉熵

公众号关注 “ML_NLP”设为 “星标”&#xff0c;重磅干货&#xff0c;第一时间送达&#xff01;机器学习算法与自然语言处理出品公众号原创专栏作者 思婕的便携席梦思单位 | 哈工大SCIR实验室KL散度 交叉熵 - 熵1. 熵(Entropy)抽象解释&#xff1a;熵用于计算一个随机变量的信…

动手实现一个带自动微分的深度学习框架

动手实现一个带自动微分的深度学习框架 转自&#xff1a;Automatic Differentiation Tutorial 参考代码&#xff1a;https://github.com/borgwang/tinynn-autograd (主要看 core/tensor.py 和 core/ops.py) 目录 简介自动求导设计自动求导实现一个例子总结参考资料 简介 梯度…

http 错误 404.0 - not found_电脑Regsvr32 用法和错误消息的说明

​ 对于那些可以自行注册的对象链接和嵌入 (OLE) 控件&#xff0c;例如动态链接库 (DLL) 文件或 ActiveX 控件 (OCX) 文件&#xff0c;您可以使用 Regsvr32 工具 (Regsvr32.exe) 来将它们注册和取消注册。Regsvr32.exe 的用法RegSvr32.exe 具有以下命令行选项&#xff1a; Regs…

MobileNet 系列:从V1到V3

MobileNet 系列&#xff1a;从V1到V3 转自&#xff1a;轻量级神经网络“巡礼”&#xff08;二&#xff09;—— MobileNet&#xff0c;从V1到V3 自从2017年由谷歌公司提出&#xff0c;MobileNet可谓是轻量级网络中的Inception&#xff0c;经历了一代又一代的更新。成为了学习轻…

mysql 高级知识点_这是我见过最全的《MySQL笔记》,涵盖MySQL所有高级知识点!...

作为运维和编程人员&#xff0c;对MySQL一定不会陌生&#xff0c;尤其是互联网行业&#xff0c;对MySQL的使用是比较多的。MySQL 作为主流的数据库&#xff0c;是各大厂面试官百问不厌的知识点&#xff0c;但是需要了解到什么程度呢&#xff1f;仅仅停留在 建库、创表、增删查改…

teechart mysql_TeeChart 的应用

TeeChart 是一个很棒的绘图控件&#xff0c;不过由于里面没有注释&#xff0c;网上相关的资料也很少&#xff0c;所以在应用的时候只能是一点点的试。为了防止以后用到的时候忘记&#xff0c;我就把自己用到的东西都记录下来&#xff0c;以便以后使用的时候查询。1、进制缩放图…

NLP新宠——浅谈Prompt的前世今生

NLP新宠——浅谈Prompt的前世今生 转自&#xff1a;NLP新宠——浅谈Prompt的前世今生 作者&#xff1a;闵映乾&#xff0c;中国人民大学信息学院硕士&#xff0c;目前研究方向为自然语言处理。 《Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in…

requestfacade 这个是什么类?_Java 的大 Class 到底是什么?

作者在之前工作中&#xff0c;面试过很多求职者&#xff0c;发现有很多面试者对Java的 Class 搞不明白&#xff0c;理解的不到位&#xff0c;一知半解&#xff0c;一到用的时候&#xff0c;就不太会用。想写一篇关于Java Class 的文章&#xff0c;没有那么多专业名词&#xff0…

初学机器学习:直观解读KL散度的数学概念

初学机器学习&#xff1a;直观解读KL散度的数学概念 转自&#xff1a;初学机器学习&#xff1a;直观解读KL散度的数学概念 译自&#xff1a;https://towardsdatascience.com/light-on-math-machine-learning-intuitive-guide-to-understanding-kl-divergence-2b382ca2b2a8 解读…

MySQL应用安装_mysql安装和应用

1.下载mysql安装包2.安装mysql&#xff0c;自定义->修改路径3.配置mysql&#xff0c;选择自定义->server模式->500访问量->勾选控制台->设置gbk->设置密码和允许root用户远程登录等等。以管理员权限&#xff0c;在控制台输入&#xff1a;net start MySQL, 启…

mysql 商品规格表_商品规格分析

产品表每次更新商品都会变动的&#xff0c;ID不能用&#xff0c;可是购物车还是用了&#xff0c;这就导致每次保存商品&#xff0c;哪怕什么都没有改动&#xff0c;也会导致用户的购物车失效。~~~其实可以考虑不是每次更新商品就除所有的SKU&#xff0c;毕竟有时什么都没修改呢…

huggingface NLP工具包教程1:Transformers模型

huggingface NLP工具包教程1&#xff1a;Transformers模型 原文&#xff1a;TRANSFORMER MODELS 本课程会通过 Hugging Face 生态系统中的一些工具包&#xff0c;包括 Transformers&#xff0c; Datasets&#xff0c; Tokenizers&#xff0c; Accelerate 和 Hugging Face Hub。…

隐马尔可夫模型HMM推导

隐马尔可夫模型HMM推导 机器学习-白板推导系列(十四)-隐马尔可夫模型HMM&#xff08;Hidden Markov Model&#xff09; 课程笔记 背景介绍 介绍一下频率派和贝叶斯派两大流派发展出的建模方式。 频率派 频率派逐渐发展成了统计机器学习&#xff0c;该流派通常将任务建模为一…

使用randomaccessfile类将一个文本文件中的内容逆序输出_Java 中比较常用的知识点:I/O 总结...

Java中I/O操作主要是指使用Java进行输入&#xff0c;输出操作. Java所有的I/O机制都是基于数据流进行输入输出&#xff0c;这些数据流表示了字符或者字节数据的流动序列。数据流是一串连续不断的数据的集合&#xff0c;就象水管里的水流&#xff0c;在水管的一端一点一点地供水…

huggingface NLP工具包教程2:使用Transformers

huggingface NLP工具包教程2&#xff1a;使用Transformers 引言 Transformer 模型通常非常大&#xff0c;由于有数百万到数百亿个参数&#xff0c;训练和部署这些模型是一项复杂的任务。此外&#xff0c;由于几乎每天都有新模型发布&#xff0c;而且每个模型都有自己的实现&a…

mysql精讲_Mysql 索引精讲

开门见山&#xff0c;直接上图&#xff0c;下面的思维导图即是现在要讲的内容&#xff0c;可以先有个印象&#xff5e;常见索引类型(实现层面)索引种类(应用层面)聚簇索引与非聚簇索引覆盖索引最佳索引使用策略1.常见索引类型(实现层面)首先不谈Mysql怎么实现索引的,先马后炮一…