首页IT科技图像相似度指标(LPIPS 图像相似性度量标准(感知损失))

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

时间2025-06-19 14:35:19分类IT科技浏览42083
导读:可学习感知图像块相似度(Learned Perceptual Image Patch Similarity, 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

import argparse import os import lpips parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument(--dir0, type=str, default=./input_images) parser.add_argument(--dir1, type=str, default=./output_images) parser.add_argument(-v,--version, type=str, default=0.1) opt = parser.parse_args() ## Initializing the model loss_fn = lpips.LPIPS(net=alex, version=opt.version) # the total list of images files = os.listdir(opt.dir0) i = 0 total_lpips_distance = 0 average_lpips_distance = 0 for file in files: try: # Load images img0 = lpips.im2tensor(lpips.load_image(os.path.join(opt.dir0,file))) img1 = lpips.im2tensor(lpips.load_image(os.path.join(opt.dir1,file))) if (os.path.exists(os.path.join(opt.dir0, file)), os.path.exists(os.path.join(opt.dir1, file))): i = i + 1 # Compute distance current_lpips_distance = loss_fn.forward(img0, img1) total_lpips_distance = total_lpips_distance + current_lpips_distance print(%s: %.3f%(file, current_lpips_distance)) except Exception as e: print(e) average_lpips_distance = float(total_lpips_distance) / i 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 - 知乎

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
web前端重点知识(web 前端 基础HTML知识点) vuex缓存(Vue项目线上发布,都有缓存不生效怎么办?)