使用pytorch-fid计算5000张图像数据集FID时遇运行时错误求助
使用pytorch-fid计算FID值的问题排查与解决
我正尝试使用pytorch-fid计算两个数据集的FID值,过程中遇到了一些问题,具体如下:
尝试1
- 初始数据集:每个数据集包含2800张512×512的图像,其中生成图像为PNG格式,真实图像为JPG格式
- 格式转换:使用基于ImageMagick的bash脚本将生成图像批量转为JPG:
for file in *.png do convert "$file" "$(basename "$file" .png).jpg" done
- 结果:成功计算出FID值为143.6,该数值表现较差
尝试2
- 调整方案:认为增加图像数量可能降低FID值,改用每个数据集含5000张图像的规模;因上述bash脚本运行速度慢,改用Python脚本处理格式
- 错误脚本(仅修改文件扩展名,未真正转换格式):
import os directory = <PATH TO MY DIRECTORY> files = os.listdir(directory) # Then you rename the files for file_name in files: # You give the full path of the file old_name = os.path.join(directory, file_name) # You CHANGE the extension new_name = old_name.replace('.jpg', '.png') os.rename(old_name, new_name)
- 报错:运行失败,出现错误:
RuntimeError: Trying to resize storage that is not resizable
尝试3
- 修正操作:将生成图像文件夹中的文件扩展名改回PNG,使用Pillow脚本真正转换图像格式为JPG,此时两个数据集均为5000张512×512的JPG图像
- 转换脚本:
from PIL import Image import os path = <PATH TO MY DIRECTORY> files=os.listdir(path) for file in files: if file.endswith(".png"): img = Image.open(path+file) #print(img) file_name, file_ext = os.path.splitext(file) img.save('<PATH TO OUTPUT DIRECTORY>{}.jpg'.format(file_name))
- 问题:仍出现相同的
RuntimeError: Trying to resize storage that is not resizable错误
请问问题出在哪里?是Pillow的JPG转换存在问题吗?是否应该换回ImageMagick?恳请帮助!
补充说明
- 后续发现低级错误:忽略了部分真实图像并非512×512的情况,修正后成功得到FID值131.02,该数值仍有待优化
- 优化措施:采用多进程后,图像转换速度大幅提升
内容的提问来源于stack exchange,提问作者shrujaya23
相关产品推荐
相关产品推荐

