FID(Frechet Inception Distance)分数是一种用于衡量生成模型与真实数据集之间相似性的指标,它是通过计算生成的样本与真实样本在Inception网络中特征表示上的差异程度来计算得出的。FID分数越低,表示生成的样本与真实样本之间的差异越小,生成模型的性能越好。
方案1
import torch
import torchvision
import torchvision.transforms as transforms
from pytorch_fid import fid_score
# 准备真实数据分布和生成模型的图像数据
real_images_folder = 'path_to_real_images'
# generated_images_folder = './FID_app3'
generated_images_folder = 'path_to_generated_images'
# 加载预训练的Inception-v3模型
inception_model = torchvision.models.inception_v3(pretrained=True)
# 定义图像变换
transform = transforms.Compose([
transforms.Resize(299),
transforms.CenterCrop(299),
transforms.ToTensor(),
transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5])
])
# 计算FID距离值
fid_value = fid_score.calculate_fid_given_paths([real_images_folder, generated_images_folder],
inception_model,
transform=transform)
# fid_value = fid_score.calculate_fid_given_paths([real_images_folder, generated_images_folder],batch_size=50, device='cuda', dims=2048, num_workers=0)
print('FID value:', fid_value)
还是要注意pytorch_fid 版本的问题。
方案2
运行脚本:
pip install pytorch-fid-0.3.0.tar.gz
python -m pytorch_fid path_to_dataset1 path_to_dataset2 --num-workers 0 --device cuda:0
这个亲测可用,要求:两个数据集中图像的shape一致。
3443

被折叠的 条评论
为什么被折叠?



