論文——《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框架實現的。

之後看的論文,稍加記錄,便於之後的回顧,繼續加油!

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

 

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