https://research.nvidia.com/publication/loss-functions-image-restoration-neural-networks

常用损失函数(L1、L2、SSIM和MS-SSIM)对比简介

  • 1 介绍
  • 2 损失函数
  • 3 效果对比
  • 4 总结
  • 参考资料

1 介绍

本文的介绍主要是参考论文:Loss Functions for Image Restoration with Neural Networks,而作者是从这三个实验(image super-resolution, JPEG artifactsremoval, and joint denoising plus demosaicking)上来证明这几个损失函数的好坏。

2 损失函数

L1损失函数: 基于逐像素比较差异,然后取绝对值

L2损失函数: 基于逐像素比较差异,然后取平方

相对于L1损失函数,L2损失函数会放大最大误差和最小误差之间的差距(比如22 和0.10.1),另外L2损失函数对异常点也比较敏感。如果我们在训练网络的时候,只用L1损失函数或者L2损失函数的时候,很容易陷入到局部最优解中,如果选择交替训练的话,说不定会取得不错的效果。


在图像质量评价指标中,有一个指标是PSNR(Peak Signal-to-Noise Ratio) 峰值信噪比,它正好对标L1和L2损失函数,但L1和L2是有一个共性:它们都是基于逐像素比较差异,没有考虑人类视觉感知,更没有考虑人的审美观,所以PSNR指标高,并不一定代表图像质量就好。在下面公式中,如果图片中每个像素都由 8 位二进制来表示,那么MAX就为 255


SSIM(结构相似)损失函数:考虑了亮度 (luminance)、对比度 (contrast) 和结构 (structure)指标,这就考虑了人类视觉感知,一般而言,SSIM得到的结果会比L1,L2的结果更有细节


MS-SSIM(多尺度结构相似)损失函数:基于多层(图片按照一定规则,由大到小缩放)的SSIM损失函数,相当于考虑了分辨率


MS-SSIM+L1损失函数:作者这样组合的原因是,MS-SSIM容易导致亮度的改变和颜色的偏差,但它能保留高频信息(图像的边缘和细节),而L1损失函数能较好的保持亮度和颜色不变化。公式中α为0.84,是作者试验出来的,而G为高斯分布参数(MS-SSIM里面也要用到这个)

3 效果对比

超分辨率:放大图片对比会发现L2中出现光栅失真现象,最好去原论文放大看看

JPEG去块:放大图片对比会发现L2中还是有比较严重的块状现象,最好去原论文放大看看

去噪+去马赛克:一眼看出,L2的效果明显差一些,就不用放大了

我个人觉得评价一张图片的质量好不好,或者那个算法的效果好不好,应该结合主观和客观来评价,下图的客观数据也表明:MS-SSIM+L1损失函数是最好的

4 总结

 1.既然用了L2损失函数,为何不尝试一下L1损失函数2.如果不看PSNR指标,那就用MS-SSIM或者SSIM损失函数吧3.如果想获得奇效,试一下组合损失函数也为何不可

参考资料

  1. https://blog.csdn.net/u013289254/article/details/99694412
  2. https://blog.csdn.net/Kevin_cc98/article/details/79028507
  3. https://blog.csdn.net/jacke121/article/details/90749274

常用损失函数(L1、L2、SSIM和MS-SSIM)对比简介相关推荐

  1. 常用损失函数总结(L1 loss、L2 loss、Negative Log-Likelihood loss、Cross-Entropy loss、Hinge Embedding loss、Margi)

    常用损失函数总结(L1 loss.L2 loss.Negative Log-Likelihood loss.Cross-Entropy loss.Hinge Embedding loss.Margi) ...

  2. 机器学习02——回归问题中的损失函数 (L2损失L1损失Huber损失函数)

    回归问题预测中的残差 • 预测残差:真实值和预测值之间的差异: ? = ? − ?1 • 忽略预测残差的正负号:残差的平方:?**2 • 最佳模型:残差平方和(Residual Sum of Squa ...

  3. L1 损失函数和 L2 损失函数

    L1 和 L2 是机器学习中的两个损失函数,用于最小化误差. L1 损失函数代表最小绝对偏差,也称为 LAD L2 损失函数代表最小二乘误差,也称为 LS 文章目录 一.L1 损失函数 二.L2 损失 ...

  4. 学点基本功:机器学习常用损失函数小结

    (图片付费下载自视觉中国) 作者 | 王桂波 转载自知乎用户王桂波 [导读]机器学习中的监督学习本质上是给定一系列训练样本  ,尝试学习  的映射关系,使得给定一个 ,即便这个不在训练样本中,也能够得 ...

  5. 深度学习常用损失函数总览:基本形式、原理、特点

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:王桂波,来源:极市平台 机器学习中的监督学习本质上是给定一系列训练 ...

  6. 机器学习常用损失函数总览:基本形式、原理、特点

    来源:七月在线实验室 本文约4300字,建议阅读9分钟. 本文将介绍机器学习.深度学习中分类与回归常用的几种损失函数. 机器学习中的监督学习本质上是给定一系列训练样本  ,尝试学习 的映射关系,使得给 ...

  7. 机器学习常用损失函数小结

    作者:王桂波 转载自:https://zhuanlan.zhihu.com/p/77686118 整理:HealthAI 上一篇文章我们看到了目标函数,损失函数,和代价函数的区别.在该部分我们来看一看 ...

  8. 六个深度学习常用损失函数总览:基本形式、原理、特点

    来源:极市平台 本文共4500字,建议阅读8分钟本文将介绍机器学习.深度学习中分类与回归常用的几种损失函数. 机器学习中的监督学习本质上是给定一系列训练样本  ,尝试学习  的映射关系,使得给定一个  ...

  9. [转] L1 L2范数

    作者:Andy Yang 链接:https://www.zhihu.com/question/26485586/answer/616029832 来源:知乎 著作权归作者所有.商业转载请联系作者获得授 ...

最新文章

  1. 嵌入式Linux内存压力测试
  2. c++经典代码大全_宁海檩条C型钢型号大全
  3. windows下安装mysql以及解决(MySQL 服务正在启动 . MySQL 服务无法启动。服务没有报告任何错误。)...
  4. 数据库的使用你可能忽略了这些 (续)
  5. eclipse 设置 默认编码为 utf-8
  6. 【Linux】一步一步学Linux——ls命令(29)
  7. 对计算机辅助英语的看法,论我国计算机辅助英语笔译的必要性
  8. oracle10g静默升级,Linux下静默安装,升级和删除Oracle10g客户端
  9. python爬虫遇到js加密_当爬虫遇到js加密
  10. ssis 映射列 使用变量_SSIS中的动态列映射:SqlBulkCopy类与数据流
  11. FusionChart样例
  12. 在Vue中使用Echarts可视化库的完整步骤记录
  13. 两个pv挂一个vg_王者荣耀2020世冠杯小组赛全部结束,TS和AG、QG和E星一个半区
  14. html 表单在当前窗口打开,js使用post 方式打开新窗口
  15. 2013 VS 2018:五年前和今天的十大数字货币大比拼
  16. 交换机端口镜像配置大全【汇集 22个各种品牌交换机】
  17. STM32 DHT11
  18. python组合的语法_在Python中使用语法sugar-to-function组合是个好主意吗?
  19. 常见的浏览器以及内核
  20. 山东理工大学计算机期末考试题,山东理工大学计算机基础试题11

热门文章

  1. 探索ASP.NET Core中的IStartupFilter
  2. CocosCreator内置函数实现物体拖动
  3. review——C# (15)转换
  4. [luogu 2324][SCOI 2005] 骑士精神 (A*算法)
  5. HDU 5389 Zero Escape
  6. 易语言服务器不在一个网段,设置二级路由器保持局域网在同一个网段
  7. java blockingqueue_Java多线程进阶(三一)—— J.U.C之collections框架:BlockingQueue接口...
  8. 里面如何配置库_【专享】SolidWorks管道库国标模型下载SolidWorks Routing管道设计学习必备...
  9. java 封装优化工具_利用Java注解的简单封装的一次优化
  10. java递归基本结构_JAVA学习入门篇_递归结构