盡管早在上世紀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損失函數,都有兩大缺陷:
假定噪聲的影響和圖像的局部特性是獨立的。然而,人類的視覺系統對噪聲的感知受局部照度、對比、結構的影響。
假定噪聲接近高斯白噪聲,然而這一假定并不總是成立。
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):
輸入為31x31x3.
第一個卷積層為64x9x9x3.
第二個卷積層為64x5x5x64.
輸出卷積層為3x5x5x64.
內卷積層的激活函數為PReLU。
數據集
訓練集取自MIT-Adobe FiveK數據集,共700張RGB圖像,尺寸調整為999x666. 測試集取自同一數據集,共40張圖像。
結語
總結一下以上評測:
在很多場景下,L2損失函數的表現并不好。有時可以嘗試下同樣簡單的L1損失函數,說不定能取得更好的效果。
由于未考慮到主觀感知,很多場景下,基于SSIM或MS-SSIM的損失函數能取得比L1、L2更好的效果。
結合MS-SSIM和L1通常會有奇效。
總之,雖然L2損失函數是用于圖像處理的神經網絡事實上的標準,但也不可迷信,不假思索地選用L2可能會錯過更優的選擇。
-
神經網絡
+關注
關注
42文章
4765瀏覽量
100566 -
函數
+關注
關注
3文章
4308瀏覽量
62445 -
cnn
+關注
關注
3文章
351瀏覽量
22178
原文標題:CNN圖像處理常用損失函數對比評測
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論