吳菁菁,馬敬檸,朱永貴
(中國傳媒大學(xué) 數(shù)據(jù)科學(xué)與智能媒體學(xué)院,北京 100024)
圖像復(fù)原旨在從退化圖像y 恢復(fù)干凈圖像x,其數(shù)學(xué)模型可表示為
其中:A 為退化矩陣;n 為加性噪聲,如圖1 所示。
圖1 圖像退化模型示意圖Fig.1 Image degradation model
如果A 是單位矩陣,那么圖像復(fù)原就是圖像去噪;A 是模糊矩陣,那么圖像復(fù)原就是帶有噪聲信息的去模糊問題。本文研究存在噪聲信息時(shí)的去模糊問題。
目前圖像去模糊的方法有基于最優(yōu)化模型的方法[1-3]和基于深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的方法[4-7]?;谧顑?yōu)化模型的方法為求解如下優(yōu)化問題:
其中J(x)是與噪聲先驗(yàn)信息有關(guān)的正則化項(xiàng)。該方法在處理含有較多非暗像素點(diǎn)的圖像時(shí)效果較差。
基于深度卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的圖像復(fù)原方法主要有快速超分神經(jīng)網(wǎng)絡(luò)(fast super-resolution convolutional neural networks,F(xiàn)SRCNN)[8]、深度卷積超分網(wǎng)絡(luò)(super-resolution using very deep convolutional networks,VDSR)[9]、增強(qiáng)深度超分(enhanced deep super-resolution,EDSR)[10]、可訓(xùn)練非線性擴(kuò)散(trainable nonlinear reaction diffusion,TNRD)[11]、去噪卷積神經(jīng)網(wǎng)絡(luò)(denoising convolutional neural networks,DnCNN)[12]和記憶網(wǎng)絡(luò)(memory network,Mem-Net)[13]。不同于這些方法,文獻(xiàn)[14-15]預(yù)先訓(xùn)練一組深度卷積神經(jīng)網(wǎng)絡(luò)模型,將其放入基于優(yōu)化的圖像復(fù)原框架中,來完成不同的圖像復(fù)原任務(wù)。文獻(xiàn)[14-15]給出的方法與基于最優(yōu)化模型方法相比,深度卷積神經(jīng)網(wǎng)絡(luò)集成模塊在挖掘大型數(shù)據(jù)集方面具有優(yōu)勢(shì),因此有較好的圖像復(fù)原效果?;谧詣?dòng)編碼器的圖像復(fù)原方法[16]也利用了類似的思想,將去噪自動(dòng)編碼器被預(yù)先訓(xùn)練為自然圖像的先驗(yàn)信息,然后提供一個(gè)基于預(yù)訓(xùn)練的自動(dòng)編碼器的正則化器。由此產(chǎn)生的最優(yōu)化問題通過梯度下降法迭代求解。這種方法雖然具有較好的復(fù)原效果,但由于需要迭代多次求解,導(dǎo)致計(jì)算效率較低。近年來也提出一些新的圖卷積網(wǎng)絡(luò)主動(dòng)學(xué)習(xí)方法[17-20],這些方法提高了圖像復(fù)原質(zhì)量,改進(jìn)了圖像復(fù)原性能。
基于深度卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的方法通過訓(xùn)練數(shù)據(jù)學(xué)習(xí)映射函數(shù),可以快速和靈活地處理含有非暗像素點(diǎn)的圖像,可以較好地復(fù)原圖像;然而由于該方法采用端到端的深度多尺度卷積網(wǎng)絡(luò),訓(xùn)練數(shù)據(jù)集小,網(wǎng)絡(luò)特定先驗(yàn)信息不能夠精準(zhǔn)獲取,使得特征信息沒有被充分地利用,從而導(dǎo)致去模糊效果不佳,同時(shí)由于數(shù)據(jù)似然項(xiàng)沒有被充分地利用,在處理不同的圖像復(fù)原任務(wù)時(shí)缺乏靈活性。
為了解決上述圖像去模糊效果差的問題,本文在雙層卷積神經(jīng)網(wǎng)絡(luò)去噪方法[21]和深度神經(jīng)網(wǎng)絡(luò)圖像超分方法[22]的基礎(chǔ)上提出了雙層卷積神經(jīng)網(wǎng)絡(luò)去噪模塊驅(qū)動(dòng)的圖像去模糊方法。將去模糊迭代過程展開成一個(gè)前饋神經(jīng)網(wǎng)絡(luò),通過端到端的學(xué)習(xí),使得網(wǎng)絡(luò)既有深度學(xué)習(xí)的高精度高運(yùn)算效率,又融合了去噪先驗(yàn)信息。
本節(jié)給出卷積神經(jīng)網(wǎng)絡(luò)去噪模塊驅(qū)動(dòng)的圖像去模糊方法與網(wǎng)絡(luò)。
通過引入輔助變量,可將式(2)改寫為
采用交替方向極小化(alternation direction method of multipliers,ADMM)技術(shù)將式(3)分裂成如下兩個(gè)子問題:
其中,u(t)表示增廣拉格朗日乘子,則
同時(shí),采用單步梯度下降法求解x(t+1)
算法1 對(duì)應(yīng)的網(wǎng)絡(luò)學(xué)習(xí)架構(gòu)如圖2 所示。
圖2 用于圖像去模糊的深層網(wǎng)絡(luò)架構(gòu)Fig.2 Deep network architecture for image deblurring
算法1圖像去模糊算法
給出初始的x(0),對(duì)于輸入的退化圖像y,首先通過退化矩陣A 參數(shù)化的線性層,將x(0)輸入到去噪模塊和矩陣參數(shù)化的線性層,由δ1加權(quán)的去噪信號(hào)v(1)加上線性層的輸出和由δ1η1加權(quán)的ATy通過短連接來獲取更新后的x(1)。去噪模塊結(jié)構(gòu)如圖3 所示。按照這樣的過程重復(fù)T 次,在實(shí)驗(yàn)中取T=6,權(quán)重δtηt,t=1,2,…,T 就可以通過端到端的訓(xùn)練學(xué)習(xí)得到一個(gè)收斂的圖像去模糊模塊,用于測(cè)試一些模糊圖像集。
圖3 雙層卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖Fig.3 Structure of double layer convolution neural network
不同于其他去噪器,本文給出的是一個(gè)雙層卷積神經(jīng)網(wǎng)絡(luò)去噪方法。該網(wǎng)絡(luò)去噪方法有兩個(gè)優(yōu)點(diǎn):第一可以靈活地處理各種噪聲水平;第二可以通過GPU 并行處理技術(shù)提高計(jì)算速度。
圖3 表示的是雙層卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。網(wǎng)絡(luò)的輸入為一張大小為W×H×C 的隨機(jī)噪聲原始圖像。W、H、C 分別為圖像的寬度、高度和通道數(shù)。在訓(xùn)練的每一階段,噪聲水平在0~75 dB 之間可以隨機(jī)選擇,這樣就可以使網(wǎng)絡(luò)能夠處理不同噪聲水平的圖像。
圖像被復(fù)制成兩個(gè)副本,分別輸入到兩個(gè)子網(wǎng)絡(luò)中。頂部網(wǎng)絡(luò)由17 層組成。第一層為“Conv +Leaky ReLU”,最后一層為“Conv”,中間層為“Conv +BRN+Leaky ReLU”。使用3×3 的卷積核得到局部特征。底部網(wǎng)絡(luò)仍然是17 層,由“Conv+BRN +Leaky ReLU”、“擴(kuò)張Conv+Leaky ReLU”和“Conv”3個(gè)不同區(qū)塊組成。第1、9、16 層為“Conv+BRN+Leaky ReLU”,第2—8、10—15 層為“擴(kuò)張Conv+Leaky Re LU”,最后一層為“Conv”。卷積核為3×3,擴(kuò)張速率為2。頂部網(wǎng)絡(luò)與底部網(wǎng)絡(luò)都是4 個(gè)輸出通道,通過融合級(jí)聯(lián)組合成8 通道輸出,再通過卷積轉(zhuǎn)化為4個(gè)通道,通過上采樣形成殘差圖像,最后通過輸入噪聲圖像減去這部分殘差得到去模糊圖像。上述雙層卷積神經(jīng)網(wǎng)絡(luò)去噪模塊具有以下優(yōu)點(diǎn):1)通過普通卷積和擴(kuò)張卷積的交替使用而獲得多種特性;2)兩個(gè)子網(wǎng)增加了網(wǎng)絡(luò)的寬度,提高了去噪性能;3)BRN 解決了小的批問題,其效果比BN 更好;4)Leaky ReLU 的使用解決了ReLU 的一些缺陷;5)采用隨機(jī)噪聲的訓(xùn)練方法使網(wǎng)絡(luò)對(duì)噪聲處理更加靈活。
本文使用的是損失函數(shù)(mean square error,MSE)
其中:θ 為參數(shù);N 為噪聲圖像塊的個(gè)數(shù);yi為第i 個(gè)噪聲圖像塊;xi為第i 個(gè)原圖像塊。圖像的不同區(qū)域具有不同的結(jié)構(gòu)信息,噪聲圖像塊比整個(gè)噪聲圖像更容易用于學(xué)習(xí)特定位置的特征。
本文所用到的Adam 算法是通過最小化上述損失函數(shù),然后對(duì)雙層卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化。我們首先設(shè)定了一個(gè)學(xué)習(xí)速率,它隨著訓(xùn)練錯(cuò)誤的減少而減少,其中Adam 的其他參數(shù)設(shè)置為默認(rèn)值。
采用ImageNet 數(shù)據(jù)集中的400 張BSD 圖像作為網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù)集,采用標(biāo)準(zhǔn)測(cè)試數(shù)據(jù)集Set10 作為網(wǎng)絡(luò)測(cè)試數(shù)據(jù)集。訓(xùn)練過程中,學(xué)習(xí)率隨時(shí)間從1×10-4下降到1×10-6。網(wǎng)絡(luò)的訓(xùn)練與測(cè)試基于Python 3.7,其中CPU 型號(hào)為Intel(R)Xeon(R)Silver 4114,GPU 型號(hào)為NVIDIA TESLA V100。
為了顯示線性層初始化的效果,使用兩種初始化方法來實(shí)現(xiàn)文中給出的網(wǎng)絡(luò):一種為采用退化矩陣來初始化A;另一種為采用隨機(jī)方法初始化A。使用訓(xùn)練好的模型對(duì)數(shù)據(jù)集Set10 進(jìn)行去模糊處理。表1 列出了采用兩種方法初始化的去模糊后平均峰值去噪比(peak signal to noise ratio,PSNR)結(jié)果。從表1 可以看出,這兩種初始化方法對(duì)圖像去模糊結(jié)果相似,這表明網(wǎng)絡(luò)對(duì)初始化參數(shù)并不敏感。
表1 兩種初始化方法去模糊后的平均PSNR 值Tab.1 Average PSNR values for deblurred results via two initialization methods dB
我們還對(duì)去噪器初始化的影響進(jìn)行了消融研究,使用預(yù)先訓(xùn)練過的去噪器和隨機(jī)初始化的去噪器來實(shí)現(xiàn)所提出的網(wǎng)絡(luò)。表2 給出了本文方法對(duì)圖像去模糊的平均PSNR 值結(jié)果,可以看出去噪器的這兩種初始化方法也能得到與表1 中相類似的結(jié)果。上述兩項(xiàng)消融研究表明本文所提出的網(wǎng)絡(luò)對(duì)參數(shù)的初始化不敏感。這是因?yàn)榫W(wǎng)絡(luò)參數(shù)的數(shù)量是可控的,能夠讓每個(gè)去噪器共享相同的參數(shù)。
表2 本文方法對(duì)圖像去模糊的平均PSNR 值Tab.2 Average PSNR values for deblurred results via this paper method dB
為了訓(xùn)練圖像去模糊網(wǎng)絡(luò),首先將圖像裁取成大小為120×120 的圖像訓(xùn)練補(bǔ)丁,使用模糊核對(duì)它們進(jìn)行卷積并生成模糊圖像。在模糊圖像中加入標(biāo)準(zhǔn)差σn的加性高斯噪聲。采用翻轉(zhuǎn)和旋轉(zhuǎn)裁取后的小塊擴(kuò)充方法,生成45 萬個(gè)小塊用于訓(xùn)練。文中考慮了兩種類型的模糊核,即標(biāo)準(zhǔn)差為1.6 的25 ×25 的高斯模糊核和兩個(gè)大小分別為19×19 和17 ×17 的運(yùn)動(dòng)模糊核,然后針對(duì)不同的模糊設(shè)置訓(xùn)練每個(gè)模型。將文中提出的方法與塊期望對(duì)數(shù)似然(expected patch log likelihood,EPLL)[23]、迭代解耦去模糊三維塊區(qū)配(iterative decoupled deblurring BM3D,IDDBM3D)[24]、非局部中心化稀疏表示(nonlocally centralized sparse representation,NCSR)[25]、MemNet[13]、深度去噪卷積神經(jīng)網(wǎng)絡(luò)(deep denoiser convolutional neural network,DDCNN)[14]及去噪先驗(yàn)深度神經(jīng)網(wǎng)絡(luò)(denoising prior deep neural network,DPDNN)方法[26]等當(dāng)前主流的基于模型的去模糊方法進(jìn)行了比較。測(cè)試圖像集是Set10,如圖4 所示。該方法也可以推廣用于彩色圖像的去模糊,下一階段的研究工作重點(diǎn)將放在彩色圖像的去模糊方法研究。
圖4 用于圖像去模糊的測(cè)試圖像Fig.4 Test images for image deblurring
采用訓(xùn)練好的模型對(duì)測(cè)試圖像進(jìn)行測(cè)試,測(cè)試結(jié)果的PSNR 值結(jié)果見表3。從表3 可以看出,本文提出的方法對(duì)每幅圖像去模糊后得到的PSNR 平均值均高于EPLL、IDDBM3D、NCSR、MemNet 和DPDNN方法,說明本文所提方法的應(yīng)用效果更好。
表3 采用不同方法對(duì)模糊圖像進(jìn)行測(cè)試得到的PSNR 值Tab.3 PSNR values tested with various methods for blurring images dB
為了進(jìn)一步驗(yàn)證算法和網(wǎng)絡(luò)的有效性,我們針對(duì)測(cè)試圖像又計(jì)算得到各個(gè)方法的模糊圖像和修復(fù)圖像的平均結(jié)構(gòu)相似性圖像度量(structural similarity image measurement,SSIM)值,其結(jié)果如表4 所示。從表4 可以看出,本文所提的方法與其他方法相比,具有更好的去模糊性能。從主觀視覺效果來看,本文提出的方法不僅產(chǎn)生了更清晰的邊緣,而且恢復(fù)了更多的細(xì)節(jié)。圖5 顯示的是模糊核為19×19 的圖像去模糊結(jié)果,可以看出很多細(xì)節(jié)信息已被恢復(fù)。其網(wǎng)絡(luò)訓(xùn)練時(shí)對(duì)應(yīng)loss 值和PSNR值及SSIM 值的變化曲線如圖6 所示,說明本文給出的去模糊網(wǎng)絡(luò)具有很好的收斂性和穩(wěn)定性。
圖5 模糊核為19×19 的圖像去模糊結(jié)果Fig.5 The deblurring results for 19×19 blurring kernel
圖6 模糊核為19×19 的圖像去模糊的loss 值、PSNR 值和SSIM 值的變化Fig.6 Curves of loss,PSNR and SSIM for 19×19 blurring kernel
表4 模糊圖像與修復(fù)圖像的平均SSIM 值Tab.4 Average SSIM values of blurred and repaired images
本文提出了一種雙層卷積深度神經(jīng)網(wǎng)絡(luò)去噪模型驅(qū)動(dòng)的圖像去模糊方法。通過擴(kuò)張卷積網(wǎng)絡(luò)來增加網(wǎng)絡(luò)的寬度增強(qiáng)去噪網(wǎng)絡(luò)的學(xué)習(xí)能力;采用批再歸一化,解決小批量問題,通過Leaky ReLU 方法克服ReLU 缺陷;采用隨機(jī)噪聲的選取增加網(wǎng)絡(luò)處理噪聲的靈活性。通過端到端的訓(xùn)練,將去噪模塊和BP 模塊同時(shí)優(yōu)化,使圖像去模糊取得更好的效果。實(shí)驗(yàn)結(jié)果表明本文提出方法的圖像復(fù)原效果優(yōu)于其他主流的圖像去模糊方法。