您的位置:首页 > 其它

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

2018-01-14 11:25 555 查看
在目前的深度学习中,业界主流主要还是把调整深度学习网络结构作为主要的工作重心,即使损失函数(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 损失函数



作者对alpha设置为0.84

实验





联合训练L1+L2的收敛曲线

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  深度学习
相关文章推荐