顧軍華,李 巖,陳 晨,牛炳鑫*,李春杰
(1.河北工業(yè)大學(xué)人工智能與數(shù)據(jù)科學(xué)學(xué)院,天津 300401;2.河北省大數(shù)據(jù)計(jì)算重點(diǎn)實(shí)驗(yàn)室(河北工業(yè)大學(xué)),天津 300401;3.河北高速公路集團(tuán)有限公司,石家莊 050000)
圖像去模糊方法一般是嘗試通過(guò)去除模糊偽影來(lái)將模糊圖片恢復(fù)成清晰圖像。圖像中的模糊現(xiàn)象受到許多因素的影響,如快速運(yùn)動(dòng)的物體、失焦、抖動(dòng)等。由于圖像去模糊是一種不適定問(wèn)題,從模糊圖像恢復(fù)到清晰圖像是一個(gè)比較具有挑戰(zhàn)性的任務(wù)?;谀:斯烙?jì)的模型[1,2]一般是同時(shí)估計(jì)模糊圖像的模糊核及其清晰圖像。但模糊核估計(jì)方法對(duì)噪聲比較敏感且目前的模糊核估計(jì)方法適應(yīng)情況少?,F(xiàn)實(shí)世界中大多數(shù)運(yùn)動(dòng)模糊情況都屬于不均勻運(yùn)動(dòng)模糊,如十字路口一類的動(dòng)態(tài)場(chǎng)景,會(huì)有多個(gè)物體以不同幅度向不同方向運(yùn)動(dòng)。在圖像去模糊任務(wù)上,還有一類是端到端的方法,這一類方法無(wú)需估計(jì)模糊核。目前端到端的方法主要分有對(duì)抗和無(wú)對(duì)抗兩大類,其中大部分模型均使用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)進(jìn)行設(shè)計(jì)。
目前基于CNN 的去模糊模型研究也都是盡量增大感受野以提高模型的恢復(fù)效果。雖然可以通過(guò)堆疊卷積層來(lái)提升感受野范圍,但是堆疊過(guò)多的卷積層會(huì)增加參數(shù)量和計(jì)算量,并且更容易出現(xiàn)噪聲。為了解決以上問(wèn)題,本文提出了頻域Transformer 圖像去運(yùn)動(dòng)模糊模型。Transformer[3]的自注意力機(jī)制可以對(duì)自身及其他所有位置的像素來(lái)建立依賴關(guān)系,相當(dāng)于擁有全局感受野。對(duì)于去模糊任務(wù)而言,越大的感受野越容易處理劇烈的運(yùn)動(dòng)模糊情況。Dosovitskiy等[4]提出的視覺(jué) Transformer(vision transformer,ViT)模型證明了Transformer 在圖像領(lǐng)域的可行性,并且相對(duì)于CNN 網(wǎng)絡(luò)而言,Transformer 沒(méi)有歸納偏差問(wèn)題。Transformer雖然具有強(qiáng)大的表示能力,但是僅從空域?qū)用嫣幚韴D像還是不夠的,因此提出了空頻處理模塊(spatial frequency processing module,SFPM)。通過(guò)傅里葉變換將數(shù)據(jù)從空域轉(zhuǎn)換到頻域,利用頻率成分和空域圖像間的對(duì)應(yīng)關(guān)系,一些在空域難以表述的問(wèn)題在頻域就能迎刃而解。采用傅里葉變換轉(zhuǎn)換到頻域后通過(guò)其中的平行條紋很容易觀察到運(yùn)動(dòng)模糊的方向和大小,因此對(duì)頻域圖進(jìn)行分解操作可以充分利用運(yùn)動(dòng)模糊在頻域圖中所體現(xiàn)的方向性特征,從而更有效地恢復(fù)運(yùn)動(dòng)模糊。由于頻域是有限的頻率表示圖像,僅從頻域處理可能會(huì)損失某些信息,因此空域和頻域一同處理可以達(dá)到互補(bǔ)的目的。
端到端模型的目的是僅將模糊圖像Ib作為輸入來(lái)恢復(fù)清晰圖像,不需要模糊核。在訓(xùn)練階段,有兩個(gè)網(wǎng)絡(luò)需要訓(xùn)練,一個(gè)是鑒別器,用于區(qū)分生成的結(jié)果和真實(shí)的清晰圖像;另一個(gè)是生成器,對(duì)其輸入模糊圖片,并輸出一個(gè)足以騙過(guò)鑒別器的結(jié)果。
如圖1 所示,本文提出的網(wǎng)絡(luò)基于生成對(duì)抗網(wǎng)絡(luò),由生成器和鑒別器兩部分組成,以對(duì)抗方式進(jìn)行訓(xùn)練。
圖1 模型整體架構(gòu)
訓(xùn)練過(guò)程中向生成器輸入模糊圖像,而不是像原生的生成對(duì)抗網(wǎng)絡(luò)(generative adversarial network,GAN)[5]一樣輸入一個(gè)隨機(jī)噪聲向量。然后通過(guò)判別器比較生成器的輸出與清晰圖像之間的差異。其中生成器使用頻域Transformer,判別器使用PatchGAN來(lái)進(jìn)行對(duì)抗訓(xùn)練。
生成器架構(gòu)如圖2所示,生成器整體采用U形結(jié)構(gòu)并在編碼器與解碼器間加入了殘差連接。給定一個(gè)模糊圖片Ib=RH×W×3,其中H表示圖像的高度,W表示圖像的寬度,3 表示圖像的RGB 通道,模型首先使用卷積層將輸入映射到高維空間來(lái)得到特征圖。然后將特征圖傳遞到后面的SFPM 模塊,每個(gè)SFPM 模塊包括多個(gè)Transformer模塊和一個(gè)頻域處理模塊,它們以并行的方式處理輸入圖像。映射后的特征圖通過(guò)空頻處理模塊(spatial frequency processing module,SFPM)向下傳遞多層,每個(gè)空頻處理模塊包含多個(gè)Transformer塊以及一個(gè)頻域處理模塊,兩者以并行的方式進(jìn)行工作。每經(jīng)過(guò)一個(gè)空頻處理模塊進(jìn)行一次下采樣,下采樣通過(guò)卷積實(shí)現(xiàn)。帶有下采樣部分的左半部分是生成器的編碼器,右半部分則是解碼器。解碼器中首先通過(guò)PixelShuffle操作在不丟失信息的前提下進(jìn)行上采樣,然后輸入到空頻處理模塊進(jìn)行學(xué)習(xí)。最后通過(guò)一個(gè)精煉模塊來(lái)對(duì)輸出作最后的調(diào)整。
圖2 生成器架構(gòu)
Transformer 的自注意力機(jī)制能夠?qū)W習(xí)全局之間的關(guān)系,但是直接用它來(lái)處理高分辨率圖像,會(huì)使得訓(xùn)練速度變得很慢,并且對(duì)于硬件要求也更高。為了滿足處理大分辨率圖片的需求,引入了局部自注意力機(jī)制,通過(guò)設(shè)置一個(gè)窗口大小來(lái)控制自注意力的計(jì)算范圍,有效減少了計(jì)算量。同時(shí)結(jié)合U 形網(wǎng)絡(luò),在淺層進(jìn)行局部注意力計(jì)算,提取細(xì)節(jié)特征;在深層進(jìn)行全局注意力計(jì)算,得到全局信息。編碼器部分的每個(gè)SFPM 模塊都包含卷積下采樣操作,輸入每通過(guò)編碼器其中的一個(gè)SFPM,尺寸就會(huì)進(jìn)行縮減,相應(yīng)地,特征就會(huì)增加。當(dāng)輸入變得足夠小時(shí),就可以將自注意力應(yīng)用于整個(gè)特征圖,從而學(xué)習(xí)到全局信息。通過(guò)這種方法,既可以獲得局部細(xì)節(jié),又可以獲得全局信息。在解碼器部分使用的則是亞像素卷積上采樣層,可以表示為如下公式:
圖像的退化過(guò)程可以理解為是將算子H作用在一個(gè)輸入圖片f(x,y)上來(lái)生成退化圖像g(x,y)。如果算子H已知,那么可以很容易地將退化圖像恢復(fù)成原始圖像。但在很多情況下并不能得到這樣一種準(zhǔn)確的理想的算子,只能盡量近似它。根據(jù)卷積定理,空域中的卷積操作可以轉(zhuǎn)換為頻域乘法,因此一些直接在空間域表述非常困難,甚至不可能的任務(wù)在頻域中變得非常普通。
空域中的卷積操作轉(zhuǎn)化到頻域可以簡(jiǎn)化為乘積操作,圖3 中清晰圖像的頻域圖(a)與頻域模糊核(b)進(jìn)行乘積可得模糊圖像的頻域圖。同樣地,模糊圖像的頻域圖除以頻域模糊核即可得到清晰圖像的頻域圖。因此模型只需要擬合出圖3(b)的倒數(shù)再乘上輸入的模糊圖像的頻域圖即可得到清晰圖像。
圖3 頻域乘積示例
在現(xiàn)實(shí)世界中模糊圖像與清晰圖像在其頻域圖上仍然有明顯的區(qū)別。場(chǎng)景中各種物體的邊緣在頻域圖中相互疊加,頻域中可見(jiàn)的條紋由整幅圖像的抖動(dòng)而來(lái),圖像的空域信息和頻域信息可以相互補(bǔ)充,充分利用這兩部分信息可以更好地抑制圖像中的模糊偽影??疹l處理模塊設(shè)計(jì)如圖4(a)所示,左側(cè)為Transformer 分支,用于處理空域信息;右側(cè)分支為頻域處理分支,用于對(duì)頻域圖像進(jìn)行處理??沼蛐畔⒑皖l域信息并行處理,最后進(jìn)行融合得到SFPM 模塊的輸出。隨著U 形網(wǎng)絡(luò)的加深,SFPM 模塊所處理的特征維度就越高,且越注重全局信息,結(jié)合U 形網(wǎng)絡(luò)的特點(diǎn),頻域處理模塊更是可以關(guān)注不同層次大小的頻域圖信息。
圖4 空頻處理模塊內(nèi)部結(jié)構(gòu)
為了在頻域?qū)D像進(jìn)行處理需要先將圖像轉(zhuǎn)換到頻域,通過(guò)離散傅里葉變換(discrete fourier transform,DFT)轉(zhuǎn)換而來(lái)的頻域圖可以清晰地反映運(yùn)動(dòng)模糊的方向與大小。再將頻域圖沿水平垂直方向進(jìn)行分解,然后計(jì)算各自的注意力,可以充分利用運(yùn)動(dòng)模糊在頻域中體現(xiàn)的特征,有效地恢復(fù)頻域圖。DFT 是采樣后的傅里葉變換,它不包含組成圖像的所有頻率,可能會(huì)丟失一些細(xì)節(jié)信息,因此僅在頻域處理是不夠的,還要結(jié)合空域一起處理才能起到互補(bǔ)的作用。
由于模糊圖像的頻域圖包含模糊圖像中的運(yùn)動(dòng)方向及幅度,因此頻域處理模塊將頻域圖沿橫縱軸進(jìn)行分解,將不同方向的模糊頻率分解為水平和垂直方向,然后對(duì)分解后的向量分別進(jìn)行注意力計(jì)算。垂直分解的向量表示為i∈{1,…,W},其中W表示圖像寬度;水平分解的向量表示為,j∈ {1,…,H},其中H表示圖像高度。在分解后的向量進(jìn)行注意力計(jì)算之前,首先對(duì)其特征維度使用1 × 1 的卷積層擴(kuò)充至其自身的兩倍,由于頻域圖中包含豐富的不同方向和幅度的頻率,通過(guò)擴(kuò)充分解向量的特征數(shù)有助于提高模塊的表達(dá)能力,不會(huì)丟失關(guān)鍵信息。該步驟如下所示:
合并所有垂直分解向量的注意力輸出即可得到垂直注意力輸出Ov。以同樣的方式對(duì)水平分解向量進(jìn)行計(jì)算可得Oh。然后將垂直和水平的注意力輸出合并起來(lái)并通過(guò)矩陣K∈ R2W×W×2C將輸出映射為輸入尺寸,并再次使用1 × 1 的卷積層對(duì)特征維度進(jìn)行聚合,表示如下:
其中:O∈ RH×W×C表示模塊的輸出,iDFT表示離散傅里葉變換的逆運(yùn)算。傅里葉變換中,低頻主要決定圖像在平滑區(qū)域中總體灰度級(jí)的顯示,而高頻決定圖像細(xì)節(jié)部分,如邊緣和噪聲。模糊問(wèn)題也可以理解為原本高頻銳利的邊緣經(jīng)過(guò)模糊之后變得更平滑,因此去模糊任務(wù)就是從比較平滑的低頻區(qū)域?qū)⒃緫?yīng)是高頻邊緣的部分恢復(fù)出來(lái)。
原生GAN 的損失函數(shù)在兩個(gè)數(shù)據(jù)分布完全不重合的時(shí)候,JS 散度恒為log 2,所以模型也無(wú)法更新。因此損失函數(shù)選用WGAN-GP[6]進(jìn)行訓(xùn)練,公式如下:
其中:懲罰項(xiàng)對(duì)分布Ppenalty進(jìn)行采樣,分布Ppenalty介于Pdata與PG之間,只需要保證在該分布的采樣的梯度范數(shù)小于等于1 即可。此外還增加了一個(gè)感知損失函數(shù),感知損失認(rèn)為生成圖像是從內(nèi)容圖變換而來(lái),通過(guò)計(jì)算內(nèi)容損失不斷迭代生成圖片,使其越來(lái)越接近內(nèi)容圖。在去模糊任務(wù)中,生成圖像指的是模糊圖像,而內(nèi)容圖則是清晰圖像。感知損失函數(shù)如下所示:
其中:j表示VGG 網(wǎng)絡(luò)的第j層,CjHjWj表示第j層特征圖的尺寸。將對(duì)抗損失函數(shù)和感知損失函數(shù)組合起來(lái)就是模型最終的損失函數(shù),其中λ1和λ2是兩個(gè)超參數(shù):
實(shí)驗(yàn)使用GoPro[7]數(shù)據(jù)集作為訓(xùn)練集和測(cè)試集。它由3214 幅模糊圖像和對(duì)應(yīng)的清晰圖像組成,分辨率為1280 × 720,其中2103 對(duì)用于訓(xùn)練,1111 對(duì)用于測(cè)試。它使用GoPro 相機(jī)以視頻的方式捕捉幀,然后對(duì)前后連續(xù)短曝光的幀進(jìn)行平均,生成模糊圖像。
另一個(gè)用于測(cè)試的RealBlur[8]數(shù)據(jù)集使用兩個(gè)相同型號(hào)的相機(jī)來(lái)捕捉圖像,其中一個(gè)是以高快門速度進(jìn)行拍照,另一個(gè)是以低快門速度拍照。由研究人員手持兩臺(tái)相機(jī)構(gòu)成的拍攝系統(tǒng)在街道中進(jìn)行隨機(jī)拍攝,該數(shù)據(jù)集采集到的模糊圖像更為真實(shí)。它們都包含4738 對(duì)圖像,其中980對(duì)用于測(cè)試,其余用于訓(xùn)練。
實(shí)驗(yàn)使用PyTorch 來(lái)實(shí)現(xiàn)本文的模型,該模型無(wú)需預(yù)訓(xùn)練。訓(xùn)練是在帶有AMD 5950X CPU以及單塊Nvidia GeForce RTX 3090Ti GPU 的服務(wù)器上進(jìn)行的。實(shí)驗(yàn)將圖像裁剪為幾個(gè)大小為256 × 256 的圖像塊,批量訓(xùn)練大小設(shè)置為1。在訓(xùn)練階段,使用ADAM[9]優(yōu)化器對(duì)模型進(jìn)行訓(xùn)練。學(xué)習(xí)率設(shè)置為10-6,使用余弦退火策略逐步降低學(xué)習(xí)率。實(shí)驗(yàn)使用上述配置在GoPro數(shù)據(jù)集上訓(xùn)練了300 輪,然后在模糊圖像數(shù)據(jù)集GoPro和RealBlur 上對(duì)所提出的去模糊模型分別進(jìn)行了測(cè)試。
實(shí)驗(yàn)在GoPro 和RealBlur 數(shù)據(jù)集上進(jìn)行了測(cè)試。圖5展示了各模型的效果對(duì)比。
圖5 去模糊方法對(duì)比
表1 顯示了模型在峰值信噪比(peak signal to noise ratio,PSNR)和結(jié)構(gòu)相似度(structural similarity,SSIM)指標(biāo)上優(yōu)于其他方法。
表1 模型測(cè)試結(jié)果
該模型在GoPro和RealBlur兩個(gè)數(shù)據(jù)集上與幾個(gè)經(jīng)典的去模糊模型進(jìn)行了比較,其中DeblurGAN和DeblurGANv2 是同一個(gè)團(tuán)隊(duì)提出的,使用的是CNN 構(gòu)成的GAN 網(wǎng)絡(luò)。結(jié)果表明本文提出的模型在兩個(gè)數(shù)據(jù)集上分別比其他方法至少提高了0.72 dB 和0.83 dB,表現(xiàn)出較強(qiáng)的泛化能力。此外,圖6 展示了一些去模糊的結(jié)果圖與頻域圖。
圖6 GoPro數(shù)據(jù)集的訓(xùn)練結(jié)果
由圖中頻域圖像也可看出,模型對(duì)圖像的恢復(fù)體現(xiàn)在頻域中的效果很明顯,成功濾除了造成模糊的頻率條紋。
本節(jié)詳細(xì)分析了模型中組件的作用,并在GoPro 和RealBlur 兩個(gè)數(shù)據(jù)集上進(jìn)行對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果見(jiàn)表2。U 形網(wǎng)絡(luò)結(jié)構(gòu)的性能優(yōu)于簡(jiǎn)單的對(duì)生成器的輸入和輸出應(yīng)用殘差連接,如表2中的(A)和(B)所示。它將每個(gè)下采樣階段的特征圖與對(duì)應(yīng)的上采樣階段使用殘差連接結(jié)合起來(lái)。在U形網(wǎng)絡(luò)結(jié)構(gòu)中,網(wǎng)絡(luò)越深感受野越大,網(wǎng)絡(luò)將更加關(guān)注更抽象的全局相關(guān)性。相比之下,當(dāng)網(wǎng)絡(luò)深度較淺時(shí),它會(huì)更加關(guān)注紋理細(xì)節(jié)。
表2 消融實(shí)驗(yàn)結(jié)果
本節(jié)嘗試將頻域處理模塊置于不同位置,結(jié)果顯示頻域處理模塊的位置對(duì)于去模糊效果是有影響的。(C)嘗試將頻域處理模塊置于與U形網(wǎng)絡(luò)并行的位置,使其與Transformer 的U 形網(wǎng)絡(luò)共享輸入再合并輸出。與之相比,(D)中將頻域處理模塊放入Transformer塊或(E)中將頻域處理模塊放入MLP 中的性能要更好。當(dāng)頻域處理模塊與U 形網(wǎng)絡(luò)并行時(shí),直接對(duì)圖像進(jìn)行處理,將輸入轉(zhuǎn)換到頻域后對(duì)輸入進(jìn)行卷積運(yùn)算。它只能用有限的頻率在頻域表示圖像,這意味著它會(huì)丟失一些信息。但將其放入與Transformer塊并行的位置,它就可以處理多個(gè)不同大小的特征映射,并可以獲得全局和局部的相關(guān)性。關(guān)于表2 中的(E),是將頻域處理模塊部署在MLP 模塊旁邊。雖然最后的分?jǐn)?shù)有一定的提升,但計(jì)算量比(D)提高了3 倍左右。在(F)中,再把它放回Transformer 塊的旁邊,同時(shí)改變其內(nèi)部結(jié)構(gòu)。在(C)和(D)中,只在頻域?qū)D像進(jìn)行橫縱向分解后的注意力計(jì)算,而(F)中,增加了一個(gè)投影矩陣,橫縱向分解向量進(jìn)行注意力計(jì)算后通過(guò)該投影矩陣可以自動(dòng)學(xué)習(xí)關(guān)鍵信息,結(jié)果也表明該方法對(duì)于去模糊的效果有一定的改善。
本文提出一種端到端的基于GAN 的頻域Transformer 的去模糊模型,無(wú)須估計(jì)模糊核,主要面向不均勻運(yùn)動(dòng)模糊問(wèn)題。文中對(duì)Transformer的內(nèi)部結(jié)構(gòu)進(jìn)行了重新設(shè)計(jì),加入了頻域處理模塊,使得模型能夠同時(shí)在空域和頻域上對(duì)圖像進(jìn)行恢復(fù),充分利用了運(yùn)動(dòng)模糊在頻域圖中的特征,與Transformer 處理空域互補(bǔ),取得了更好的恢復(fù)效果。同時(shí)生成器U 形網(wǎng)絡(luò)的架構(gòu),使得模型能夠處理高分辨率圖片,并且可以學(xué)習(xí)到模糊圖片的局部細(xì)節(jié)以及全局信息。得益于Transformer 的特性,模型對(duì)于數(shù)據(jù)增廣的收益要大于基于CNN 的模型,數(shù)據(jù)量越大對(duì)模型效果越有利。模型受益于Transformer 的自注意力機(jī)制,但同樣受制于自注意力機(jī)制,因?yàn)閷?duì)于高分辨率圖片構(gòu)成的輸入序列已經(jīng)屬于超長(zhǎng)序列,自注意力計(jì)算的代價(jià)很大,造成了模型參數(shù)量大、計(jì)算速度慢的問(wèn)題,后續(xù)工作需在此基礎(chǔ)上壓縮模型參數(shù)量,提高模型運(yùn)行效率,便于部署在計(jì)算資源有限的嵌入式終端,如交通監(jiān)控?cái)z像頭等設(shè)備。