论文——《Loss Functions for Image Restoration With Neural Networks》

论文题目,核心要点记录,代码的核心实现,小结感受。

1. 要点记录

这篇文章介绍了不同的loss function对image restoration 的 影响。

L2范数基本是默认的损失函数。优势:比较直观的就是L2损失函数可微,且凸。而且L2损失函数的网络往往会对峰值性噪比PSNR有针对性的提升。缺点:L2指标与人类感知的图像质量相关性较差,例如其假设噪声与图像的局部区域无关。

loss = tf.reduce_mean(tf.square(labels - outputs)) #label和output是两张shape一样的照片

 

L1范数不少实验中效果更好,我导师给我的建议,高频L1,低频L2。

loss = tf.reduce_mean(tf.abs(labels-outputs))

SSIM(结构相似性,从亮度、对比度、结构上出发,更能符合人类视觉感知)

 

不过文章对ssim的定义与实际有出入呐,不深究了。TensorFlow也是有对应的loss计算啦。ssim计算在0--1之间,越接近1越好。因为网络训练要求loss 越小越好,所以这里用1-ssim。

Mssimloss = tf.reduce_mean(1. - tf.image.ssim_multiscale( outputs, labels, max_val=1.0 ))

MS-SSIM(多尺度的ssim)

tf.image.ssim_multiscale(
    img1,
    img2,
    max_val,
    power_factors=_MSSSIM_WEIGHTS
)
#img1和img2是图像批处理,即最后三个维度是[height, width, channels].
#返回:包含批处理中每个图像的MS-SSIM值的张量,值在[0,1]范围内

 

 

L1 +MS-SSIM

 

 

 2.贴出论文中的部分实验结果

当然是混合的最好啦。

论文还对损失函数的收敛性进行研究,说明L1收敛性比L2更好,如下图所示,在切换损失函数前,L1下降更快,说明L2之前可能陷入局部最小。

3.论文给出的代码地址

https://github.com/NVlabs/PL4NN/blob/master/src/loss.py

caffe框架实现的。

之后看的论文,稍加记录,便于之后的回顾,继续加油!

科研路漫漫,上下而求索呐!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章