来源:arXiv

编译:weakish

尽管早在上世纪80年代末,神经网络就在手写数字识别上表现出色。直到近些年来,随着深度学习的兴起,神经网络才在计算机视觉领域呈现指数级的增长。现在,神经网络几乎在所有计算机视觉和图像处理的任务中都有应用。

相比各种层出不穷的用于计算机视觉和图像处理的新网络架构,这一领域神经网络的损失函数相对而言并不那么丰富多彩。大多数模型仍然使用L2损失函数(均方误差)。然而,L2损失函数的效果是否真的那么好呢?其他损失函数表现如何?下面我们将简单介绍常用的图像处理损失函数,并比较其在典型图像处理任务上的表现。

L1、L2损失函数

最容易想到的损失函数的定义,就是逐像素比较差异。为了避免正值和负值相互抵消,我们可以对像素之差取绝对值或平方。

取绝对值就得到了L1损失函数

取平方则得到了L2损失函数

和L1相比,L2因为取平方的关系,会放大较大误差和较小误差之间的差距,换句话说,L2对较大误差的惩罚力度更大,而对较小误差更为容忍。

除此之外,L1和L2基本上差不多。

实际上,Nvidia的研究人员Hang Zhao等尝试过交替使用L1和L2损失函数训练网络(arXiv:1511.08861v3),发现随着训练的进行,在测试集上的L2损失都下降了。

橙:前半段L1、后半段L2;蓝:前半段L2、后半段L1

顺便提下,从上图可以看到,前半段L2损失陷入了局部极小值。

不管是L1损失函数,还是L2损失函数,都有两大缺陷:

  1. 假定噪声的影响和图像的局部特性是独立的。然而,人类的视觉系统对噪声的感知受局部照度、对比、结构的影响。

  2. 假定噪声接近高斯白噪声,然而这一假定并不总是成立。

SSIM、MS-SSIM损失函数

为了将人类视觉感知纳入考量,可以使用基于SSIM或MS-SSIM的损失函数。SSIM、MS-SSIM是综合了人类主观感知的指标。

SSIM(structural similarity,结构相似性)的直觉主要是:人眼对结构(structure)信息很敏感,对高亮度区域(luminance)和“纹理”比较复杂(contrast)的区域的失真不敏感。MS-SSIM(Multi-Scale SSIM,多尺度SSIM)则额外考虑了分辨率这一主观因素(例如,高分辨率的视网膜显示器上显而易见的失真,在低分辨率的手机上可能难以察觉)。

相应地,基于SSIM的损失函数的定义为:

不过,由于损失函数通常配合卷积网络使用,这就意味着计算损失函数的时候其实只用计算中央像素的损失,即:

通过上述中央像素损失函数训练所得的卷积核,仍将应用于图像中的每个像素。

同理,基于MS-SSIM的损失函数为:

另外,我们知道,损失函数除了要准确地表达模型的目标之外,还需要是可微的,这样才能通过基于梯度下降的方法在反向传播阶段训练。显然,L1和L2是可微的。

事实上,基于SSIM和MS-SSIM的损失函数也同样是可微的。这里省略具体的推导过程,直接给出结论。

对基于SSIM的损失函数而言:

其中,l和cs分别为SSIM的第一项和第二项,其梯度为:

其中,Gσ_G为像素的高斯系数。这里我们看到,尽管之前的损失函数只考虑了中央像素,但因为在计算梯度的时候,实际上需要像素的高斯系数,因此误差仍然能够反向传播至所有像素。

相应地,基于MS-SSIM的损失函数的梯度计算公式为:

不过,由于基于MS-SSIM的损失函数需要在每个尺度上都重复算一遍梯度,会大大拖慢训练速度(每一次迭代都相当于M次迭代),因此实践中往往转而采用某个逼近方法计算。例如,使用M组不同的Gσ_G值作为替代,每组值为前一组的1/2.

评测

Hang Zhao等在JPEG去噪、去马赛克,超分辨率重建,JPEG去区块效应等场景对比了不同损失函数的效果。

去噪、去马赛克

上图中的BM3D代表CFA-BM3D,为当前最先进的降噪算法。我们看到,在天空这样的平坦区域(d),L2损失函数出现了污迹失真(splotchy artifact)。

超分辨率

仔细观察下图蝴蝶翅膀的黑带处,可以看到L2出现了光栅失真(grating artifacts)。

同样,下图女孩的面部,也可以观察到L2的光栅失真。

去区块

仔细观察建筑物边缘的区块,可以看到L1比L2去区块效果要好。

天空区域的区块效应更明显,相应地,L1在去区块方面表现优于L2这点就更明显了。

更多去区块的例子印证了我们上面的观察。

混合损失函数

你应该已经注意到了,上面的对比图中有一个“Mix”,而且事实上它是看起来效果最好的那个。这个“Mix”其实是Hang Zhao等提出的混合了MS-SSIM和L1得到的损失函数:

这个混合损失函数的定义很简单,基本上就是MS-SSIM和L1的加权和,只不过因为MS-SSIM反向传播误差时需要用到G高斯分布参数,因此在L1部分也分素相乘相应的分布参数而已。

Hang Zhao等经过一些试验,将α定为0.84,使两部分损失的贡献大致相等(试验发现,α的微小变动对结果的影响不显著)。

以上我们已经从视觉上演示了MS-SSIM+L1混合损失函数效果最佳。定量测试也表明,在多种图像处理任务上,基于多种图像质量指标,总体而言,混合损失函数的表现最好。

网络架构

上述试验所用的网络架构为全卷积神经网络(CNN)

  1. 输入为31x31x3.

  2. 第一个卷积层为64x9x9x3.

  3. 第二个卷积层为64x5x5x64.

  4. 输出卷积层为3x5x5x64.

  5. 内卷积层的激活函数为PReLU。

数据集

训练集取自MIT-Adobe FiveK数据集,共700张RGB图像,尺寸调整为999x666. 测试集取自同一数据集,共40张图像。

结语

总结一下以上评测:

  1. 在很多场景下,L2损失函数的表现并不好。有时可以尝试下同样简单的L1损失函数,说不定能取得更好的效果。

  2. 由于未考虑到主观感知,很多场景下,基于SSIM或MS-SSIM的损失函数能取得比L1、L2更好的效果。

  3. 结合MS-SSIM和L1通常会有奇效。

总之,虽然L2损失函数是用于图像处理的神经网络事实上的标准,但也不可迷信,不假思索地选用L2可能会错过更优的选择。

来自 论智 已获取授权

作者 weakish

编辑 zenRRan 稍作修改

IELTS a bit

inescapable adj. 不可避免的;逃脱不了的

expiry n. 满期,逾期;呼气;终结

encompass vt. 包含;包围;围绕;完成

gadget n. 小玩意;小器具;小配件;诡计

inaudible adj. 听不见的;不可闻的

推荐阅读:

一大批历史精彩文章啦

整理了自己关于机器学习,深度学习,python,NLP,pytorch,linux,数学基础等精彩文章。


欢迎关注深度学习自然语言处理公众号,我会每天更新自己在机器学习深度学习NLPCVlinuxpython以及各种数学知识学习的一点一滴!再小的人也有自己的品牌!期待和你一起进步!

长按识别二维码

CNN图像处理常用损失函数对比评测相关推荐

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

    https://research.nvidia.com/publication/loss-functions-image-restoration-neural-networks 常用损失函数(L1.L ...

  2. android手机评测,Android手机 三大浏览器对比评测

    随着Android系统的不断升温,国内的Android手机的销量已经出现井喷之势,作为智能手机,我们最常用的功能便是上网,也就是浏览网页,所以手机浏览器已经成为了Android智能手机的必备利器. 在 ...

  3. 红米note2报告android,红蓝之争 魅蓝Note 2/红米Note对比评测

    1魅蓝Note 2对比红米Note 虽然每次小米发布新品总是会引得一众厂商群起而攻之,不过说起来还是每次都不算主动的魅族最有这样的资格:见证了太多这两家的恩恩怨怨,魅族也终于在去年全线压上,针对小米的 ...

  4. sht20中写用户寄存器_数字输出温湿度传感器HTU21D和SHT21对比评测(图文)

    超小体积的温湿度一体数字输出模块由于体积小,精度高的特点,广泛应用于手机.通讯.HVAC.医疗.环境监测.家用电器.控制板等,近日从深圳市工采网(ISweek)拿到市面上最常用的HTU21D和SHT2 ...

  5. android 8 荣耀9,荣耀9和荣耀8区别在哪?荣耀8与荣耀9对比评测

    6 月 12 日下午,荣耀 9 正式发布,作为去年 7 月 11 日发布的荣耀 8 的换代产品,在荣耀 9 身上依然可以看到不少 8 的影子,但也带来了不少的升级改变.究竟荣耀 9 和荣耀 8 有什么 ...

  6. 电视盒子cpu天梯图排行榜 2023电视盒子cpu对比评测

    一.2023电视盒子cpu对比评测 目前国内主流就是晶晨.瑞芯微.mtk.全志等品牌处理器芯片,晶晨.瑞芯微是用的比较多的,也是比较好的,接下来就来看看这两个芯片的主流cpu对比: 电视盒子选哪款好这 ...

  7. NLP常用损失函数代码实现——SoftMax/Contrastive/Triplet/Similarity

    NLP常用损失函数代码实现   NLP常用的损失函数主要包括多类分类(SoftMax + CrossEntropy).对比学习(Contrastive Learning).三元组损失(Triplet ...

  8. android浏览器对比评测,还在为选择哪个浏览器而纠结?Android手机浏览器横向对比评测!...

    本文内容转自于互联网点评,并非本站立场观点! 随着Android系统的不断升温,国内的Android手机的销量已经出现井喷之势,作为智能手机,我们最常用的功能便是上网,也就是浏览网页,所以手机浏览器已 ...

  9. 诺基亚N95 8GB/N96对比评测

    风格各异的外观造型 作为原本诺基亚N系列的旗舰机型,N95 8GB具备极为霸气的外观造型与创新的双向滑盖机身造型设计,而这两点要素,在全新一代N系列旗舰机型N96上得以延续.尽管说N96没有沿用N95 ...

  10. 一文看懂机器学习中的常用损失函数

    作者丨stephenDC 编辑丨zandy 来源 | 大数据与人工智能(ID: ai-big-data) 导语:损失函数虽然简单,却相当基础,可以看做是机器学习的一个组件.机器学习的其他组件,还包括激 ...

最新文章

  1. 数据库命名规范(转)
  2. 14行代码AC_Break the Chocolate HDU-4112(数学推导+解析)
  3. 36/100. Generate Parentheses
  4. connect函数在阻塞和非阻塞模式下的行为
  5. mysql 排他,mysql 共享锁 排他锁 防插入锁
  6. salesforce php,具有自动登录功能的Salesforce php REST API
  7. 机器学习算法太厉害,导致人类也通不过谷歌验证码
  8. c# timer 销毁_C# task和timer实现定时操作
  9. 计算机没有显示光盘图标,电脑光驱图标不见了怎么办
  10. UDS诊断系列之一 汽车诊断简介
  11. 小米4A 32电视通过TTL方式ROOT的方法
  12. ol4服务器连接不稳定,红警Online频繁掉线怎么办 总是断开链接问题解答
  13. Gullo’s Hosting保加利亚NAT VPS评测
  14. 影响ae渲染时间的计算机配置,分享两套影视后期电脑配置2019 能流畅使用ae和pr的电脑主机推荐...
  15. 清理注册表 php,如何彻底清理注册表?小编教你清理注册表操作方法
  16. 输入一个数n,然后打印出2的n次方
  17. 【SVAC】千目聚云:SVAC2.0已来 未来发展道路一片光明
  18. 深度干货:史上最全的市场推广渠道大全(附攻略和技巧)
  19. 计算机视觉中的多视图几何 -- 2D射影几何与变换 -- 相似、仿射与射影变换的层次
  20. 修改文件md5值的简单方法!

热门文章

  1. list()的相关问题
  2. PHP扩展迁移为PHP7扩展兼容性问题记录
  3. X86平台下基于grub2+busybo+linux-2.6.36制作linux系统
  4. 然爸读书笔记(2013-3)----用户体验的要素
  5. [NEHE Couse] 05.3D Objects
  6. 不同用户登陆模块的实现
  7. 【排序算法】归并排序-递归方法
  8. 趣图图解 SOLID 软件开发原则
  9. 20155207第十章课下测试补交
  10. 干货分享:MySQL之化险为夷的【钻石】抢购风暴【转载】