雷景生 閆晨陽 楊忠光
(上海電力大學(xué)計算機科學(xué)與技術(shù)學(xué)院 上海 200082)
隨著計算機技術(shù)和互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,人們的日常生活充滿著各種各樣的信息。調(diào)查研究發(fā)現(xiàn),在人類所有獲取的外界信息中,視覺系統(tǒng)獲取的占70%以上[1],因此對圖像信息的獲取、處理和使用顯得尤為重要。圖像去噪是一個圖像處理領(lǐng)域的重要研究課題,是在去除噪聲的同時盡量把圖像中的重要信息保留下來。數(shù)字圖像處理一般可分為基于空間域的處理與基于變換域的處理[2]?;诳臻g域的去噪方法是在原始圖像的像素灰度空間上作運算,對像素的灰度值直接進行處理。常用的方法有均值濾波、中值濾波、基于偏微分的圖像去噪等。中值濾波可以有效地濾除椒鹽噪聲;均值濾波適用于濾除高斯噪聲;基于變換域的去噪方法是先對源圖像作圖像變換,如傅里葉變換、小波變換等。
目前,國內(nèi)外學(xué)者已經(jīng)提出了很多圖像去噪的方法。去噪效果較好的BM3D(Block Matching and 3D)[2]算法是將圖像分為一定大小的塊,將具有相似特征的塊合并為三維數(shù)組,采用三維濾波的方法處理三維數(shù)組,進行逆變換后獲得降噪后的圖像。Burger等[3]提出MLP(Multilayer perceptron)模型,其將圖像預(yù)處理與多層感知器神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)模型結(jié)合。Schuler等[4]提出的算法將多層感知機MLP(Multilayer Perceptron)運用于圖像去噪。Chen等[5]提出了TNRD(Trainable Nonlinear Reaction Diffusion)模型,對稀疏編碼和迭代方法進行展開成為前向反饋網(wǎng)絡(luò),取得了很好的圖像去噪效果。
近年來的研究表明,自編碼器(Auto-Encoder,AE)作為深度學(xué)習(xí)中一個典型代表,通過無監(jiān)督學(xué)習(xí),主要用來學(xué)習(xí)給定數(shù)據(jù)集的壓縮、分布式特征表達,從而重構(gòu)輸入數(shù)據(jù)[6]。在自編碼器的基礎(chǔ)上,衍生出多種自編碼器。Hinton等[7]改進原有淺層結(jié)構(gòu),提出深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的概念和訓(xùn)練策略,繼而產(chǎn)生了去噪自編碼器(Denoising Auto-Encoder,DAE)。Bengio等[8]提出稀疏自編碼器(Sparse Auto-Encoder,SAE)的概念。除此之外還有邊緣化去噪自編碼器(Marginalized Denoising Auto-Encoder,MDA)和棧式稀疏去噪自編碼器[9](Stacked Sparse Denoising Auto-Encoder,SSDA)。本文采用了基于卷積自編碼器的神經(jīng)網(wǎng)絡(luò)去噪模型,加快了網(wǎng)絡(luò)的運算速度。
圖像去噪是將含噪圖像進行處理并還原圖像的過程,本文使用輕量級的網(wǎng)絡(luò)結(jié)構(gòu)達到優(yōu)秀的去噪效果,采用四層卷積自編碼器的深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu),為了加快網(wǎng)絡(luò)訓(xùn)練速度,將數(shù)據(jù)集中的數(shù)據(jù)分割成20×20的大小,加入噪聲后按原圖像內(nèi)容分別存入不同的H5文件,以加快文件讀取速度,更好地完成網(wǎng)絡(luò)訓(xùn)練。
高斯噪聲是一種符合正態(tài)分布的隨機噪聲,也是最常見的噪聲分布,其公式如下:
(1)
T(h,w,c)=X(h,w,c)+k·Z
Z~N(μ,σ)
式中:Z是噪聲數(shù)據(jù),符合期望為μ和方差為σ的正態(tài)分布;k是噪聲強度;X(h,w,c)是圖像的像素。最后對加噪聲后的圖像像素取值進行限制,避免數(shù)據(jù)溢出[10]。本文采用噪聲等級為25的高斯噪聲數(shù)據(jù)集,對數(shù)據(jù)進行去噪實驗。原圖與噪聲圖的比較如圖1所示,本文在噪聲等級為25的基礎(chǔ)上對圖像噪聲進行去除。
(a) 原圖 (b) 噪聲圖圖1 原圖與噪聲圖的比較
受VGG Net和GoogLeNet等圖像處理算法的啟發(fā),將InceptionV3模塊用于提取圖像特征和圖像還原,并取得了良好的效果。 Inception模塊主要改進了網(wǎng)絡(luò)中的傳統(tǒng)卷積層,在增加網(wǎng)絡(luò)深度和寬度的同時減少參數(shù)。Inception模塊對同一輸入映射上的多個不同變換結(jié)果進行并行計算,將它們的結(jié)果連接成為一個輸出。使用Inception模塊有利于含噪圖像盡可能多地從不同大小卷積核提取特征信息,為模型網(wǎng)絡(luò)提供更好的泛化能力。因此本文在Inception基礎(chǔ)上進行了改進,將原有的卷積層修改為反卷積層作上采樣操作,使用小卷積核分別為1×1、3×3、5×5的組合降低特征圖像的通道維度,更好地還原特征圖像,使其更接近原圖。
與上采樣操作不同的是,本文使用兩層Inception模塊進行噪聲圖像去噪。但是這使得每一層特征映射的數(shù)量增加,計算成本大大增加。因此本文對Inception模塊做如下設(shè)置:
1) 將Inception每一個卷積層加入ReLU激活函數(shù),簡化了計算過程,活躍度的分散性使得Inception模塊計算成本下降。
2) 加入批量歸一化(Batch Normalization,BN)和隨機失活層(Dropout)。BN層可以讓Inception網(wǎng)絡(luò)的訓(xùn)練速度加快很多倍,提高網(wǎng)絡(luò)的泛化能力,使輸出規(guī)范化到N(0,1)的正態(tài)分布,減少了內(nèi)部神經(jīng)元的分布,產(chǎn)生更穩(wěn)定的非線性輸出。實驗過程中,發(fā)現(xiàn)只有BN層的操作時,訓(xùn)練的PSNR不穩(wěn)定,考慮非數(shù)據(jù)集和非驗證集的問題后,使用Dropout層來解決模型訓(xùn)練過程中出現(xiàn)的過擬合現(xiàn)象,結(jié)果發(fā)現(xiàn)使用Dropout層可以減少PSNR不穩(wěn)定的現(xiàn)象。Dropout在學(xué)習(xí)過程中將隱含層部分權(quán)重或輸出隨機歸零,降低了節(jié)點間的相互依賴性。
為了使去噪網(wǎng)絡(luò)模型能夠處理自然圖像,本文將每幅圖像的數(shù)據(jù)轉(zhuǎn)化為三維矩陣。將卷積自編碼器分成解碼器和編碼器,共有4層?;贗nception模塊的卷積自編碼器去噪網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。該網(wǎng)絡(luò)的優(yōu)點是利用自編碼器結(jié)構(gòu),在編碼層Encoder使用InceptionV3經(jīng)典結(jié)構(gòu)前兩層,在解碼層Decoder使用反卷積構(gòu)成Inception反卷積模塊,能更大程度地將編碼層提取的噪聲圖像特征進行深層次的還原,相較于一層反卷積能更好地還原原圖的特征。
圖2 卷積自編碼器去噪網(wǎng)絡(luò)結(jié)構(gòu)圖
1) 編碼層Encoder。
(1) 第一層:由五個不同尺度卷積層和一個平均池化層構(gòu)成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函數(shù)防止梯度消失,最后由Concat層進行連接,加入標準化BN層,使用Dropout防止過擬合。此時圖片輸出的通道數(shù)為64+64+64+32=224。
(2) 第二層:使用Inception V3中第二個模塊的結(jié)構(gòu)。Conv第一層為1×1×64;第二層為1×1×48、5×5×64;第三層為1×1×64、3×3×96,3×3×96;第四層為平均池化層,池化層大小為3×3,步長為1,后接一層卷積層,卷積核大小為1×1,通道數(shù)為32。最后由Concat層進行連接,加入標準化BN層,使用Dropout防止過擬合。經(jīng)過該層Inception模塊,輸出的圖片通道為64+64+96+32=256。
2) 解碼層:Decoder。
(1) 第一層:由改進Inception模塊使用反卷積實現(xiàn)上采樣層。由不同尺寸的反卷積層組成,分別為3×3×16、5×5×16、1×1×16,步長設(shè)置為2,使用Concat層連接。使用改進Inception模塊進行反卷積可以使特征更好地融合,此時圖片的形狀為20×20×64,加入BN層進行標準化操作。
(2) 第二層:使用反卷積實現(xiàn)上采樣層,使用上采樣層將解碼層的圖像進行還原,為了得到原圖一樣的大小,通過1層的上采樣進行實現(xiàn),將圖像恢復(fù)到原來的大小,此時圖片形狀為20×20×1。
綜上所述,為了增強圖像去噪的魯棒性,引入Inception模塊進行卷積操作,改進Inception模塊內(nèi)的卷積進行反卷積操作,更好地對噪聲圖像特征進行提取,使用ReLU函數(shù)防止梯度消失,引入BN和Dropout操作防止網(wǎng)絡(luò)過擬合,提升模型整體去噪性能,縮短訓(xùn)練時間。
使用該網(wǎng)絡(luò)進行圖像去噪的流程如圖3所示。隨著訓(xùn)練次數(shù)的增加,使用驗證集來評估模型是否過擬合,具體操作為:將節(jié)點數(shù)設(shè)置為500,通過訓(xùn)練集訓(xùn)練出相應(yīng)的參數(shù)后,由驗證集去檢測該模型的誤差,接著改變節(jié)點數(shù)。如果模型的誤差大于100%或者小于0%,則立即停止網(wǎng)絡(luò)并進行相應(yīng)的修改。
圖3 卷積自編碼器去噪網(wǎng)絡(luò)的訓(xùn)練流程
基于卷積自編碼器的圖像去噪實驗采用VOC2012數(shù)據(jù)集,由于該數(shù)據(jù)集非常龐大,因此從中隨機選取1 000幅圖像作為數(shù)據(jù)集,其中700幅為訓(xùn)練集,300幅為測試集。同時使用圖像去噪領(lǐng)域常用的10幅標準圖像作為對比實驗的參考圖像。VOC2012中的所有圖像均為彩色圖像,而本文用到的是灰度圖像,因此需要將彩色圖像轉(zhuǎn)換為灰度圖并添加噪聲等級為25的高斯噪聲。為了便于訓(xùn)練,將輸入圖片裁剪為20×20的子圖像塊,將裁剪好的圖片按原圖每5幅存入一個H5文件中,以便于模型讀取和訓(xùn)練。
實驗環(huán)境系統(tǒng)配置為Windows 10操作系統(tǒng),處理器為Intel Core i7-3370 CPU,內(nèi)存為8 GB。
使用峰值信噪比(Peak Signal to Noise Ratio,PSNR)和結(jié)構(gòu)相似度(Structural Similarity,SSIM)作為去噪評價指標,計算公式如下:
1) 均方誤差(MSE):
(4)
2) 峰值信噪比(PSNR):
(5)
式中:n為每像素的比特數(shù),一般取8,即像素灰階數(shù)為256,單位為dB。PSNR值越大,代表失真越少。
3) 結(jié)構(gòu)相似度(SSIM):
(6)
2.3.1Inception模塊對去噪性能影響
本文網(wǎng)絡(luò)大量使用Inception模塊對圖片進行特征提取,為了表現(xiàn)本文多個Inception結(jié)構(gòu)的特征提取能力,使用普通卷積自編碼器、一層Inception模塊和本文多個Inception模塊進行PSNR對比,實驗結(jié)果如圖4所示。對比實驗設(shè)置相同的解碼層,分別為3×3×32和3×3×1的反卷積層。編碼層采用兩層卷積層的結(jié)構(gòu),普通自編碼器使用兩個3×3的卷積層作為編碼層;一層Inception模塊使用本文中第一個Inception模塊,第二層使用3×3的卷積層;兩層Inception模塊則使用本文用到的模塊。使用相同的實驗環(huán)境和訓(xùn)練集,訓(xùn)練過程輸出訓(xùn)練PSNR??梢钥闯?,經(jīng)過500次訓(xùn)練,本文算法在訓(xùn)練過程中的PSNR值不斷上升,最高可達25 dB,而普通卷積自編碼器初始階段較差,前期驟升后期緩慢下降,最終在19 dB左右達到平緩;一層Inception前期波動后平緩上升,最終在21 dB左右達到平緩。而本文用到的兩層Inception模塊從一開始就優(yōu)于其他兩種方法,最終在23 dB左右達到平緩。綜上,訓(xùn)練次數(shù)越多,本文算法的穩(wěn)定性和魯棒性越好,因此展現(xiàn)出較優(yōu)的去噪結(jié)果。
圖4 不同編碼層對模型影響對比
2.3.2Inception反卷積模塊對去噪性能的影響
本文使用Inception反卷積對已提取的特征進行反饋,對比一層反卷積和Inception反卷積模塊對圖像去噪的影響。編碼層與本文編碼層一致,解碼層使用一層卷積核為3×3的反卷積層和本文Inception反卷積模塊進行對比實驗,實驗結(jié)果如圖5所示??梢钥闯?,前期訓(xùn)練普通一層反卷積比較穩(wěn)定,而Inception反卷積模塊則出現(xiàn)短暫波動,在后期的訓(xùn)練中使用Inception模塊比普通一層反卷積效果好,最終穩(wěn)定在24 dB左右。總體而言,使用Inception反卷積模塊效果更好。
圖5 使用一層反卷積和Inception反卷積模塊對比
為了驗證本文方法的魯棒性,選用10幅經(jīng)典測試圖像,與文獻[11]、文獻[12]和文獻[13]分別做對比實驗,PSNR與SSIM對比結(jié)果分別如表1和表2所示。文獻[11]和文獻[12]均使用深度卷積神經(jīng)網(wǎng)絡(luò)進行圖像去噪??梢钥闯?,本文算法表現(xiàn)出了較好的去噪效果,相比原圖,其PSNR平均提高11.088,SSIM平均提高0.451。文獻[11]和文獻[12]均使用5層深度卷積神經(jīng)網(wǎng)絡(luò),不同的是,文獻[11]前三層為卷積層,后兩層為反卷積層,而文獻[12]則使用5個卷積層進行去噪,本文相比于文獻[11]和文獻[12],PSNR分別提高4.813和1.361,SSIM分別提高0.050和0.019。文獻[13]使用一層Inception模塊和五層卷積層,在相同實驗環(huán)境下發(fā)現(xiàn)PSNR平均提高2.626,SSIM平均提高0.011。
原圖 噪聲圖 文獻[11]
表1 10幅圖像各方法峰值信噪比(PSNR)
表2 10幅圖像各方法結(jié)構(gòu)相似度(SSIM)
選取其中5幅圖像進行輸出對比,如圖6所示。可以看出,本文圖像視覺效果較好,邊緣較為清晰,通過細節(jié)可見本文去噪算法效果明顯,細節(jié)處理比較到位,更加清晰地展示了去噪后的圖像。
本文算法采用卷積自編碼器的結(jié)構(gòu),使用編碼層和解碼層結(jié)構(gòu),清晰地將網(wǎng)絡(luò)分成兩部分。其中編碼層使用多層Inception模塊進行特征提取,在解碼層則改進傳統(tǒng)Inception模塊,將卷積網(wǎng)絡(luò)修改為反卷積網(wǎng)絡(luò),使圖像在反卷積網(wǎng)絡(luò)中能充分利用Inception模塊特征提取的優(yōu)點,更好地整合圖像特征,恢復(fù)原始圖像信息。實驗結(jié)果表明,本文算法在圖像去噪中能表現(xiàn)出很好的魯棒性,但相較于無Inception模塊的卷積神經(jīng)網(wǎng)絡(luò)和卷積自編碼器,本文提出的四層網(wǎng)絡(luò)耗時較長,如何縮短模型訓(xùn)練的時間是今后研究的重點。