張曉凱,楊鴻波,楊明浩,張 洋
(1.北京信息科技大學(xué) 自動化學(xué)院,北京 100192;2.中國科學(xué)院 自動化研究所,北京 100190)
運(yùn)動模糊是拍照時最常見的偽像類型之一,相機(jī)抖動和目標(biāo)物體快速運(yùn)動都會引起圖像運(yùn)動模糊,消除模糊成為研究熱點(diǎn)。在深度學(xué)習(xí)之前,傳統(tǒng)的去模糊方法主要采用各種約束或正則化來逼近運(yùn)動模糊核,這會涉及復(fù)雜的非線性優(yōu)化[1],而且從模糊圖像復(fù)原清晰圖像是個病態(tài)的過程,往往要引入先驗知識[2]來進(jìn)行約束。此外,模糊核估計過程對噪聲和飽和度異常敏感導(dǎo)致對模糊核的假設(shè)過于嚴(yán)格,這也讓圖像去模糊變得復(fù)雜與困難。Pan等[3]提出基于正則化先驗圖像去模糊算法,通過尋找模糊圖像的顯著邊緣達(dá)到去除圖像偽影的方式恢復(fù)圖像的質(zhì)量。Yan等[4]在此基礎(chǔ)上提出預(yù)測反卷積傅里葉系數(shù)來估計全局模糊核的方法,使得圖像復(fù)原過程有更強(qiáng)的魯棒性。
無論是基于先驗知識約束還是正則化的圖像去模糊方法,都需要大量參數(shù)調(diào)整和迭代優(yōu)化計算,如果去模糊建模假設(shè)過于簡單會影響圖像復(fù)原質(zhì)量,而過于復(fù)雜又會使適應(yīng)性變差。
近年來,基于深度卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)[5]的方法在去模糊領(lǐng)域取得了巨大的成功。Sun等[6]提出基于卷積神經(jīng)網(wǎng)絡(luò)來估計模糊核的方法,實(shí)現(xiàn)運(yùn)動圖像去模糊。Nah等[7]采用端到端的方式提出多尺度CNN去模糊模型,模仿傳統(tǒng)的從粗到精的優(yōu)化方法,極大地增加收斂性,在動態(tài)場景圖像去模糊中取得了顯著的成果。除此之外,生成對抗網(wǎng)絡(luò)(generative adversarial network,GAN)[8]在圖像重建和圖像復(fù)原領(lǐng)域展示了巨大的影響力。SRGAN[9]提出基于生成對抗網(wǎng)絡(luò)進(jìn)行圖像超分辨重建的方法,生成的圖像保留了更多的細(xì)節(jié)信息,使圖像在視覺上更精細(xì)更真實(shí)。
受GAN啟發(fā),本文設(shè)計了一種多尺度深度自編碼的生成器,該生成器通過在編碼和解碼過程中添加跳層鏈接,不僅解決了在圖像重建過程中特征信息丟失等問題,還加強(qiáng)了圖像顯著邊緣結(jié)構(gòu)。將該生成器引入到GAN中,通過采用端到端的方式使生成圖像和清晰圖像在視覺感官上更接近。實(shí)驗結(jié)果表明,該方法能有效改善運(yùn)動模糊圖像的質(zhì)量,得到去除運(yùn)動模糊的清晰圖像。
圖像模糊的數(shù)學(xué)模型可以表示為
B=k(M)?S+N
(1)
式中:B為模糊圖像;k(M)為由運(yùn)動M產(chǎn)生的模糊核;S為清晰原圖;N為引入噪聲;?為二維卷積運(yùn)算。一般模糊圖像可以認(rèn)為是清晰圖像和模糊核卷積加上隨機(jī)噪聲所得到的,圖像去模糊可以簡化為模糊圖像B反卷積求清晰圖像S的過程。圖像去模糊早期工作更多關(guān)注模糊核,根據(jù)模糊核k(M)是否已知分為非盲去模糊和盲去模糊兩大類。非盲去模糊,即模糊核k(M)已知,通過維納(Wiener)或者正則化(Tikhonov)濾波器進(jìn)行反卷積得到清晰圖像S。而盲去模糊,模糊核是未知的,需要同時估計模糊核k(M)和清晰圖像S。實(shí)際上,模糊核通常是復(fù)雜且不均勻的,錯誤的核估計會直接影響圖像復(fù)原的質(zhì)量,容易產(chǎn)生振鈴偽影現(xiàn)象。
(2)
式中:V(D,G)為真實(shí)樣本和生成樣本的差異;Pr為真實(shí)樣本分布;Pf為假樣本分布;E為N個樣本概率分布的期望。上述過程可表述為:固定G時,D盡可能地判別出所有的假樣本;在固定D時,G最小化生成樣本和真實(shí)樣本的差異。
深度自編碼網(wǎng)絡(luò)是基于Encode-Decode結(jié)構(gòu)的CNN網(wǎng)絡(luò),它能夠很好地學(xué)習(xí)到非線性特征,在特征提取及去噪中起到非常重要的作用。如圖1所示,深度自編碼網(wǎng)絡(luò)分為編碼結(jié)構(gòu)(Encoder)和解碼結(jié)構(gòu)(Decoder)兩部分。編碼結(jié)構(gòu)中,輸入數(shù)據(jù)通過網(wǎng)絡(luò)結(jié)構(gòu)轉(zhuǎn)換為特征圖,特征圖再經(jīng)過卷積和下采樣得到多層隱含特征信息(空間信息,語義信息)。解碼結(jié)構(gòu)中,根據(jù)編碼的有效特征信息經(jīng)過上采樣和卷積得到輸入數(shù)據(jù)重構(gòu)的特征信息。
圖1 深度自編碼卷積網(wǎng)絡(luò)示意圖
編碼結(jié)構(gòu)和解碼結(jié)構(gòu)可以分別表示為:
He(x)=Encode(x;ΦE)
(3)
Hd(x)=Decode(He(x);ΦD)
(4)
式中:Encode()為編碼網(wǎng)絡(luò)結(jié)構(gòu);Decode()為解碼網(wǎng)絡(luò)結(jié)構(gòu);ΦE和ΦD分別為編碼結(jié)構(gòu)和解碼結(jié)構(gòu)中的網(wǎng)絡(luò)參數(shù);He(x)和Hd(x)分別為編碼結(jié)構(gòu)和解碼結(jié)構(gòu)輸出。
本文基于GAN的原理實(shí)現(xiàn)圖像去運(yùn)動模糊,其核心思想是先將模糊圖像B輸入到生成器并將生成圖像和數(shù)據(jù)集中與模糊圖像配對的清晰圖像S一同輸入到判別器,訓(xùn)練相互對抗不斷優(yōu)化各自參數(shù)的神經(jīng)網(wǎng)絡(luò)。G的目標(biāo)是生成視覺上更接近S的清晰圖像G(B),即最小化G(B)和S的差異以混淆判別器;D的目標(biāo)是更準(zhǔn)確地辨別出S和G(B)。圖像去模糊總體模型框架如圖2所示。
圖2 圖像去模糊總體模型框架
基于深度自編碼卷積網(wǎng)絡(luò)的生成器通過對輸入圖像進(jìn)行編碼得到通道數(shù)更長的特征向量,而該特征向量在解碼過程中因數(shù)據(jù)重構(gòu)往往會缺失空間、內(nèi)容等有效信息。因此本文在深度自編碼卷積網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上,設(shè)計了如圖3所示的多尺度深度自編碼生成器。其一,添加同一維度跳層鏈接,不但加強(qiáng)特征空間、內(nèi)容信息在網(wǎng)絡(luò)層之間的傳遞,而且可有效地解決梯度消失等問題;其二,借鑒傳統(tǒng)圖像去模糊“粗到精”的思想,結(jié)合多尺度CNN模型結(jié)構(gòu)去運(yùn)動模糊。
圖3所示的多尺度深度自編碼生成器依次將圖像分為粗糙、中等、精細(xì)3個水平,分別記為Stage1、Stage2、Stage3。實(shí)驗表明精細(xì)和中等圖像特征信息更有利于粗糙圖像去運(yùn)動模糊。
記Si,j為第i階段、第j個卷積核尺寸為3×3的卷積層的輸出,即:
Si,j(xi,j)=BN[δ(ki,j?xi,j+bi,j)]
(5)
式中:xi,j為輸入的特征圖;ki,j為卷積核;bi,j為偏置項;δ為修正線性單元激活函數(shù)(ReLU);BN為批量正則化函數(shù)。將第i+1階段的解碼特征和第i階段的編碼特征進(jìn)行融合可表示為
(6)
本文對在同一階段不同尺寸特征圖分別使用跳層連接,目的主要是解決解碼過程上采樣特征信息丟失等問題。編碼其實(shí)是特征抽象過程,下采樣之前特征圖包含更多低級特征信息(邊界、輪廓),經(jīng)過下采樣后特征圖則包含更多高層抽象特征信息。相反解碼是抽象特征恢復(fù)過程,特征尺寸變化必然會導(dǎo)致信息丟失,而跳層連接起到補(bǔ)充信息的作用,在高層抽象特征補(bǔ)充語義信息,底層特征補(bǔ)充邊緣輪廓信息,經(jīng)跳層連接后同一階段特征融合可表示為
i=1,2,3
(7)
本文中下采樣使用2×2的最大池化層(Maxpooling),上采樣使用2×2的線性上采樣。通道數(shù)為256的特征圖采用改進(jìn)的殘差網(wǎng)絡(luò)塊Resblock,目的是提高網(wǎng)絡(luò)訓(xùn)練的收斂速度。通道數(shù)為128的特征圖中引入瓶頸層,即先用1×1大小的卷積核,再用3×3大小卷積核,最后用1×1大小的卷積核,目的是通過減少網(wǎng)絡(luò)參數(shù)來降低計算量。
判別器網(wǎng)絡(luò)模型不斷優(yōu)化生成器使生成圖像更接近真實(shí)圖像。該網(wǎng)絡(luò)主要有9個卷積層結(jié)構(gòu),每個卷積層都添加LReLU激活函數(shù),之后添加全連接層,最后添加Sigmoid激活函數(shù)將輸出映射到[0,1]之間,具體判別器網(wǎng)絡(luò)層次結(jié)構(gòu)如表1所示。
表1 判別器模型參數(shù)
損失函數(shù)用來指導(dǎo)模型訓(xùn)練,對訓(xùn)練效果起著關(guān)鍵作用。本文采用的GAN[8]損失函數(shù)由內(nèi)容損失和對抗損失兩大部分加權(quán)而成,表示為:
Ltotal=Lcont+λLadv
(8)
式中:Ltotal為總的損失;Lcont為內(nèi)容損失;Ladv為對抗損失;λ為對抗損失函數(shù)的權(quán)重,在本實(shí)驗中λ=1×10-3。對抗損失通過不斷優(yōu)化生成器和判別器使生成圖像更接近真實(shí)圖像,將其表示為
[log[1-D(G(B))]]
(9)
式中:psharp(S)為清晰圖像的分布;pblur(B)為模糊圖像的分布。該損失函數(shù)使得生成圖像在視覺效果上更真實(shí)。
在內(nèi)容損失上,本文采用多階段損失函數(shù)??紤]到Stage1模糊圖像和清晰圖像邊緣特征差異比較大,故在Stage1階段使用L1損失函數(shù),該函數(shù)利用L1梯度正則化[14]約束低頻特征細(xì)節(jié)信息,保留圖像更多邊緣信息和結(jié)構(gòu)細(xì)節(jié),將其表示為
(10)
本文在Stage2和Stage3使用L2損失損失函數(shù),該損失函數(shù)有助于解決圖像生成時高頻特征信息缺失等問題。相較于L1損失,該損失函數(shù)訓(xùn)練生成的圖像更符合自然圖像的整體分布,細(xì)節(jié)也更逼真,將其表示為
(11)
式中:Li為第i階段生成器模型的輸出;Si為第i階段清晰圖像;ci為第i階段通道數(shù);wi為第i階段寬;hi為第i階段高。最后,總損失函數(shù)定義為:
Ltotal=Lstage1+Lstage2+Lstage3+λLadv
(12)
本文實(shí)驗環(huán)境配置如表2所示。
表2 實(shí)驗環(huán)境配置
本次實(shí)驗采用公開的GOPRO數(shù)據(jù)集[5]和Kohler數(shù)據(jù)集[15]。GOPRO數(shù)據(jù)集是由Nal等用GOPRO4相機(jī)拍攝一系列連續(xù)視頻圖像累加高速視頻中的視頻幀,來模擬不同場景下運(yùn)動模糊圖像的產(chǎn)生過程。該數(shù)據(jù)集共包含3 214對模糊圖像和清晰圖像,其中訓(xùn)練集2 103對,測試集1 111對,每對圖像分辨率為1 280×720。Kohler數(shù)據(jù)集是標(biāo)準(zhǔn)的基準(zhǔn)數(shù)據(jù)集,該數(shù)據(jù)集可用于對非均勻去模糊模型進(jìn)行定性評估。該數(shù)據(jù)集總共有48張圖像,是由4張原始圖像經(jīng)過12種不同模糊核卷積得到,可用來評估算法去模糊的程度。
在GOPRO訓(xùn)練集上進(jìn)行測試前要將每對模糊圖像和清晰圖像隨機(jī)在相同位置裁剪出分辨率為256×256的圖像。首先進(jìn)行單階段訓(xùn)練:將裁剪后的圖像對送入Stage1階段,256×256圖像對下采樣為128×128圖像對后送入Stage2階段,128×128圖像對下采樣為64×64圖像對后送入Stage3階段,不同階段分別訓(xùn)練一個模型;然后進(jìn)行多階段訓(xùn)練,即Stage2階段和Stage3階段特征融合到Stage1階段。本次實(shí)驗采用Adam優(yōu)化器,將batchsize設(shè)為2,對抗損失權(quán)重λ設(shè)為1×10-3,梯度L1正則化權(quán)重β設(shè)為1×10-4,學(xué)習(xí)率設(shè)為5×10-3,在迭代訓(xùn)練3×104之后,學(xué)習(xí)率降為5×10-4,實(shí)驗總共迭代5×104次。
實(shí)驗采用峰值信噪比(peak signal to noise ratio,PSNR)和結(jié)構(gòu)相似度(structural similarity,SSIM)[16]評價算法有效性。
在GOPRO測試集上首先進(jìn)行單階段測試,即其他兩個階段未對該階段進(jìn)行特征共享的情況下,分別測試Stage1、Stage2和Stage3的PSNR和SSIM值。然后測試多階段特征共享后的PSNR和SSIM值,同時對比了不同階段圖像去運(yùn)動模糊的運(yùn)行時間。實(shí)驗結(jié)果如表3所示。
表3 不同階段去模糊性能
從表3可以看出,單階段中Stage2階段PSNR和SSIM值高于Stage1和Stage3階段,運(yùn)行時間上Stage3階段圖像復(fù)原耗時最短。
在GOPRO數(shù)據(jù)集中將本文方法與3種常用的去模糊算法進(jìn)行對比,性能指標(biāo)值和直觀效果圖分別如表4和圖4所示。Kim等[17]的算法基于傳統(tǒng)的圖像去運(yùn)動模糊方法,圖像復(fù)原結(jié)果存在明顯的失真現(xiàn)象,且圖像復(fù)原時間太久,不滿足實(shí)際場景應(yīng)用需求。Sun等[6]的算法基于卷積神經(jīng)網(wǎng)絡(luò)估計模糊核,這種方法適用于復(fù)原均勻運(yùn)動引起的模糊,但無法復(fù)原非均勻運(yùn)動引起的模糊,導(dǎo)致在復(fù)雜場景中去模糊后的圖像仍不清晰。Nah等[7]的算法基于多尺度CNN去模糊方法,相比較上述兩種算法無論是圖像復(fù)原質(zhì)量還是復(fù)原時間均有較大提升,但復(fù)原后圖像邊緣輪廓、局部細(xì)節(jié)仍不夠清晰。本文算法復(fù)原的圖像在視覺感官上更接近清晰圖像,且在邊緣細(xì)節(jié)上也有明顯改善。而且本文方法的PSNR和SSIM指標(biāo)均高于其他方法,且圖像復(fù)原時間更短。
表4 GOPRO測試集上不同方法去模糊性能
圖4 GOPRO測試集上各類算法去模糊結(jié)果對比
在Kohler數(shù)據(jù)集上,將原始圖像經(jīng)過幾種不同的模糊核卷積后得到不同的模糊圖像如圖5所示,然后采用本文算法對得到的模糊圖像去模糊,實(shí)驗結(jié)果如圖6所示。從兩圖對比可以看出,本文方法能夠較好地復(fù)原幾種不同的模糊圖像,對于在不同模糊圖像中失真嚴(yán)重的具體細(xì)節(jié)例如墻燈和門燈,本文方法均可達(dá)到不同程度去模糊的效果。實(shí)驗結(jié)果表明本文方法能有效改善運(yùn)動模糊圖像的質(zhì)量,得到去除運(yùn)動模糊的清晰圖像。
圖5 Kohler測試集上不同模糊核卷積后得到的模糊圖像
圖6 Kohler測試集上本文去模糊結(jié)果
本文基于生成對抗網(wǎng)絡(luò)提出一種高效的圖像去模糊的新方法。通過深度自編碼卷積網(wǎng)絡(luò)和多尺度特征融合機(jī)制設(shè)計了一種多尺度深度自編碼的生成器,減少了圖像復(fù)原過程中特征信息丟失等問題,重建出邊緣結(jié)構(gòu)更銳利、局部細(xì)節(jié)更豐富的清晰圖像。該網(wǎng)絡(luò)結(jié)構(gòu)簡單、網(wǎng)絡(luò)參數(shù)量少,采用端到端方式,既加快了網(wǎng)絡(luò)訓(xùn)練的收斂速度,又避免了模糊核估計帶來的困擾,縮短了圖像復(fù)原時間。在GOPRO數(shù)據(jù)集上,實(shí)驗結(jié)果表明,本文方法在評價指標(biāo)PSNR和SSIM上均取得了不錯效果,顯著提高了圖像復(fù)原質(zhì)量。本文方法為后續(xù)深度去模糊等相關(guān)工作提供了一種新思路,此外,本文方法還可以推廣到復(fù)雜場景目標(biāo)識別任務(wù)中,如水下目標(biāo)識別、無人機(jī)目標(biāo)識別等。