FID图像质量评估指标

FID(Fréchet Inception Distance)是一种衡量图像集相似度的指标,基于Inceptionv3模型的特征向量统计。较低的FID分数表示图像集更相似,常用于评估GAN生成的图像质量。代码示例展示了如何计算FID,同一组图像的FID分数为0,不同图像集的FID分数较高。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FID(Fréchet Inception Distance)

FID是从原始图像的计算机视觉特征的统计方面,来衡量两组图像的相似度,是计算真实图像和生成图像的特征向量之间距离的一种度量。
这种视觉特征是使用 Inception v3 图像分类模型提取特征并计算得到的。FID 在最佳情况下的得分为 0.0,表示两组图像相同。分数越低代表两组图像越相似,或者说二者的统计量越相似

FID 分数常被用于评估由生成对抗网络(GAN)生成的图像的质量,较低的分数与较高质量的图像有很高的相关性。

在 python 环境下实现 Frechet Inception 距离(FID)
首先,我们可以尝试用这个函数来计算一些人造特征向量的 Inception 分数。
act1 = random(20480)
act1 = act1.reshape((10, 2048))
act2 = random(20480)
act2 = act2.reshape((10, 2048))
然后,通过FID函数对人造向量进行对应匹配分数的计算。
完整示例
 

import numpy
from numpy import cov
from numpy import trace
from numpy import iscomplexobj
from numpy.random import random
from scipy.linalg import sqrtm

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

act1 = random(20480)
act1 = act1.reshape((10, 2048))
act2 = random(20480)
act2 = act2.reshape((10, 2048))
fid = calculate_fid(act1, act1)
print( 'FID (same): %.3f'% fid)
fid = calculate_fid(act1, act2)
print( 'FID (different): %.3f'% fid)

「mu_1」和「mu_2」指的是真实图像和生成图像的特征均值(例如,2,048 维的元素向量,其中每个元素都是在图像中观察到的平均特征)。

C_1 和 C_2 是真实图像的和生成图像的特征向量的协方差矩阵,通常被称为 sigma。

|| mu_1-mu_2 ||^2 代表两个平均向量差的平方和。Tr 指的是被称为「迹」的线性代数运算(即方阵主对角线上的元素之和)。

sqrt 是方阵的平方根,由两个协方差矩阵之间的乘积给出。

运行这段代码示例,首先会显示出激活函数值「act1」和它自己之间的 FID 分数,正如我们所预想的那样,该值为 0.0
(注:该分数的符号可以忽略)
同样,正如我们所预料的,两组随机激活函数值之间的距离是一个很大的数字,在本例中为 323.325。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值