雷景生 閆晨陽 楊忠光
(上海電力大學計算機科學與技術學院 上海 200082)
隨著計算機技術和互聯網技術的飛速發展,人們的日常生活充滿著各種各樣的信息。調查研究發現,在人類所有獲取的外界信息中,視覺系統獲取的占70%以上[1],因此對圖像信息的獲取、處理和使用顯得尤為重要。圖像去噪是一個圖像處理領域的重要研究課題,是在去除噪聲的同時盡量把圖像中的重要信息保留下來。數字圖像處理一般可分為基于空間域的處理與基于變換域的處理[2]。基于空間域的去噪方法是在原始圖像的像素灰度空間上作運算,對像素的灰度值直接進行處理。常用的方法有均值濾波、中值濾波、基于偏微分的圖像去噪等。中值濾波可以有效地濾除椒鹽噪聲;均值濾波適用于濾除高斯噪聲;基于變換域的去噪方法是先對源圖像作圖像變換,如傅里葉變換、小波變換等。
目前,國內外學者已經提出了很多圖像去噪的方法。去噪效果較好的BM3D(Block Matching and 3D)[2]算法是將圖像分為一定大小的塊,將具有相似特征的塊合并為三維數組,采用三維濾波的方法處理三維數組,進行逆變換后獲得降噪后的圖像。Burger等[3]提出MLP(Multilayer perceptron)模型,其將圖像預處理與多層感知器神經網絡學習模型結合。Schuler等[4]提出的算法將多層感知機MLP(Multilayer Perceptron)運用于圖像去噪。Chen等[5]提出了TNRD(Trainable Nonlinear Reaction Diffusion)模型,對稀疏編碼和迭代方法進行展開成為前向反饋網絡,取得了很好的圖像去噪效果。
近年來的研究表明,自編碼器(Auto-Encoder,AE)作為深度學習中一個典型代表,通過無監督學習,主要用來學習給定數據集的壓縮、分布式特征表達,從而重構輸入數據[6]。在自編碼器的基礎上,衍生出多種自編碼器。Hinton等[7]改進原有淺層結構,提出深度學習神經網絡的概念和訓練策略,繼而產生了去噪自編碼器(Denoising Auto-Encoder,DAE)。Bengio等[8]提出稀疏自編碼器(Sparse Auto-Encoder,SAE)的概念。除此之外還有邊緣化去噪自編碼器(Marginalized Denoising Auto-Encoder,MDA)和棧式稀疏去噪自編碼器[9](Stacked Sparse Denoising Auto-Encoder,SSDA)。本文采用了基于卷積自編碼器的神經網絡去噪模型,加快了網絡的運算速度。
圖像去噪是將含噪圖像進行處理并還原圖像的過程,本文使用輕量級的網絡結構達到優秀的去噪效果,采用四層卷積自編碼器的深度學習網絡結構,為了加快網絡訓練速度,將數據集中的數據分割成20×20的大小,加入噪聲后按原圖像內容分別存入不同的H5文件,以加快文件讀取速度,更好地完成網絡訓練。
高斯噪聲是一種符合正態分布的隨機噪聲,也是最常見的噪聲分布,其公式如下:
(1)
T(h,w,c)=X(h,w,c)+k·Z
Z~N(μ,σ)
式中:Z是噪聲數據,符合期望為μ和方差為σ的正態分布;k是噪聲強度;X(h,w,c)是圖像的像素。最后對加噪聲后的圖像像素取值進行限制,避免數據溢出[10]。本文采用噪聲等級為25的高斯噪聲數據集,對數據進行去噪實驗。原圖與噪聲圖的比較如圖1所示,本文在噪聲等級為25的基礎上對圖像噪聲進行去除。

(a) 原圖 (b) 噪聲圖圖1 原圖與噪聲圖的比較
受VGG Net和GoogLeNet等圖像處理算法的啟發,將InceptionV3模塊用于提取圖像特征和圖像還原,并取得了良好的效果。 Inception模塊主要改進了網絡中的傳統卷積層,在增加網絡深度和寬度的同時減少參數。Inception模塊對同一輸入映射上的多個不同變換結果進行并行計算,將它們的結果連接成為一個輸出。使用Inception模塊有利于含噪圖像盡可能多地從不同大小卷積核提取特征信息,為模型網絡提供更好的泛化能力。因此本文在Inception基礎上進行了改進,將原有的卷積層修改為反卷積層作上采樣操作,使用小卷積核分別為1×1、3×3、5×5的組合降低特征圖像的通道維度,更好地還原特征圖像,使其更接近原圖。
與上采樣操作不同的是,本文使用兩層Inception模塊進行噪聲圖像去噪。但是這使得每一層特征映射的數量增加,計算成本大大增加。因此本文對Inception模塊做如下設置:
1) 將Inception每一個卷積層加入ReLU激活函數,簡化了計算過程,活躍度的分散性使得Inception模塊計算成本下降。
2) 加入批量歸一化(Batch Normalization,BN)和隨機失活層(Dropout)。BN層可以讓Inception網絡的訓練速度加快很多倍,提高網絡的泛化能力,使輸出規范化到N(0,1)的正態分布,減少了內部神經元的分布,產生更穩定的非線性輸出。實驗過程中,發現只有BN層的操作時,訓練的PSNR不穩定,考慮非數據集和非驗證集的問題后,使用Dropout層來解決模型訓練過程中出現的過擬合現象,結果發現使用Dropout層可以減少PSNR不穩定的現象。Dropout在學習過程中將隱含層部分權重或輸出隨機歸零,降低了節點間的相互依賴性。
為了使去噪網絡模型能夠處理自然圖像,本文將每幅圖像的數據轉化為三維矩陣。將卷積自編碼器分成解碼器和編碼器,共有4層?;贗nception模塊的卷積自編碼器去噪網絡結構如圖2所示。該網絡的優點是利用自編碼器結構,在編碼層Encoder使用InceptionV3經典結構前兩層,在解碼層Decoder使用反卷積構成Inception反卷積模塊,能更大程度地將編碼層提取的噪聲圖像特征進行深層次的還原,相較于一層反卷積能更好地還原原圖的特征。

圖2 卷積自編碼器去噪網絡結構圖
1) 編碼層Encoder。
(1) 第一層:由五個不同尺度卷積層和一個平均池化層構成Inception模塊,擴大卷積自編碼器的寬度,使用多個卷積核提取圖像不同尺寸的信息進行融合,可以得到圖像更好的表征。卷積層第一層為5×5×32、1×1×64,圖片輸出通道為64;第二層為3×3×64,圖片輸出通道為64;第三層為1×1×64,圖片輸出通道為64;第四層為平均池化層,步長為1,池化層為3×3,后接一個1×1×32的卷積層,圖片輸出通道為32。每層輸入加入標準化,Padding均為SAME使用ReLU函數防止梯度消失,最后由Concat層進行連接,加入標準化BN層,使用Dropout防止過擬合。此時圖片輸出的通道數為64+64+64+32=224。
(2) 第二層:使用Inception V3中第二個模塊的結構。Conv第一層為1×1×64;第二層為1×1×48、5×5×64;第三層為1×1×64、3×3×96,3×3×96;第四層為平均池化層,池化層大小為3×3,步長為1,后接一層卷積層,卷積核大小為1×1,通道數為32。最后由Concat層進行連接,加入標準化BN層,使用Dropout防止過擬合。經過該層Inception模塊,輸出的圖片通道為64+64+96+32=256。
2) 解碼層:Decoder。
(1) 第一層:由改進Inception模塊使用反卷積實現上采樣層。由不同尺寸的反卷積層組成,分別為3×3×16、5×5×16、1×1×16,步長設置為2,使用Concat層連接。使用改進Inception模塊進行反卷積可以使特征更好地融合,此時圖片的形狀為20×20×64,加入BN層進行標準化操作。
(2) 第二層:使用反卷積實現上采樣層,使用上采樣層將解碼層的圖像進行還原,為了得到原圖一樣的大小,通過1層的上采樣進行實現,將圖像恢復到原來的大小,此時圖片形狀為20×20×1。
綜上所述,為了增強圖像去噪的魯棒性,引入Inception模塊進行卷積操作,改進Inception模塊內的卷積進行反卷積操作,更好地對噪聲圖像特征進行提取,使用ReLU函數防止梯度消失,引入BN和Dropout操作防止網絡過擬合,提升模型整體去噪性能,縮短訓練時間。
使用該網絡進行圖像去噪的流程如圖3所示。隨著訓練次數的增加,使用驗證集來評估模型是否過擬合,具體操作為:將節點數設置為500,通過訓練集訓練出相應的參數后,由驗證集去檢測該模型的誤差,接著改變節點數。如果模型的誤差大于100%或者小于0%,則立即停止網絡并進行相應的修改。

圖3 卷積自編碼器去噪網絡的訓練流程
基于卷積自編碼器的圖像去噪實驗采用VOC2012數據集,由于該數據集非常龐大,因此從中隨機選取1 000幅圖像作為數據集,其中700幅為訓練集,300幅為測試集。同時使用圖像去噪領域常用的10幅標準圖像作為對比實驗的參考圖像。VOC2012中的所有圖像均為彩色圖像,而本文用到的是灰度圖像,因此需要將彩色圖像轉換為灰度圖并添加噪聲等級為25的高斯噪聲。為了便于訓練,將輸入圖片裁剪為20×20的子圖像塊,將裁剪好的圖片按原圖每5幅存入一個H5文件中,以便于模型讀取和訓練。
實驗環境系統配置為Windows 10操作系統,處理器為Intel Core i7-3370 CPU,內存為8 GB。
使用峰值信噪比(Peak Signal to Noise Ratio,PSNR)和結構相似度(Structural Similarity,SSIM)作為去噪評價指標,計算公式如下:
1) 均方誤差(MSE):
(4)

2) 峰值信噪比(PSNR):
(5)
式中:n為每像素的比特數,一般取8,即像素灰階數為256,單位為dB。PSNR值越大,代表失真越少。
3) 結構相似度(SSIM):
(6)

2.3.1Inception模塊對去噪性能影響
本文網絡大量使用Inception模塊對圖片進行特征提取,為了表現本文多個Inception結構的特征提取能力,使用普通卷積自編碼器、一層Inception模塊和本文多個Inception模塊進行PSNR對比,實驗結果如圖4所示。對比實驗設置相同的解碼層,分別為3×3×32和3×3×1的反卷積層。編碼層采用兩層卷積層的結構,普通自編碼器使用兩個3×3的卷積層作為編碼層;一層Inception模塊使用本文中第一個Inception模塊,第二層使用3×3的卷積層;兩層Inception模塊則使用本文用到的模塊。使用相同的實驗環境和訓練集,訓練過程輸出訓練PSNR。可以看出,經過500次訓練,本文算法在訓練過程中的PSNR值不斷上升,最高可達25 dB,而普通卷積自編碼器初始階段較差,前期驟升后期緩慢下降,最終在19 dB左右達到平緩;一層Inception前期波動后平緩上升,最終在21 dB左右達到平緩。而本文用到的兩層Inception模塊從一開始就優于其他兩種方法,最終在23 dB左右達到平緩。綜上,訓練次數越多,本文算法的穩定性和魯棒性越好,因此展現出較優的去噪結果。

圖4 不同編碼層對模型影響對比
2.3.2Inception反卷積模塊對去噪性能的影響
本文使用Inception反卷積對已提取的特征進行反饋,對比一層反卷積和Inception反卷積模塊對圖像去噪的影響。編碼層與本文編碼層一致,解碼層使用一層卷積核為3×3的反卷積層和本文Inception反卷積模塊進行對比實驗,實驗結果如圖5所示。可以看出,前期訓練普通一層反卷積比較穩定,而Inception反卷積模塊則出現短暫波動,在后期的訓練中使用Inception模塊比普通一層反卷積效果好,最終穩定在24 dB左右??傮w而言,使用Inception反卷積模塊效果更好。

圖5 使用一層反卷積和Inception反卷積模塊對比
為了驗證本文方法的魯棒性,選用10幅經典測試圖像,與文獻[11]、文獻[12]和文獻[13]分別做對比實驗,PSNR與SSIM對比結果分別如表1和表2所示。文獻[11]和文獻[12]均使用深度卷積神經網絡進行圖像去噪??梢钥闯觯疚乃惴ū憩F出了較好的去噪效果,相比原圖,其PSNR平均提高11.088,SSIM平均提高0.451。文獻[11]和文獻[12]均使用5層深度卷積神經網絡,不同的是,文獻[11]前三層為卷積層,后兩層為反卷積層,而文獻[12]則使用5個卷積層進行去噪,本文相比于文獻[11]和文獻[12],PSNR分別提高4.813和1.361,SSIM分別提高0.050和0.019。文獻[13]使用一層Inception模塊和五層卷積層,在相同實驗環境下發現PSNR平均提高2.626,SSIM平均提高0.011。

原圖 噪聲圖 文獻[11]

表1 10幅圖像各方法峰值信噪比(PSNR)

表2 10幅圖像各方法結構相似度(SSIM)
選取其中5幅圖像進行輸出對比,如圖6所示。可以看出,本文圖像視覺效果較好,邊緣較為清晰,通過細節可見本文去噪算法效果明顯,細節處理比較到位,更加清晰地展示了去噪后的圖像。
本文算法采用卷積自編碼器的結構,使用編碼層和解碼層結構,清晰地將網絡分成兩部分。其中編碼層使用多層Inception模塊進行特征提取,在解碼層則改進傳統Inception模塊,將卷積網絡修改為反卷積網絡,使圖像在反卷積網絡中能充分利用Inception模塊特征提取的優點,更好地整合圖像特征,恢復原始圖像信息。實驗結果表明,本文算法在圖像去噪中能表現出很好的魯棒性,但相較于無Inception模塊的卷積神經網絡和卷積自編碼器,本文提出的四層網絡耗時較長,如何縮短模型訓練的時間是今后研究的重點。