一、FID分数简介
FID全称为:Fréchet Inception Distance。
FID分数用于根据预训练网络提取的特征,测量真实图像分布和生成图像分布之间的距离。真实图像在空间中是服从一个分布的(假设为正态分布),而GAN生成的特征也是一个分布,GAN做的事情就是不断训练使这两个分布尽可能的相同。FID就是计算这两个分布直接的距离,使用的距离算法叫做Frechet distance。
FID计算两个分布之间的距离,距离越小代表生成的分布越贴近于真实分布,故FID越小越好。
二、FID分数 CUB定量实验步骤
2.1、下载FID计算代码
github下载:https://github.com/MinfengZhu/DM-GAN/tree/master/eval/FID
将其放入code目录中
2.2、下载FID预训练好的模型
谷歌云盘链接:https://drive.google.com/file/d/1747il5vnY2zNkmQ1x_8hySx537ZAJEtj
CSDN链接:FID训练好的模型 针对CUB-birds的FID预训练模型
下载后是一个npz文件,将其放入指定文件夹位置
2.3、修改代码
打开img_data.py,定位到43行左右,将path改为自己的netG所在的路径:
if __name__ == '__main__':
path = "/models/bird/netG.pth"
batch_size = 16
dataset = Dataset(path, transforms.Compose([
transforms.Resize(299),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
# transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
]))
2.4、输入终端命令
打开终端,输入命令为:python fid_score.py --gpu 0 --batch-size 24 --path1 eval/FID/bird_val.npz --path2 ../test/valid/single
其中后面的两个参数path1代表你放FID预训练的模型所在位置,path2代表你放生成的图片的位置。
运行后显示: