【深度学习】Loss Functions for Neural Networks for Image Processing

在目前的深度学习中,业界主流主要还是把调整深度学习网络结构作为主要的工作重心,即使损失函数(loss functions)对整个网络的训练起着十分重要的作用。

Nvidia和MIT最近发了一篇论文《loss functions for neural networks for image processing》则详细探讨了损失函数在深度学习起着的一些作用。通过对比L1,L2,SSIM,MS-SSIM四种损失函数,作者也提出了自己的损失函数(L1+MS-SSIM)。

在目前研究中,L2范数基本是默认的损失函数,因为好处太多了。比较直观的就是L2损失函数可微,且凸。而且L2损失函数的网络往往会对峰值性噪比PSNR有针对性的提升。然而PSNR跟人类对图像感知(HVS)的关系其实并不紧密。当然,事实也存在着一些跟HVS更加紧密的损失函数,但是他们往往不可导,这使得在程序上处理起来不是那么的容易。于是在本文实验中,作者仅选取了两种与HVS相关的损失函数:SSIM 与 MS-SSIM。

L1损失函数

L1损失函数可简单表示如下:
这里写图片描述
他的微分形式也很简单:
这里写图片描述

L1损失函数与L2损失函数有着显著的差别,他不会对large errors进行惩罚,而且他们的收敛曲线也不同。然而出乎意料的是,L1损失函数的结果比其他几种方法都有明显的改善。

SSIM损失函数

SSIM可定义如下:
这里写图片描述

SSIM越大,图像的视觉效果一般来说越好。
因此为了做成minimize,作者将ssim的损失函数定义为:
这里写图片描述
因此,则有:
这里写图片描述
但是SSIM是必要需要neighborhood pixel进行参与计算求取均值和标准差的,这就导致边界的pixel都无法进行计算,因此,作者重新定义SSIM的损失函数:
这里写图片描述
其中p^hat是指patch P 中的center pixel。

则SSIM的反向微分为:
这里写图片描述
这里写图片描述
这里写图片描述

MS-SSIM损失函数

避免去调节高斯核这里写图片描述, 作者又提出了multi-scale version of SSIM – MS-SSIM。
(关于这个SSIM中的高斯核,可以去看SSIM的相关文献)

MS-SSIM定义如下
这里写图片描述
则其损失函数则为:
这里写图片描述
微分形式:
这里写图片描述

Mix: L1+MS-SSIM 损失函数

这里写图片描述

扫描二维码关注公众号,回复: 162993 查看本文章

作者对alpha设置为0.84

实验

这里写图片描述

这里写图片描述

联合训练L1+L2的收敛曲线
这里写图片描述

猜你喜欢

转载自blog.csdn.net/shwan_ma/article/details/79055569