GAN评价指标代码(FID、LPIPS、MS-SSIM
写在前面
科研需要,对GAN生成的图片要做定量评价,因此总结一些自己要用到的一些评价指标。
FID
官方链接:https://github.com/mseitzer/pytorch-fid
描述:FID越小,表示生成图片越多样、质量越好。
步骤:
(1)先下载pytorch-fid
pip install pytorch-fid
(2)执行命令
python -m pytorch_fid path/dataset1/test/images path/dataset2/test/images
参数:
path/dataset1/test/images
是真实图像路径
path/dataset2/test/images
是生成图像路径
注意:
有个额外的参数
--dims N
,其中 N 是特征的维度,一共有64、192、768、2048(默认)这四种,表示的是使用Inception的哪一层去测试,一般默认都是2048即最终平均池化特征去测试。
但是官方说如果测试的样本少于2048个可以用–dims这个参数,但这会改变FID分数的大小,因此只有–dims相同时跑出来的分数才有可比性。
不过我看TensorFlow那边的FID说,建议使用10,000的最小样本量来计算 FID,否则会低估生成器的真实FID。所以如果样本量太少建议不使用FID这个指标。
LPIPS
官方链接:https://github.com/richzhang/PerceptualSimilarity
描述:LPIPS越高意味着图片与原图更多不同,越低意味着与原图更相似
步骤:
(1)下载LPIPS代码
(2)执行命令
python lpips_2dirs.py -d0 imgs/ex_dir0 -d1 imgs/ex_dir1 -o imgs/example_dists.txt --use_gpu
参数:
-d0
是真实图像路径
-d1
是生成图像路径
-o
是输出的结果保存位置
MS-SSIM
链接:https://blog.csdn.net/m0_63642362/article/details/123297405
描述:接近1的值表示更好的图像质量,接近0的值表示较差的质量
代码
把生成图片放在
imgs/fake_img
路径下,把真实图片放在
imgs/real_img
路径下,然后运行即可
import os
import cv2
import paddle
from paddle_msssim import ssim, ms_ssim
deffile_name(file_dir):
img_path_list =[]for root, dirs, files in os.walk(file_dir):forfilein files:
img_path_list.append((os.path.join(root,file),file))return img_path_list
defimread(img_path):
img = cv2.imread(img_path)return paddle.to_tensor(img.transpose(2,0,1)[None,...], dtype=paddle.float32)if __name__ =='__main__':
file_dir ='imgs/fake_img'# 伪造图像路径
target_dir ='imgs/real_img'# 真实图像路径
img_path_list = file_name(file_dir)
target_path_list = file_name(target_dir)
d =0for i inrange(img_path_list.__len__()):(img_path, img_name)= img_path_list[i](target_path, target_name)= target_path_list[i]print(img_path)print(target_path)
fake = imread(img_path)
real = imread(target_path)
distance = ms_ssim(real, fake).cpu().numpy()print(distance)
d += distance
print('average ms_ssim')print(d/img_path_list.__len__())
写在后面
你笑我徒劳,而我一个人在路上,走完的四季,确实你永远体会不到的风景。
-----《愿有人陪你颠沛流离》
版权归原作者 iiiiiiimp 所有, 如有侵权,请联系我们删除。