可学习感知图像块相似度(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 lpipsparser = 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 imagesimg0 = 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 distancecurrent_lpips_distance = loss_fn.forward(img0, img1)total_lpips_distance = total_lpips_distance + current_lpips_distanceprint('%s: %.3f'%(file, current_lpips_distance))except Exception as e:print(e)average_lpips_distance = float(total_lpips_distance) / iprint("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 - 知乎

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

  1. LPIPS图像相似性度量标准:The Unreasonable Effectiveness of Deep Features as a Perceptual Metric

    ​​​​​​​目录 一.感知相似性 二.传统度量和深度学习法 三.原理 四.测试和代码 五.测试结果 六.参考文献 一.感知相似性 人类可以快速评估两幅图像之间的感知相似性,但是底层过程非常复杂. 纹 ...

  2. 图像风格迁移与快速风格迁移的对比(感知损失)

    最近一段时间要写数字图像处理的文献综述,<深度学习在图像风格迁移中的原理与应用综述>.只能感慨自己一时选题不审,导致期末火葬场啊-- 这个问题我纠结了一天,看了N多篇文献(全是英文的-), ...

  3. 基于感知损失的实时风格迁移与超分辨率重建

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 方法概述 许多经典的图像问题都可以被看成是图像变换任务,算法接受一 ...

  4. 【损失函数:3】感知损失:Perceptual Loss、总变分损失(TV Loss)(附Pytorch实现)

    损失函数 一.感知损失(Perceptual Loss) 1.相关介绍 1)Perceptual Loss是什么? 2)Perceptual Loss如何构造? 3)代码实现 2.代码示例 二.总变分 ...

  5. Perceptual Loss(感知损失)Perceptual Losses for Real-Time Style Transferand Super-Resolution论文解读

    由于传统的L1,L2 loss是针对于像素级的损失计算,且L2 loss与人眼感知的图像质量并不匹配,单一使用L1或L2 loss对于超分等任务来说恢复出来的图像往往细节表现都不好. 现在的研究中,L ...

  6. 损失函数——感知损失(Perceptual Loss)

    感知损失(Perceptual Loss)是一种基于深度学习的图像风格迁移方法中常用的损失函数.与传统的均方误差损失函数(Mean Square Error,MSE)相比,感知损失更注重图像的感知质量 ...

  7. 感知损失(perceptual loss)详解

    本文来自收费专栏:感知损失(perceptual loss)详解_南淮北安的博客-CSDN博客_感知损失 目录 一.感知损失 二.Loss_feature 三.Loss_style 感知损失的作用: ...

  8. 利用perceptual_loss感知损失获得更好的图片重建效果

    利用perceptual_loss感知损失获得更好的图片重建效果 传统的MSEloss在图像重建领域会带来图像高频信息缺失的问题,导致生成的图片出现模糊.感知损失通过对卷积提取的高层信息进行比较,很好 ...

  9. Perceptual Loss(感知损失)论文笔记

    "Perceptual Losses for Real-Time Style Transfer and Super-Resolution"论文出自斯坦福大学李飞飞团队,发表于ECC ...

最新文章

  1. R语言可视化包ggplot2包调整线条粗细实战(Adjust Line Thickness)
  2. hadoop大数据集群完全分布式部署实操篇:HDFS2.9.2、HBASE2.2.6、YARN2.9.2、SPARK2.4.7,ZOOKEEPER3.6.2
  3. mysql load data 语法_MySql LOAD DATA 使用
  4. 99行不用指针 c语言贪食蛇,关于C语言指针的问题
  5. 前面是个主席台的飞鸽传书
  6. 少年时对春有感-四季初
  7. 模板 - 图论 - 最小生成树
  8. Linux60个小时速成
  9. 线性代数----逆矩阵的性质和求法
  10. ASP.NET MVC+Vue.js实现联系人管理
  11. 欢迎使用CSDN-markdown编辑器123213
  12. Sql Server 2008 通用语法总结
  13. UG 信息窗口弹不出来 测量 长度 角度 信息 窗口 弹不出来
  14. 物理学陷入困境:接下来该怎么办?
  15. 计算机的usn插口无法读取,USB3.0还缺谁 解决主板插槽不健全方案
  16. 程序员如何保持身心健康?
  17. pytorch 使用训练好的模型预测新数据
  18. SQL:统计每5min在线人数思路
  19. 2017 微信公开课PRO版 解读
  20. 三维重建02技术介绍及学习路径

热门文章

  1. 指导老师徐少平为俱乐部的全体成员进行了第一次的培训
  2. 潘云鹤院士:人工智能走向2.0的本质原因——人类世界正由二元空间变成三元空间...
  3. Hybrid接口实现不同VLAN间通信
  4. 突发公共卫生事件智慧城市数据利用框架构建研究
  5. 进入新职场,软件测试工程师电脑安装的必备软件
  6. Nginx+jwPlay搭建流媒体服务器,记忆播放
  7. JS 中字符和 ASCII码转换函数
  8. C语言 深度剖析数据在内存中的存储
  9. 《DDOS防御》比较实用
  10. 【洛谷月赛】洛谷11月月赛·Day1