論文原文:https://arxiv.org/pdf/1608.03981.pdf
一、簡介
老實(shí)說,這篇論文后半部分不太值得細(xì)讀,大量內(nèi)容都是討論實(shí)驗(yàn)萧豆,寫的比較啰嗦。啟發(fā)性的內(nèi)容較少昏名,看完后只知道你的模型效果好涮雷,但不太知道為什么好。
文章重點(diǎn):
強(qiáng)調(diào)了residual learning(殘差學(xué)習(xí))和batch normalization(批量標(biāo)準(zhǔn)化)在圖像復(fù)原中相輔相成的作用轻局,可以在較深的網(wǎng)絡(luò)的條件下洪鸭,依然能帶來快的收斂和好的性能膜钓。
文章提出DnCNN,在高斯去噪問題下卿嘲,用單模型應(yīng)對(duì)不同程度的高斯噪音颂斜;甚至可以用單模型應(yīng)對(duì)高斯去噪、超分辨率拾枣、JPEG去鎖三個(gè)領(lǐng)域的問題沃疮。
二、DnCNN網(wǎng)絡(luò)模型
網(wǎng)絡(luò)結(jié)構(gòu):
第一部分:Conv(3 * 3 * c * 64)+ReLu (c代表圖片通道數(shù))
第二部分:Conv(3 * 3 * 64 * 64)+BN(batch normalization)+ReLu
第三部分:Conv(3 * 3 * 64)
每一層都zero padding梅肤,使得每一層的輸入司蔬、輸出尺寸保持一致。以此防止產(chǎn)生人工邊界(boundary artifacts)姨蝴。第二部分每一層在卷積與reLU之間都加了批量標(biāo)準(zhǔn)化(batch normalization俊啼、BN)。
2.1.殘差學(xué)習(xí)residual learning
DnCNN結(jié)合了ResNet的residual learning左医,關(guān)于ResNet的知識(shí)總結(jié)授帕,見我另一篇文章:http://www.reibang.com/p/11f1a979b384
不同的是DnCNN并非每隔兩層就加一個(gè)shortcut connection,而是將網(wǎng)絡(luò)的輸出直接改成residual image(殘差圖片)浮梢,設(shè)純凈圖片為x跛十,帶噪音圖片為y,假設(shè)y=x+v秕硝,則v是殘差圖片芥映。即DnCNN的優(yōu)化目標(biāo)不是真實(shí)圖片與網(wǎng)絡(luò)輸出之間的MSE(均方誤差),而是真實(shí)殘差圖片與網(wǎng)絡(luò)輸出之間的MSE远豺。
根據(jù)ResNet中的理論奈偏,當(dāng)殘差為0時(shí),堆積層之間等價(jià)于恒等映射躯护,而恒等映射是非常容易訓(xùn)練優(yōu)化的惊来。作者注意到在圖像復(fù)原領(lǐng)域(尤其是在噪音程度較小的情況下),噪音圖片與純凈圖片的殘差非常小榛做,所以理論上殘差學(xué)習(xí)非常適合運(yùn)用到圖像復(fù)原上唁盏。
通俗講内狸,這樣的網(wǎng)絡(luò)設(shè)計(jì)就是在隱層中將真實(shí)的圖片x從原噪音圖y中消去检眯。作者注意到:在超分領(lǐng)域,低分辨率圖片就是高分辨率圖片的雙三次上采樣操作形成的昆淡,故超分領(lǐng)域的殘差圖片和去高斯噪聲領(lǐng)域的殘差圖片是等價(jià)的锰瘸,同理還有JPEG解鎖領(lǐng)域的殘差圖片。也么一來昂灵,用一個(gè)模型應(yīng)對(duì)三種問題便有了可能性避凝,最終實(shí)驗(yàn)證明確實(shí)有效舞萄。
2.2.批量標(biāo)準(zhǔn)化batch normalization
SGD(隨機(jī)梯度下降法)廣泛應(yīng)用于CNN的訓(xùn)練方法中,但是訓(xùn)練的性能卻很大程度受內(nèi)部協(xié)變量移位這一問題所影響管削。BN就是在每一層的非線性處理之前加入標(biāo)準(zhǔn)化倒脓、縮放、移位操作來減輕內(nèi)部協(xié)變量的移位含思∑槠可以給訓(xùn)練帶來更快的速度,更好的表現(xiàn)含潘,使網(wǎng)絡(luò)對(duì)初始化變量的影響沒有那么大饲做。
內(nèi)部協(xié)變量移位(internal covariate shift):深層神經(jīng)網(wǎng)絡(luò)在做非線性變換前的激活輸入值,隨著網(wǎng)絡(luò)深度加深或者在訓(xùn)練過程中遏弱,其分布逐漸發(fā)生偏移或者變動(dòng)盆均,之所以訓(xùn)練收斂慢,一般是整體分布逐漸往非線性函數(shù)的取值區(qū)間的上下限兩端靠近(對(duì)于Sigmoid函數(shù)來說漱逸,意味著激活輸入值WU+B是大的負(fù)值或正值)泪姨,所以這導(dǎo)致反向傳播時(shí)低層神經(jīng)網(wǎng)絡(luò)的梯度消失,這是訓(xùn)練深層神經(jīng)網(wǎng)絡(luò)收斂越來越慢的本質(zhì)原因饰抒。
批量標(biāo)準(zhǔn)化(batch normalization):就是通過一定的規(guī)范化手段驴娃,把每層神經(jīng)網(wǎng)絡(luò)任意神經(jīng)元這個(gè)輸入值的分布強(qiáng)行拉回到均值為0方差為1的標(biāo)準(zhǔn)正態(tài)分布,即把越來越偏的分布強(qiáng)制拉回比較標(biāo)準(zhǔn)的分布循集,這樣使得激活輸入值落在非線性函數(shù)對(duì)輸入比較敏感的區(qū)域唇敞,所以輸入的小變化才就會(huì)導(dǎo)致?lián)p失函數(shù)有較大的變化,意思就是讓梯度變大咒彤,避免梯度消失問題產(chǎn)生疆柔,而且梯度變大意味著學(xué)習(xí)收斂速度快,能大大加快訓(xùn)練速度镶柱。
2.3.網(wǎng)絡(luò)深度network depth
作者參考《Very deep convolutional networks for large-scale image recognition》的標(biāo)準(zhǔn)旷档,將DnCNN的卷積核大小設(shè)置為3 * 3,并且去掉了所有的池化層歇拆。
感受野:是卷積神經(jīng)網(wǎng)絡(luò)中某一層輸出的特征圖對(duì)到網(wǎng)絡(luò)輸入圖像中映射的區(qū)域的大小鞋屈。
感受野計(jì)算時(shí)有下面的幾個(gè)情況需要說明:
- 第一層卷積層的輸出特征圖像素的感受野的大小等于濾波器的大小故觅;
- 深層卷積層的感受野大小和它之前所有層的濾波器大小和步長有關(guān)系厂庇;
- 計(jì)算感受野大小時(shí),忽略了圖像邊緣的影響输吏,即不考慮padding的大小权旷。
此外,關(guān)于每一層的strides的說明贯溅,這個(gè)strides是之前所有層stride的乘積拄氯,即
strides(i)= stride(1) * stride(2) * ...* stride(i-1)
對(duì)于單層卷積網(wǎng)絡(luò)躲查,其feature map上每個(gè)特征點(diǎn)對(duì)應(yīng)原圖上的感受野大小等于卷積層濾波器的大小译柏;對(duì)于多層卷積網(wǎng)絡(luò)镣煮,可由此逐層往回反饋,通過反復(fù)迭代獲得原始輸入圖像中感受野大小鄙麦,即后面深層的卷積層感受野大小就和之前所有網(wǎng)絡(luò)層的濾波器大小和步長有關(guān)系了怎静,在計(jì)算的時(shí)候,忽略圖像Padding的大小黔衡。使用的公式可以表示如下:
r(i) = (r(i+1) - 1) * stride(i) + c(i)
其中蚓聘,r(i)表示第i層感受野大小,stride(i)表示第i層步長盟劫,c(i)表示第i層卷積核大小夜牡。
此外,對(duì)于卷積網(wǎng)絡(luò)中的激活函數(shù)層(ReLU/Sigmoid/...)等侣签,感受野迭代公式為:
r(i)=r(i+1)
對(duì)于DnCNN網(wǎng)絡(luò)塘装,網(wǎng)絡(luò)層數(shù)是d的時(shí)候,網(wǎng)絡(luò)的感受野就是(2d+1) * (2d+1)影所。DnCNN的感受野與網(wǎng)絡(luò)深度d相關(guān)蹦肴,而卷積神經(jīng)網(wǎng)絡(luò)中的感受野可以類比到傳統(tǒng)去噪算法中的effective patch size。故作者參考最主流的幾個(gè)去噪算法猴娩,根據(jù)2d+1=effective patch size阴幌,反向推出DnCNN一個(gè)合適的網(wǎng)絡(luò)深度。
最終卷中,在噪聲水平為25的情況下矛双,作者選擇EPLL的36*36作為參考標(biāo)準(zhǔn),因?yàn)镋PLL的effective patch size橫向比較最畜≡ァ(如果DnCNN選擇最小的感受野都能勝過這些主流算法议忽,就說明DnCNN很牛逼)。處理高斯去噪的DnCNN的深度為17十减,通用去噪任務(wù)的DnCNN的深度為20栈幸。
三、實(shí)驗(yàn)
作者做了三種實(shí)驗(yàn):
對(duì)比有無residual learning與batch normalization對(duì)復(fù)原效果帮辟、收斂快慢的影響速址,最終證明這兩是相輔相成的,都利用上時(shí)網(wǎng)絡(luò)各方面性能達(dá)到最好织阅。
根據(jù)特定程度的高斯噪聲訓(xùn)練DnCNN-S壳繁、根據(jù)不定程度的高斯噪聲訓(xùn)練DnCNN-B、根據(jù)不同程度的噪音(包括不同程度的高斯噪聲荔棉、不同程度的低分辨率闹炉、不同程度的JPEG編碼)訓(xùn)練的DnCNN-3來與最前沿的其他算法做對(duì)比實(shí)驗(yàn)。結(jié)論:DnCNN-S有最好的性能润樱,但是DnCNN-B也有優(yōu)于其他算法的性能渣触,證明了DnCNN-B具有很好的盲去高斯噪聲的能力;DnCNN-3則證明了DnCNN-3具有不俗的復(fù)原圖像的泛化能力壹若。
對(duì)比了DnCNN與其他前沿去噪算法的運(yùn)行速度的實(shí)驗(yàn)嗅钻,結(jié)論:速度還是不錯(cuò)的,CPU\GPU環(huán)境下均屬于中上水平店展。
四养篓、總結(jié)
這篇文章非常棒的公開了源碼,所以后面會(huì)考慮自己復(fù)現(xiàn)一下赂蕴。