前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生成专题2 | 图像生成评价指标FID

生成专题2 | 图像生成评价指标FID

作者头像
机器学习炼丹术
发布2022-03-15 12:25:24
2.3K0
发布2022-03-15 12:25:24
举报
  • 文章转自微信公众号:机器学习炼丹术
  • 作者:陈亦新(欢迎交流共同进步)
  • 2.1 感性理解
  • 2.2 代码实现

2.1 感性理解

FID是Fréchet Inception Distance。

FID依然是表示生成图像的多样性和质量,为什么FID越小,则图像多样性越好,质量越好。

FID的计算器中,我们也是用了inception network网络。inception netowrk其实就是特征提取的网络,最后一层输出图像的类别。不过我们会去除最后的全连接或者池化层,使得我们得到一个2048维度的特征

对于我们已经拥有的真实图片,所有真实图片的提取的向量是服从一个分布的;对于用GAN生成的图片对应的高位向量特征也是服从一个分布的。如果两个分布相同,那么意味着GAN生成图片的真实程度很高。

现在,我们如何计算两个分布的距离呢?因为这两个分布是多变量的,包含2048维度的特征,所以我们是计算两个多维变量分布之间的距离。可以使用Wasserstein距离或者Frechet距离。

假如一个随机变量服从高斯分布,那么这个分布可以用一个均值和方差来确定。那么两个分布只要均值和方差相同,那么两个分布则相同。我们可以利用均值和方差来计算两个单变量高斯分布之间的距离。这里是多维度的分布,我们可以使用协方差矩阵来衡量多个维度之间的相关性,所以使用均值和协方差矩阵来计算两个高维分布之间的距离。

我们下面公式计算FID:

FID(x,g)=||\mu_x-\mu_g||^2_2+Tr(\Sigma_x+\Sigma_g-2(\Sigma_x\Sigma_g)^{0.5})

公式中,Tr表示矩阵对角线上元素的综合,矩阵论中成为矩阵的迹。x和g表示真实的图片和生成的图片,\mu表示均值,\sigma是协方差矩阵。

较低的FID表示两个分布更为接近。

下面是使用Numpy实现FID的计算过程:

2.2 代码实现

代码语言:javascript
复制
# calculate frechet inception distance
def calculate_fid(act1, act2):
 # calculate mean and covariance statistics
 mu1, sigma1 = act1.mean(axis=0), cov(act1, rowvar=False)
 mu2, sigma2 = act2.mean(axis=0), cov(act2, rowvar=False)
 # calculate sum squared difference between means
 ssdiff = numpy.sum((mu1 - mu2)**2.0)
 # calculate sqrt of product between cov
 covmean = sqrtm(sigma1.dot(sigma2))
 # check and correct imaginary numbers from sqrt
 if iscomplexobj(covmean):
  covmean = covmean.real
 # calculate score
 fid = ssdiff + trace(sigma1 + sigma2 - 2.0 * covmean)
 return fid
  
# define two collections of activations
act1 = random(10*2048)
act1 = act1.reshape((10,2048))
act2 = random(10*2048)
act2 = act2.reshape((10,2048))
# fid between act1 and act1
fid = calculate_fid(act1, act1)
print('FID (same): %.3f' % fid)
# fid between act1 and act2
fid = calculate_fid(act1, act2)
print('FID (different): %.3f' % fid)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习炼丹术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.1 感性理解
  • 2.2 代码实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档