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

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

时间2025-04-28 19:22:21分类IT科技浏览35396
导读:可学习感知图像块相似度(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
arm交叉编译器安装(RK3588移植-opencv交叉编译aarch64) 火车头采集腾讯视频(火车头采集论坛,打开信息获取新视野)