当前位置:   article > 正文

LPIPS 图像相似性度量标准(感知损失)

lpips

可学习感知图像块相似度(Learned Perceptual Image Patch Similarity, LPIPS)

 项目主页:https://richzhang.github.io/PerceptualSimilarity/

论文地址:https://arxiv.org/abs/1801.03924

开源代码:https://github.com/richzhang/PerceptualSimilarity


可学习感知图像块相似度(Learned Perceptual Image Patch Similarity, LPIPS)也称为“感知损失”(perceptual loss),用于度量两张图像之间的差别。

来源于CVPR2018的一篇论文《The Unreasonable Effectiveness of Deep Features as a Perceptual Metric》,该度量标准学习生成图像到Ground Truth的反向映射强制生成器学习从假图像中重构真实图像的反向映射,并优先处理它们之间的感知相似度。LPIPS 比传统方法(比如L2/PSNR, SSIM, FSIM)更符合人类的感知情况LPIPS的值越低表示两张图像越相似,反之,则差异越大。

将左右的两个图像块和中间的图像块进行比较:

         如图表示,每一组有三张图片,由传统的评价标准如L2、SSIM、PSNR等评价结果和人体认为的大不相同,这是传统方法的弊端。如果图片平滑,那么传统的评价方式则大概率会失效。而目前GAN尤其是VAE等生成模型生成结果都过于平滑。 而最后三行的评价为深度学习的方式,可以看到,通过神经网络(非监督、自监督、监督模型)提取特征的方式,并对特征差异进行计算能够有效进行评价,而且能够和人体评价相似。【LPIPS 比传统方法(比如L2/PSNR, SSIM, FSIM)更符合人类的感知情况。】

代码

★ 完整的PSNR + SSIM + LPIPS 代码看:图像质量评价指标: PSNR 和 SSIM 和 LPIPS_马鹏森的博客-CSDN博客_psnr范围

需要先安装lpips:

pip install lpips

command:python lpips_2dirs.py -dir0 ./input_images -dir1 ./output_images

  1. import argparse
  2. import os
  3. import lpips
  4. parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
  5. parser.add_argument('--dir0', type=str, default='./input_images')
  6. parser.add_argument('--dir1', type=str, default='./output_images')
  7. parser.add_argument('-v','--version', type=str, default='0.1')
  8. opt = parser.parse_args()
  9. ## Initializing the model
  10. loss_fn = lpips.LPIPS(net='alex', version=opt.version)
  11. # the total list of images
  12. files = os.listdir(opt.dir0)
  13. i = 0
  14. total_lpips_distance = 0
  15. average_lpips_distance = 0
  16. for file in files:
  17. try:
  18. # Load images
  19. img0 = lpips.im2tensor(lpips.load_image(os.path.join(opt.dir0,file)))
  20. img1 = lpips.im2tensor(lpips.load_image(os.path.join(opt.dir1,file)))
  21. if (os.path.exists(os.path.join(opt.dir0, file)), os.path.exists(os.path.join(opt.dir1, file))):
  22. i = i + 1
  23. # Compute distance
  24. current_lpips_distance = loss_fn.forward(img0, img1)
  25. total_lpips_distance = total_lpips_distance + current_lpips_distance
  26. print('%s: %.3f'%(file, current_lpips_distance))
  27. except Exception as e:
  28. print(e)
  29. average_lpips_distance = float(total_lpips_distance) / i
  30. print("The processed iamges is ", i , "and the average_lpips_distance is: %.3f" %average_lpips_distance)

文件夹目录为:

 注意:其中“input_images”和“output_images”中的文件名要一一对应,它们的名字要相同,也就是“input_images”中的1.png和“output_images”中的1.png进行求LPIPS

LPIPS图像相似性度量标准:The Unreasonable Effectiveness of Deep Features as a Perceptual Metric_Alocus_的博客-CSDN博客_lpips

有真实参照的图像质量的客观评估指标:SSIM、PSNR和LPIPS - 知乎

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/192909
推荐阅读
相关标签
  

闽ICP备14008679号