项目介绍:pytorch-fid
pytorch-fid
是一个用于 PyTorch 的 Fréchet Inception Distance (FID) 的实现,它是原始 FID 实现的 PyTorch 移植版本。FID 是用于量化图像数据集之间相似度的指标,常用于评估生成对抗网络(GANs)的样本质量。此指标通过计算 Inception 网络特征表示中的两个高斯分布之间的 Fréchet 距离来实现。
FID 的背景
FID 分数反映了两个图像数据集在视觉质量上的相似度,它被证明与人类的视觉判断有较好的相关性,因此广泛用于衡量 GANs 模型生成图像的质量。原始的 FID 是在 TensorFlow 上实现的,而 pytorch-fid
保持了与原版一致的模型和权重设置,确保其计算结果非常接近官方实现。然而,由于在图像插值方法和库后端上的差异,计算结果可能会略有不同。
安装说明
要使用 pytorch-fid
,可以通过 pip 进行安装:
pip install pytorch-fid
项目要求安装以下依赖环境:
- python3
- pytorch
- torchvision
- pillow
- numpy
- scipy
使用方法
要计算两个数据集之间的 FID 分数,需要确保每个数据集的图像都存放在各自的文件夹中。使用以下命令即可进行计算:
python -m pytorch_fid path/to/dataset1 path/to/dataset2
如果想要在 GPU 上运行评估,可以使用 --device cuda:N
选项,其中 N 是指定要使用的 GPU 的索引。
使用不同的层提取特征
不同于官方实现,pytorch-fid
支持使用 Inception 网络中的不同特征层进行计算。通过降低特征维度,这对较小的数据集(少于 2048 张图像)进行比较可能更为合适。要注意更换特征层后,FID 的数值大小会发生变化,无法与使用另一维度计算的分数进行比较。可以用 --dims N
指定特征的维度,选项包括:
- 64: 第一层最大池化特征
- 192: 第二层最大池化特征
- 768: 辅助分类器之前的特征
- 2048: 最终平均池化特征(默认值)
生成兼容的 .npz
存档文件
在多模型比较中,反复评估原始数据集,可能会消耗大量时间。pytorch-fid
提供生成 .npz
存档文件的功能,这样可以在未来的比较中简化操作。
使用方式如下:
python -m pytorch_fid --save-stats path/to/dataset path/to/outputfile
生成的文件可以替代原始数据集路径,用于后续的 FID 分数比较。
参考文献与许可
如果在研究中使用了此项目,请考虑在论文中引用:
@misc{Seitzer2020FID,
author={Maximilian Seitzer},
title={{pytorch-fid: FID Score for PyTorch}},
month={August},
year={2020},
note={Version 0.3.0},
}
该实现使用 Apache License 2.0 授权发布。FID 最初由 Martin Heusel 等人在《GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium》中引入。原始实现由约翰内斯·开姆·林茨的生物信息学研究所提供,同样使用 Apache License 2.0 授权。