最近在用StyleGAN2-ada做毕设,发现里面的生成效果评估指标除了FID以外还计算了KID,网上目前还没有博客对KID进行详细的解释,就查了一些资料尝试解读一下。

KID来自于论文 《Demystifying MMD GANs》,是一种和FID十分相似的GAN生成质量度量指标,可以评估GAN的收敛程度。我们知道,FID指标假设图像的2048维Inception特征表示服从正态分布,通过衡量生成图像和真实图像之间特征表示的均值和协方差的差距,计算Fréchet距离(也称为Wasserstein-2距离)来度量生成图像质量,公式为

其中μrμg分别代表真实图像和生成图像的Inception特征表示的均值,Σr和Σg分别表示真实图像和生成图像的Inception特征表示的协方差矩阵。但我们知道ReLU之后的结果恒非负,因此正态分布假设其实是有问题的。此外,FID鲁棒性差,并且是有偏的,值得一提的是,作者在文中证明,在FID的计算方式下,不存在无偏(unbiased)的评估指标。

因此作者引入了KID,它不需要FID那样的正态分布假设,是一种无偏的估计。在引入其计算方式前,首先要了解一下最大平均差异MMD,maximum mean discrepancy)。

MMD是一种积分概率度量(integral probability metrics),即寻找在样本空间上的连续函数f,求不同分布的样本在f上的函数值的均值,通过把两个均值作差可以得到两个分布对应于f的mean discrepancy。那么MMD的目标就是寻找一个f使得这个mean discrepancy取得最大值。为了使其可计算,将f限制在再生希尔伯特空间RKHS(reproducing kernel Hilbert space)的单位球内,此时MMD具体公式如下:

P表示生成图像的分布,Q表示真实图像的分布。经过一系列推导(详见这里),最终得到一个平方MMD的表达式:

m是生成图像的样本量,n是真实图像的样本量,k就是kernel。

看到这里,KID就呼之欲出了。它就是在Inception特征表示空间的多项式核函数平方MMD,即在上面的平方MMD表达式中,每个x和y均是来自Inception网络的2048维向量,而,其中d=2048,也就是特征向量维度。

在此顺便附上StyleGAN2-ada中计算KID的源码:

    n = real_features.shape[1]m = min(min(real_features.shape[0], gen_features.shape[0]), max_subset_size)t = 0for _subset_idx in range(num_subsets):x = gen_features[np.random.choice(gen_features.shape[0], m, replace=False)]y = real_features[np.random.choice(real_features.shape[0], m, replace=False)]a = (x @ x.T / n + 1) ** 3 + (y @ y.T / n + 1) ** 3b = (x @ y.T / n + 1) ** 3t += (a.sum() - np.diag(a).sum()) / (m - 1) - b.sum() * 2 / mkid = t / num_subsets / m

可以看到它将所有数据分成几个subset来计算kid,a和b就是算的kernel,最终表达式即平方MMD,只不过是在各subsets上的平均值。

GAN的评价指标——KID解读(内含FID)相关推荐

  1. 【GAN优化】长文综述解读如何定量评价生成对抗网络(GAN)

    欢迎大家来到<GAN优化>专栏,这里将讨论GAN优化相关的内容,本次将和大家一起讨论GAN的评价指标. 作者&编辑 | 小米粥 编辑 | 言有三 在判别模型中,训练完成的模型要在测 ...

  2. gan怎么输入一维数据_GAN评价指标最全汇总

    本文首发于微信公众号:有三AI 作者:小米粥 最近一部分的内容将会比较容易,将和大家一起讨论GAN的评价指标.在判别模型中,训练完成的模型要在测试集上进行测试,然后使用一个可以量化的指标来表明模型训练 ...

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

    GAN网络评估指标:IS.FID.PPL 转自:IS.FID.PPL,GAN网络评估指标 另外关于GAN的评价指标,推荐李宏毅老师的视频:[機器學習2021]生成式對抗網路 (Generative A ...

  4. 生成对抗网络GAN论文总结+复现代码(已完成27篇,未完待续。。。)

    GAN论文学习心得 写在前面 (GAN)Generative Adversarial Networks (CGAN)Conditional Generative Adversarial Nets (D ...

  5. 史上最全GAN综述2020版:算法、理论及应用

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 转载自:机器之心 自从 2014 年 Ian GoodFellow 提出 GAN ...

  6. 「GAN优化」如何学会以正确的姿势定量评价你的GAN

    作者 | 小米粥 编辑 | 言有三 在机器学习中,训练完成的模型要在测试集上进行性能测试,然后使用一个可以量化的指标来表明模型训练的好坏,例如最简单的,使用分类准确率评价分类模型的性能,使用均方误差评 ...

  7. 不用卷积也能生成清晰图像,用两个Transformer构建一个GAN

    作者|Yifan Jiang等 来源|机器之心 attention is really becoming『all you need』. 最近,CV 研究者对 transformer 产生了极大的兴趣并 ...

  8. 从动力学角度看优化算法:GAN的第三个阶段

    作者丨苏剑林 单位丨追一科技 研究方向丨NLP,神经网络 个人主页丨kexue.fm 在对 GAN 的学习和思考过程中,我发现我不仅学习到了一种有效的生成模型,而且它全面地促进了我对各种模型各方面的理 ...

  9. 史上最全GAN综述2020版:算法、理论及应用(A Review on Generative Adversarial Networks: Algorithms, Theory, and Applic)

    ** ** 史上最全GAN综述2020版:算法.理论及应用** 论文地址:https://arxiv.org/pdf/2001.06937.pdf ** 摘要:生成对抗网络(GANs)是近年来的一个研 ...

  10. FW-GAN: Flow-navigated Warping GAN for Video Virtual Try-on翻译

    FW-GAN:用于虚拟视频试穿的流指导变换GAN 摘要: 在目前越来越受关注的基于图像的虚拟试衣系统之外,我们进一步开发了基于视频的虚拟试衣系统,它可以精确地精确地将衣服转移到人身上,并且能以任意姿势 ...

最新文章

  1. R语言使用pwr包的pwr.t2n.test函数对分组样本数不同的t检验进行效用分析(power analysis)的语法
  2. .Net Framework 4.5.1 安装时遇到严重错误 问题的解决方法
  3. c++ map是有序还是无序的_C++ STL中Map的按Key排序和按Value排序
  4. 安徽省智慧政务新模式及典型应用
  5. Fedora的systemctl命令详解 Fedora配置IP地址/DNS/Networking
  6. 视频分辨率和音频质量_高分辨率音频的声音是否比CD质量好?
  7. 用女朋友动态图做微信二维码,小白都会
  8. python字典长度可变吗_关于在Python3中:字典在迭代过程中,字典的长度是不允许改变的...
  9. Grinmw.py v0.1.1发布,支持Grin Wallet API V3和Grin Node API V2
  10. [二分图]luogu 1640 连续攻击游戏
  11. Dart云平台-DartPad
  12. 微软面试题:写程序找出二叉树的深度
  13. 14个阿里高管的研发管理实践和思考 | 凌云时刻
  14. ubuntu安装java虚拟机
  15. javascript随机密码生成
  16. 运维自动化之殇 | 高效运维最佳实践05
  17. 怎样快速将方形图片剪裁成椭圆形?分享大家一个小妙招
  18. 【计量经济学】SPSS——一元线性回归【方差分析、残差分析】
  19. 实现文件拷贝并获取拷贝进度
  20. STM32开发资料链接分享

热门文章

  1. 广州图书馆跳转中国知网教程
  2. mybatis mysql begin end_mybatis批量操作
  3. 反射和动态代理的区别
  4. wincc远程服务器配置,WINCC-OPC服务器配置
  5. 进不去系统rpc服务器不可用,rpc服务器不可用_详细解决方法,彻底修复
  6. js中的splice方法使用,删除数组中的最大最小值
  7. shell脚本实现彩色进度条
  8. git push reject : pre-receive hook declined
  9. 基因家族分析-蛋白互作网络分析
  10. Cannot access a disposed object. A common cause of this error is disposing a context that was resolv