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