靳華中,劉 陽,葉志偉
(湖北工業(yè)大學計算機學院,武漢 430068)
降噪是圖像處理中的一個重要應用,是圖像處理中的一個經典逆問題.圖像降噪的目的是盡可能地將噪聲信號從受污染的圖像中分離出來,并去除噪聲信號,保留真實圖像信息,帶來更好的視覺效果.給定一個加性高斯白噪聲模型,它可以表示為y=x+v(x表示原圖像,v表示噪聲).圖像降噪是從帶有噪聲的圖像y中恢復干凈的圖像x.盡管在過去幾十年中已經提出了許多圖像降噪算法,但由于當前深度卷積神經網絡(deep convolutional neural network,DCNN)方法比傳統(tǒng)的降噪方法降噪效果更優(yōu)[1-4],因此基于深度學習的算法成為當前研究圖像降噪的熱點之一.
DCNN方法將圖像降噪作為一個監(jiān)督回歸問題來處理,有效的利用了外部先驗信息.通過大量成對干凈-噪聲圖像,學習得到一個高復雜度的多層網絡結構約束函數,將學習外部先驗條件的方式推向極限.DCNN圖像降噪方法的優(yōu)勢主要體現在兩個方面:一方面,DCNN具有很深的層次結構,可以有效地提高圖像特征挖掘的能力和靈活性;另一方面,深度學習在訓練過程中,采用正則化方法、RELU激活函數、批標準化處理等方法,加快了訓練效率,提高降噪性能.
文獻[5-6]利用DCNN方法進行圖像降噪時,都獲得了較為顯著的降噪效果,但這些方法都存在一個明顯的缺點:它們只針對某個特定水平的噪聲建立降噪模型,在圖像盲降噪中受到較大的限制.在解決圖像盲降噪方面,FC-AIDE方法能夠估計噪聲的未知水平,但是網絡參數的訓練是在監(jiān)督訓練和自適應條件下微調得到的,其計算成本相對較大[7].降噪卷積神經網絡(denoising convolutional neural network,DnCNN)利用殘差學習方法進行圖像降噪,該方法采用殘差學習來估計殘差圖像,即噪聲圖像與潛在干凈圖像之間的差異[4],解決了噪聲水平未知的高斯降噪問題.受DnCNN的啟發(fā),本文提出了一種反卷積降噪神經網絡(denoising deconvolution neural network,DnDNN).在本文構建的網絡結構中,每一個隱藏層包括卷積運算和反卷積運算,卷積運算是提取圖像的特征信息,包括邊緣、線條等特征,反卷積運算是復原圖像,復原到卷積之前圖像的尺寸,最后一層做全連接,作為輸出層.本文方法利用反卷積網絡重構圖像的方法進行降噪,在模型訓練過程中引入殘差學習.殘差學習后得到的是純噪聲圖像,純噪聲圖像包含的信息比干凈圖像的少,訓練起來更簡單,效果更好;利用反卷積網絡重構圖像進行圖像降噪的方法需要的網絡層數更少,而且還能加快網絡的收斂速度,提高降噪性能.
實驗表明,在已知噪聲強度級別的高斯降噪中,本文方法比現有的基于深度學習方法BM3D[8]、WNNM[9]的降噪效果好,比DnCNN方法的收斂時間短.對于噪聲強度級別未知的高斯降噪,本文方法也取得較好的降噪效果,其盲降噪方法比針對特定噪聲級訓練特定模型的BM3D[8]和TNRD[10]的降噪方法性能更優(yōu).本文的主要工作總結如下:1) 提出了一種改進的深度網絡殘差學習的圖像降噪方法;2) 本文提出的方法不僅能夠提高殘差學習的效率,加快訓練速度,而且能夠進一步提高降噪性能;3) 本文提出了一種新的損失函數計算方法,縮短了模型訓練的收斂周期.
論文的其余部分組織如下:第2節(jié)簡要介紹了相關工作.第3節(jié)首先介紹了提出的DnDNN模型,然后介紹了改進的損失函數.第4節(jié)是實驗參數配置和結果分析部分.最后,第5節(jié)是本文的結論.
由于深度神經網絡具有靈活的網絡結構和強大的學習能力,因此深度學習技術目前已經成為解決圖像降噪問題非常有效的方法.在這些方法中,Kokkinos[11]將級聯網絡運用到DCNN中,在圖像降噪方面取得了較好的效果;在[12-13]中,在DCNN的基礎上,引入了新的網絡結構,分別利用信號增強原理和多特征融合方法多次復用各個隱藏層的特征信息,將其運用到圖像降噪中,也取得較好的效果;還有學者運用特定的方法為特定領域噪聲降噪,如[14-17]文獻中采用的方法在乘性噪聲、醫(yī)學圖像噪聲的降噪方面取得顯著成效等等.盡管上述的深度學習方法在圖像降噪任務方面取得了很好的效果,但是當網絡結構很深時,這些方法中的大多數會出現梯度消失或者梯度爆炸的問題,使網絡性能退化.此外,上述方法是通過犧牲時間成本來提高降噪性能.
殘差網絡假設引用殘差映射比原始未引用映射更容易學習,在圖像處理過程中,它去掉相同的圖像內容,從而更關注噪聲部分.由于采用了殘差學習策略,極深的CNN可以很容易地進行訓練,提高了圖像分類和目標檢測的準確性[18].與殘差網絡不同,DnCNN使用單個殘差單元來預測殘差圖像,并解決了多個圖像降噪任務[4].為了提升訓練效果,DnCNN將批量歸一化和殘差學習結合使用.
本文提出的DnDNN模型也采用了殘差學習方法.與DnCNN不同,DnDNN方法使用反卷積在不同網絡層次中對圖像進行了重構,使得恢復的圖像含有更少的噪聲.與DnCNN相比,該模型具有收斂時間短、訓練穩(wěn)定、降噪性能好等優(yōu)點.
卷積網絡是一種自底向上的方法,對輸入圖像進行多層卷積、非線性操作以及子采樣.反卷積網絡中的每一層都是自頂向下的,它試圖通過對帶有學習過濾器的特征映射的卷積求和來生成輸入圖像.反卷積網絡利用卷積稀疏編碼的多個交替層對圖像進行分層分解.對第l層特征圖像進行反卷積,得到第l層重構圖像.如圖1所示.
圖1 反卷積過程Fig.1 Deconvolutional process
(1)
(2)
卷積神經網絡可以看作是一個編碼的網絡結構[20],提供從輸入到潛在特征空間的自下而上映射;反卷積網絡可以視為一個解碼器,將潛在特征映射回原始圖像空間.反卷積網絡最初被認為是稀疏的、過于完整的特征層次結構,這與深度學習方法密切相關.反卷積網絡可以學習從低層邊緣到高層對象部分的圖像表示,它以一種無監(jiān)督的方式在不同的尺度空間上恢復圖像特征.換句話說,深度學習對圖像進行訓練時,模型的不同層次學習到不同級別的圖像特征信息.反卷積網絡通過訓練卷積核產生不同層次的基于卷積稀疏編碼的潛在圖像特征.DnDNN的反卷積結構采用了的層次模型,每一個反卷積層都試圖在一組超完整特征圖上進行稀疏約束,從而降低輸入圖像的重構誤差.對于圖像去噪,殘差圖像被視為DnDNN模型中噪聲觀測圖像與重建圖像的差值.
一般來說,針對特定任務訓練深度卷積神經網絡模型分為兩個步驟:1)設計網絡結構;2)從訓練數據中學習模型.在網絡結構設計中,為了使其更適于圖像降噪,本文在DnCNN的基礎上,引入反卷積,并對原有的損失函數進行改進.
圖2 DnDNN網絡結構Fig.2 DnDNN network structure
本文設計的網絡結構如圖2所示,設計的網絡深度為10.每一層包含一組卷積運算和一組反卷積運算,卷積運算是用于提取圖像的特征信息,包括邊緣、線條等特征,反卷積運算是復原圖像,反卷積在重構過程中,去掉了部分不能被重構的噪聲信息;最后一層為全連接層,由一組卷積運算組成,用于輸出圖像.在上述結構中,每做一次卷積運算(或反卷積運算)后,緊接著做批歸一化(Batch Normalization,BN)和RELU,以加快收斂速度,提升訓練效果.
算法步驟如下:
1) 加噪的原始圖像經過卷積計算得到特征圖,然后對特征圖進行反卷積,得到重構圖像;
2) 加噪的原始圖像減去重構圖像得到殘差圖像;
3) 將原始噪聲圖像與對應的標簽圖像相減的結果,再與第2步的殘差圖像做差值,并進行最小化計算;
4) 設置迭代次數,當達到迭代次數時,訓練停止,否則重復1)~3).
本文實驗設置的圖片塊大小為30×30,步長為6,每層設置64個大小為3×3的卷積核,為了保證圖片輸入輸出尺寸大小一樣,采用零填充方式.除最后的全連接層外,每層處理包括卷積和反卷積,不使用池化層.
訓練數據是帶有噪聲的圖像y=x+v,通過學習訓練數據的模式來尋找映射函數f(y)=x,目的是預測潛在的干凈圖像.本文采用殘差學習獲取映射R(y)≈v,然后得到x=y-R(y),故損失函數的計算公式如下:
(3)
式中,yi-xi為樣本殘差值(即噪聲圖像值減去干凈圖像值),R(yi;Θ)為通過學習得到的期望殘差值,l(Θ)用L2正則化得到每個patch塊的損失函數值.在DnCNN中,最終的損失函數是每個patch塊損失函數累加,然后通過優(yōu)化得到盡可能小的損失函數.由于均方誤差函數(MSE)對梯度變化較為敏感,損失函數在收斂過程中魯棒性較差,收斂速度較為緩慢.
為了縮短模型的收斂時間,又保證模型的降噪效果,本文結合L1正則化和L2正則化的各自優(yōu)勢,對上述損失函數進行優(yōu)化,其公式如下:
(4)
式中,t為超參數,它用來調節(jié)損失函數L(t)的梯度.相比于平方損失,上式對于異常值不敏感,但它同樣保持了可微的特性.它基于絕對誤差(MAE)但在誤差很小的時候變成了MSE.可以使用超參數t來調節(jié)的梯度,當t趨向于0時它就退化成了MAE,而當t趨向于無窮時則退化為了MSE.損失函數利用了MAE和MSE各自優(yōu)點,不僅可以保持其具有連續(xù)的導數,同時可以利用MSE梯度隨誤差減小的特性來得到更精確的最小值,也對異常值具有更好的魯棒性.通過實驗分析,當把t的值設置為0.25時,既可以保證訓練速度,也能較好的加快收斂速度.
對于已知或未知噪聲水平的高斯降噪,訓練集為400張像素為180×180的灰度圖片.本文方法是在σ∈[0,55]噪聲水平的訓練集下進行訓練的.為了驗證本文方法對已知噪聲水平的降噪效果,選取了噪聲強度分別為σ=15、25、50的高斯噪聲圖像.每個patch塊的尺寸大小為30×30像素.為了擴充數據樣本,并且減小邊緣效應的影響,將400張像素為180×180圖片中的每張圖片按照其尺寸大小的(1,0.9)倍進行2次裁剪,然后采用比DnCNN更小的步長,以便保留圖片更多的邊緣信息.為了驗證本文方法的降噪效果,采用BSD68和SET12數據集進行測試.
表1 BSD68數據集上不同方法的平均PSNR(DB)結果Tab.1 The average PSNR(db) results of different methods on the BSD68 dataset
表2 SET12數據集上不同方法的平均PSNR(DB)結果Tab.2 The average PSNR(DB) results of different methods on the SET12 dataset
表3 不同降噪方法在噪聲級別為25,圖像尺寸大小分別為256×256、512×512和1024×1024下分別在CPU和GPU下 運行時間(s),對于CSF、TNRD、DnCNN和本文提出的DnDNN的CPU(左)和GPU(右)的運行時間Tab.3 Run time (in Seconds) on CPU (left) and GPU (right) of different methods on images of Size 256×256, 512×512 and 1024×1024 with Noise Level 25 for CSF,TNRD ,DnCNN and DnCNN
圖4描述的是本文的DnDNN在基于梯度優(yōu)化算法SGD,運用殘差學習方法以及改進的損失函數在噪聲強度為σ=25時模型訓練的PSNR值隨迭代周期的變化圖.從圖4可以看出,利用DnDNN方法訓練時,當迭代周期到18次左右時,PSNR值趨近于穩(wěn)定,為30.38 dB,其收斂速度非常快,訓練效果也非常好.
圖3 利用不同降噪方法得到的一張來自BSD68的噪聲水平為50的圖片的降噪結果Fig.3 The noise reduction result of a picture with a noise level of 50 from BSD68 obtained by different noise reduction methods
圖4 DnDNN模型下σ=25高斯降噪訓練收斂效果圖Fig.4 Training convergence effect diagram of σ=25 Gauss noise reduction under DnDNN model
除了降噪效果以外,模型的運行效率和收斂時間也是評價模型性能好壞的重要指標.表3給出了一些經典圖像降噪算法在噪聲級別為25,圖像尺寸大小分別為256×256、512×512和1024×1024下運行時間,從表中數據可知,DnDNN方法的運行效率BMD和TNRD方法稍低,與DnCNN-B方法相當,考慮到DnDNN方法具有盲降噪的優(yōu)點,本文提出的DnDNN方法仍然具有較高的計算效率.再考慮模型的收斂時間,由于DnDNN方法具有盲降噪性能,所以在對比模型的收斂時間時,DnDNN方法主要與DnCNN-B方法進行對比.從圖5可以看出,當迭代20個周期時,本文提出的DnDNN算法訓練結果趨于穩(wěn)定,此時的PSNR值為30.38 dB.本文提出的方法每一個迭代周期所用的時間為317 s,略高于DnCNN-B每一個迭代周期所用的時間(DnCNN-B每一個迭代周期用時301 s).但是本文方法的收斂時間要遠遠少于DnCNN-B的收斂時間,DnCNN-B大約迭代50次才趨近于收斂,收斂時間大約為14 932 s,DnDNN的收斂時間僅僅約為6 263 s.對大量圖像進行統(tǒng)計分析,本文方法收斂時間比DnCNN-B縮短了120%~138%.
圖5 DnCNN和DnDNN模型下 σ=25高斯降噪訓練收斂速度對比圖Fig.5 Comparison chart of convergence rate of σ=25 Gauss noise reduction training under DnCNN and DnDNN models
為了比較本文方法與DnCNN-B方法之間的圖像降噪效果,本文通過多組實驗來分析影響訓練收斂速度的因素.與收斂速度相關的網絡參數包括學習率、batch塊、步長、卷積層數以及損失函數.
圖6 幾種不同去噪方法在σ=25下的 高斯降噪訓練收斂速度對比圖Fig.6 Comparison of convergence rate of Gaussian noise reduction training under σ=25 for several different denoising methods
通過對影響訓練收斂速度的因素分別設置不同數值,本文分別對圖像去噪進行了5組實驗,其結果如圖6所示.
第1組實驗是DnCNN-B的方法,它使用L2正則化作為損失函數,batch大小為40×40,步長為10,初始學習率為0.001,卷積層數為17.當迭代30次后,學習率減小為原來的1/10.
第2組實驗與第四組實驗的網絡結構與DnCNN-B相同,只是對其參數設置進行了調整;第三組實驗是在DnCNN-B方法的基礎上在每個卷積層后面設置一個反卷積層,其余結構與DnCNN-B相同,具體設置如下所示:
第2組實驗為 Test 1方法,設置batch大小為40×40,步長為10,初始學習率為0.001,卷積層數為17.當每迭代10次后,學習率減小為原來的1/10.
第3組實驗為 Test 2方法,使用L2正則化作為損失函數,設置batch大小為30×30,步長為6,初始學習率為0.001,卷積和反卷積結層數為10,當每迭代10次后,學習率減小為原來的1/10.
第4組實驗為 Test 3方法,使用L2正則化作為損失函數,設置batch大小為30×30,步長為6,初始學習率為0.001,卷積層數為17.當迭代30次后,學習率減小為原來的1/10;
第5組實驗是本文提出的 DnDNN方法.在網絡結構中加入改進的損失函數和反卷積層的基礎上,設置batch大小為30×30,步長為6,初始學習率為0.001,層數為10.當每迭代10次后,學習率減小為原來的1/10.
從圖6可知,在5組實驗中,DnDNN降噪方法獲得了最好的去噪效果,當迭代20個周期時已經趨于穩(wěn)定.本文方法與DnCNN-B方法比較,其訓練收斂速度提高的主要貢獻為在原有的網絡結構中加入反卷積層,且應用改進后的損失函數計算圖像的殘差值.
本文在原有的深度殘差學習的網絡結構中,通過引入反卷積層和改進損失函數,提出了一種基于反卷積降噪神經網絡的圖像降噪算法.反卷積的引入提高了噪聲圖像殘差學習的質量和效率,對損失函數的優(yōu)化,則進一步加快訓練收斂速度,提高降噪效果.與針對特定圖像噪聲水平訓練得到的判別模型不同,本文提出的DnDNN算法具有較強的處理未知噪聲水平的能力.與DnCNN-B算法相比,在保證降噪效果和運行效率的情形下,本文算法的收斂時間大幅降低.