趙躍進 劉文龍 劉 明 董立泉 惠 梅
(北京理工大學光電學院,北京,100081)
隨著時代的發(fā)展,視頻技術(shù)及其相關(guān)的成像設(shè)備取得了長足的發(fā)展,在日常生活中扮演著十分重要的角色,近些年攝像設(shè)備數(shù)量更是呈指數(shù)級增長的態(tài)勢。但是除了昂貴的高速攝像機,普通成像設(shè)備如果在曝光時間范圍內(nèi)發(fā)生較為明顯的抖動或者場景中存在快速運動的物體,所記錄的視頻圖像往往發(fā)生模糊現(xiàn)象,導(dǎo)致觀感不佳和重要細節(jié)丟失。而且曝光時間越長,這種模糊效應(yīng)越明顯。為了去除這種模糊效應(yīng),研究人員很早就開始研究如何恢復(fù)模糊的視頻圖像到清晰狀態(tài)。一般的模糊模型[1]可以表達為
式中:IS表示理想清晰圖像;K表示作用在IS上的模糊核;?表示卷積操作;N表示在成像過程中環(huán)境噪聲和傳感器噪聲等加性噪聲;IB表示在模糊模型作用下產(chǎn)生的模糊圖像。由此模糊模型反推去模糊問題可以被建模為反卷積問題。然而,在諸如相機拍攝視頻或圖像的實際過程中,模糊核形式完全未知,盲去模糊便成為一個嚴重的病態(tài)問題。
目前,大多數(shù)的研究根據(jù)去模糊對象將去模糊問題大致分為單幀圖像去模糊和視頻圖像去模糊。給定單張模糊圖像,最直接的方法是維納濾波[2],但是維納濾波對噪聲特別敏感,恢復(fù)的圖像幾乎不可用。因此傳統(tǒng)的大多數(shù)研究將該問題轉(zhuǎn)為迭代優(yōu)化問題。Lam等人[3]從數(shù)理統(tǒng)計的角度利用先驗知識在迭代過程中估計和更新反卷積公式以增強反卷積效果?;谙∈韬腿哂啾碚骼碚?,Ma等人[4]首先在冗余字典上表征不同模糊和圖像,并分別對其表征系數(shù)施加稀疏約束后迭代優(yōu)化。迭代算法計算量巨大,因此Xu等人[5]建立了傳統(tǒng)優(yōu)化方法與神經(jīng)網(wǎng)絡(luò)架構(gòu)之間的聯(lián)系,所提出的可分離反卷積結(jié)構(gòu)對偽像去模糊有很好的魯棒性,但此方法仍限于非盲圖像反卷積。隨著機器學習特別是卷積神經(jīng)網(wǎng)絡(luò)(Convolutional neural networks,CNN)的興起,Sun等人[6]設(shè)計一套運動模糊核模板,然后通過分類識別模糊圖像塊的模糊核類型建立一個非均勻模糊場用于估計潛在清晰圖像。而Nah等人[7]最先將生成對抗網(wǎng)絡(luò)(Generative adver?sarial network,GAN)引入到圖像去模糊問題中,并提出一個多尺度CNN結(jié)構(gòu)由粗到精地逐級提升去模糊效果。Kupyn等人[1]將Waserstein生成對抗網(wǎng)絡(luò)(WGAN-GPN)[8]引入到去模糊問題,并提出Deblur?GAN去模糊網(wǎng)絡(luò)。視頻圖像去模糊因為考慮到時間維度信息往往可以取得更好的結(jié)果。Kim等人[9]提出一動態(tài)CNN網(wǎng)絡(luò)用于配準視頻幀和一時空循環(huán)去模糊網(wǎng)絡(luò),可基本實現(xiàn)實時去運動模糊。而后為了處理由相機抖動、移動物體和場景中深度變化等原因引起的空間局部變化的模糊,他們用雙向光流近似像素級模糊核提出基于能量的模型,可以同時估算視頻光流和潛在清晰幀[10]。為避免繁瑣的人工視頻圖像配準過程,Su等人[11]提出一種累積連續(xù)幀之間信息的去模糊網(wǎng)絡(luò)。
生成對抗網(wǎng)絡(luò)[12]近些年來在圖像去噪、圖像超分辨、圖像生成等領(lǐng)域取得了顯著的成果。所生成的圖像不僅能在視覺感知方面更貼近于人眼的觀測,達到以假亂真的效果,而且能從真實數(shù)據(jù)庫中學習到先驗知識為圖像補充更多真實的內(nèi)容細節(jié)。因此,為了消除視頻圖像的運動模糊,本文提出一種基于生成對抗網(wǎng)絡(luò)的雙向時域特征流盲運動去模糊網(wǎng)絡(luò),其原理圖如圖1所示。本文先提取當前幀的隱含特征,并建立一雙向時域特征傳輸通道,當前幀的隱含特征信息能被傳遞到前一幀及其后一幀。而在后一階段,結(jié)合當前幀特征信息的前一幀和后一幀的混合編碼將會被聯(lián)合解碼以產(chǎn)生與當前幀相對應(yīng)的清晰圖像。此外,本文也把感知損失[13]作為多組分損失函數(shù)的一部分,與傳統(tǒng)的均方誤差(Mean squared error,MSE)或平均絕對誤差(Mean absolute deviation,MAE)作為優(yōu)化目標相比,感知損失促使網(wǎng)絡(luò)選擇偏于視覺質(zhì)量的解決方案,使得恢復(fù)后圖像細節(jié)更豐富銳利?;诖?,本文去模糊模型可以取得非常顯著的效果。
圖1 雙向時域特征流盲去運動模糊網(wǎng)絡(luò)的原理圖Fig.1 Basic architecture of the bidirectional time-domain feature flow blind motion deblurring network
深度學習是由大數(shù)據(jù)驅(qū)動,去模糊網(wǎng)絡(luò)的學習同樣依賴于一個高質(zhì)量的模糊數(shù)據(jù)集。但是去模糊不像圖像超分辨、圖像去噪和圖像繪色等任務(wù)數(shù)據(jù)集制作方便快捷。為了得到模糊-清晰的樣本對,Nah等人[7]用GoPro高速攝像機拍攝高幀率高清晰的短視頻,然后平均相鄰幀合成出原始圖像的模糊版本,但可供下載的數(shù)據(jù)只適用于單幀圖像去模糊。另外一種隨機軌跡生成法[7]能仿真空間變化的運動模糊核,將清晰圖像轉(zhuǎn)為運動模糊效果。但這種方法前后仿真出的模糊幀沒有時間上的聯(lián)系,所以對于視頻盲去模糊問題而言,仿真而成的模糊視頻序列與真實運動模糊序列存在較大差異。
Su等人[11]提供了一高幀率視頻數(shù)據(jù)集,該數(shù)據(jù)集也成為了諸多圖像去模糊研究中的通用數(shù)據(jù)集。本文嘗試利用這些高幀率視頻制作出一模糊數(shù)據(jù)集。為了達到滿意的運動模糊效果,本文先采用雙向光流插幀法在原始的兩幀圖像之間插入N幀子幀,然后再利用鄰近子幀合成出當前幀的對應(yīng)模糊版本。具體操作如圖2所示:給定一段視頻,ft表示在時間t的采樣幀,ft-1和ft+1表示ft的前一幀和后一幀,通過OpenCV可以建立ft-1←ft和ft→ft+1的雙向光流場,再在每一個方向的光流中計算出N幀子幀,所得到的圖像序列如式(2)所示。
最后本文利用式(3)計算出ft對應(yīng)的模糊幀bt
圖2 雙向光流插幀平均法創(chuàng)建模糊圖像Fig.2 Blurred image creation by bidirectional opti?cal flow interpolation frame average method
式中L表示在ft前后各取L幀子幀。
通過在兩幀圖像中插入子幀,一段低幀率的視頻可以轉(zhuǎn)變?yōu)槿我飧邘?,再不受攝像機幀率限制。而通過平均子幀合成的模糊視頻與原始清晰視頻具有相同的幀率。在實際的轉(zhuǎn)換過程中,考慮到視頻轉(zhuǎn)換速度和所合成的模糊效果,本文設(shè)置N=20,L=10。以三連續(xù)模糊幀作為負樣本,而以中間模糊幀對應(yīng)的清晰幀作為正樣本,由正負樣本可以組成一組模糊-清晰樣本對。為了保證數(shù)據(jù)集的質(zhì)量,本文經(jīng)過仔細挑選,舍棄那些模糊程度不足、高相似和無明顯對象的樣本對,最后得到7 728組高質(zhì)量樣本,再將這些樣本對分成5 710對訓練樣本和2 018對測試樣本。
為了實現(xiàn)視頻圖像去運動模糊的目標,本文采用多幀圖像序列去模糊的方案。實驗表明三幀連續(xù)圖像序列基本能達到去模糊的質(zhì)量要求,而且處理時間在接受范圍內(nèi)。假設(shè)當前幀為B0,本文考慮到當前幀的前后一幀,分別表示為B-1和B1,組合成一個(B-1,B0,B1)三連幀圖像序列。在最小二乘生成對抗網(wǎng)絡(luò)(Least square GAN,LSGAN)[14]的基礎(chǔ)上,本文設(shè)計了一個雙向時域特征流盲去運動模糊生成網(wǎng)絡(luò)(圖1)。該網(wǎng)絡(luò)訓練一個端到端的全卷積生成器G。G采用多階段的編碼-解碼結(jié)構(gòu),接收該三連幀模糊圖像序列作為網(wǎng)絡(luò)的輸入。但這三連幀模糊圖像在網(wǎng)絡(luò)中并不是在輸入端以通道疊合方式同時輸入,而是先后輸入到網(wǎng)絡(luò)中,所以本文網(wǎng)絡(luò)整體上可以細分為兩個去模糊階段。前一階段的輸出可作為后一階段的輸入,所以去模糊的結(jié)果也是結(jié)合了三連幀的全部內(nèi)容信息。考慮到相鄰幀之間的時域特征信息,在第一階段先提取當前幀的內(nèi)部特征信息,并在第二階段通過雙向時域特征傳輸通道將其分別轉(zhuǎn)移到前一幀和后一幀的編碼器中,最后前后幀編碼會被混合解碼,生成的清晰圖像E0將作為B0最終的去模糊結(jié)果。
編碼器-解碼器結(jié)構(gòu)[15]是圖像處理網(wǎng)絡(luò)中最常用的網(wǎng)絡(luò)結(jié)構(gòu),它在圖像超分辨、圖像去噪等方面均得到廣泛應(yīng)用。這種結(jié)構(gòu)通常是由一個編碼器和一個解碼器組成對稱形式。編碼器用于提取輸入圖像的特征并在高維空間中表達。為了增大網(wǎng)絡(luò)的感受野,編碼器一般會逐級將圖像下采樣,與此同時擴大特征層的通道數(shù)以盡量減少特征信息的損失。而解碼器是編碼器的逆過程,通過上采樣操作將編碼器在高維空間中的編碼特征逐級恢復(fù)到與原始輸入大小相同的圖像。
在第一階段,在參考Tao等人的SNR-DeblurNet[16]后,本文設(shè)計的編碼器-解碼器結(jié)構(gòu)如圖3所示。本文在編碼階段先使用32個5×5大小的卷積核從原始輸入圖像中提取32通道特征層,然后使用兩個步長為2的卷積操作將輸入圖像下采樣到原始大小的1/4,特征層通道數(shù)也擴大到初始特征層的4倍。He等人[17]研究表明殘差塊能在增加網(wǎng)絡(luò)深度的同時提高網(wǎng)絡(luò)的收斂速度,所以本文在每個卷積層后添加3個殘差塊,每個殘差塊由兩個卷積層所構(gòu)成并形成殘差連接。解碼器采用與編碼器對稱的網(wǎng)絡(luò)結(jié)構(gòu),本文使用兩個步長為2的轉(zhuǎn)置卷積層將高維空間特征上采樣。同樣在每個轉(zhuǎn)置卷積層前也放置3個相同形式的殘差塊。所有的卷積層和轉(zhuǎn)置卷積層均采用5×5大小卷積核。下采樣編碼操作提取了語義信息但也損失重要的空間信息,為了補充空間信息,本文在編碼器和解碼器相對應(yīng)層間添加跳連接[18],使得網(wǎng)絡(luò)學習輸入圖像與目標圖像的殘差信息,如此可以大大提高網(wǎng)絡(luò)的收斂速度。
為了充分利用當前幀的隱含特征信息和相鄰幀的時間維度信息聯(lián)系,本文在第一階段去模糊網(wǎng)絡(luò)中設(shè)立1個特征提取器,提取當前幀在編碼器的隱含特征。因為提取的特征分別傳遞給前一幀和后一幀的編碼器,所以本文將這個特征傳遞通道稱為“雙向時域特征流”。雙向時域特征流和第一階段初步去模糊圖像P0均傳遞到第二階段作為前后幀編碼器的公共輸入。
圖3 第一階段去模糊網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.3 Structure of the first-stage deblurring network
圖4 第二階段去模糊網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.4 Structure of the second-stage deblurring network
在第一階段后,本文得到一初步的去模糊結(jié)果P0。在第二階段,本文將P0分別與前一幀和后一幀以通道疊合方式作為第二階段網(wǎng)絡(luò)的輸入端的輸入。第二階段去模糊結(jié)構(gòu)如圖4所示,其主體結(jié)構(gòu)與第一階段相同,但是其編碼器由兩子編碼器組成,這兩子編碼器分別對輸入端(B-1+P0)和(B1+P0)并行編碼,同時吸收來自第一階段的時域特征信息。而后兩高維編碼信息由一個共同解碼器聯(lián)合解碼。為了吸收時域特征流信息,本文采用1×1大小卷積核對時域特征與當前子編碼器前向輸出特征疊加后的混合特征進行卷積,由此兩子編碼器分別建立不同時域方向當前幀與相鄰幀的特征映射。因此,雖然兩子編碼器具有相同的結(jié)構(gòu)和狀態(tài),但不共享參數(shù)。
兩子編碼器的編碼并沒有獨立解碼,而是采用混合解碼的方式。本文將兩編碼通道疊合輸入到公有解碼器。為了融合兩者之間的信息,本文采用1×1大小卷積核學習到兩子編碼特征的相應(yīng)融合權(quán)值。而后與第一階段解碼器類似,兩個步長為2的轉(zhuǎn)置卷積層將高維空間混合編碼特征上采樣恢復(fù)出與B0相同大小的去模糊圖像。同樣,為了加速網(wǎng)絡(luò)收斂,并遵循由粗到精的優(yōu)化策略,本文在初步估計結(jié)果P0與輸出層之間引入了全局跳連接,以便網(wǎng)絡(luò)學習到初始估計P0的殘差校正IR,而不是從頭開始生成清晰的圖像。因此,整個去模糊網(wǎng)絡(luò)相對于當前幀B0的去模糊結(jié)果E0表示為E0=IR+P0。
本文的去模糊網(wǎng)絡(luò)以LSGAN[14]為基本框架。LSGAN的主要思想就是在判別器D中使用更加平滑和非飽和梯度的損失函數(shù)。為此,Mao等人選用最小二乘損失也就是L2損失懲罰與真實分布偏遠的數(shù)據(jù)。在優(yōu)化過程中,促使生成器G逐漸擬合真實數(shù)據(jù)Pdata。所以LSGAN訓練的鑒別器損失和生成器損失分別如式(4,5)所示。
式中:Pdata表示真實的數(shù)據(jù)分布;PG表示生成數(shù)據(jù)分布;x表示真實樣本;x?表示生成器生成樣本。除了基本的對抗生成損失之外,為了使生成的圖像更接近于真實的圖像,減少內(nèi)容上的差異,本文又在生成損失基礎(chǔ)上添加像素級損失Lpixel和特征級損失Lfeat作為內(nèi)容損失。
像素級損失一般使用MSE或MAE衡量,本文選擇MSE,所以本文的Lpixel定義為每階段去模糊結(jié)果與目標圖像的Euclidean距離之和
式中:IE(i)表示第i個去模糊階段的復(fù)原圖像;IS表示當前幀B0的目標圖像S0。
近些年感觀損失[13](Perception loss)在圖像復(fù)原領(lǐng)域研究得到廣泛應(yīng)用,目的是在特征層級上縮小與目標圖像的差異。本文定義Lfeat為去模糊圖像E0與目標圖像S0在VGG19網(wǎng)絡(luò)[19]中relu3_3層上特征的L1距離。所以Lfeat可以表示為
式中φj表示輸入圖像在VGG19第j層的特征圖。綜上所述,本文的總生成損失可以表示為
式中λi分別表示像素級損失和特征損失相對對抗生成損失的權(quán)值。在本文的實驗中,設(shè)置λ1=10,λ2=5基本能滿足訓練要求。
對抗網(wǎng)絡(luò)訓練是一個生成器和鑒別器相互競爭相互協(xié)作的過程。本文在一塊NVIDIA Tian V 100顯卡上實施所有訓練和測試實驗。實驗設(shè)置batch_size為1,生成器除了最后卷積層使用Tanh激活外,其余卷積和轉(zhuǎn)置卷積操作激活函數(shù)均選擇ReLU,使用Instance Normalization正則化[20],而鑒別器的卷積層激活函數(shù)均選擇Leaky_ReLU,使用Layer Normalization正則化[21]。而因為訓練樣本大小為1 280像素×720像素,所以從訓練樣本中隨機剪切出256像素×256像素大小的圖像塊作為網(wǎng)絡(luò)的輸入。本文選擇Adam[22]作為優(yōu)化器,初始的學習率為1e-5,并在訓練的過程中呈指數(shù)級衰減,衰減率α=0.3。在訓練階段,生成器與鑒別器交替更新,在其中一個更新時保持另一個參數(shù)不變。本文設(shè)置最大的ep?och數(shù)為300。整個訓練過程大約需要3~5 d時間。
為了從定性和定量評價本文算法,從統(tǒng)計度量和視覺質(zhì)量兩個方面分別將本文算法與當前先進的去模糊算法進行比較。
本文模型的目的主要是提高去模糊的視覺質(zhì)量,所以不太關(guān)注傳統(tǒng)的定性評價指標。但是為了進一步說明本文模型的優(yōu)勢,本文將模型與當前一些優(yōu)秀的去模糊算法進行對比?;诒疚乃鶆?chuàng)建的測試數(shù)據(jù)集,用傳統(tǒng)的圖像質(zhì)量評價標準:峰值信噪比(Peak signal to noise ratio,PSNR)和結(jié)構(gòu)相似性(Structural similarity,SSIM)評估并計算單個測試樣本平均處理時間。本文選擇Multi-scale CNN[7],RDN[23]和DeblurGAN[7]作為比較對象,因為它們的網(wǎng)絡(luò)具有獨特的結(jié)構(gòu)并且效果優(yōu)異。為了更體現(xiàn)公平性,其中RDN的序列長度設(shè)置為3,而Multi-scale CNN的尺度K值也設(shè)為3。所有測試均在2 018個測試樣本基礎(chǔ)上進行,測試樣本大小為256像素×256像素。實驗結(jié)果如表1所示。
表1 統(tǒng)計度量評價結(jié)果Tab.1 Results of statistical evaluation
顯然,與優(yōu)秀的去模糊算法相比,本文提出的模型在SSIM和PSNR方面均表現(xiàn)優(yōu)異。一方面,本文模型的PSNR不僅遠超過RDN算法1.31 dB和Multi-scale CNN算法0.66 dB,而且在Deblur?GAN的基礎(chǔ)上提高0.36 dB。并且本文的SSIM也高于其他競爭對手。更重要的是,在處理速度方面,Multi-scale CNN幾乎80倍率慢于本文模型。但也注意到因為本文模型的多階段編碼-解碼去模糊結(jié)構(gòu),本文模型接近1.6倍率慢于DeblurGAN。但綜合而言,本文模型可以更好地實現(xiàn)性能與速度均衡。
高PSNR和SSIM并不等同于好的去模糊效果。本文追求的目標則是更好的視覺質(zhì)量。仍然用Multi-scale CNN和DeblurGAN與本文模型作比較。本文從測試結(jié)果中隨機選擇多個去模糊的圖像,直觀的視覺對比如圖5所示。由圖5可以看出,與其他算法相比,本文模型的去模糊結(jié)果展現(xiàn)出更好的視覺質(zhì)量,去模糊后圖像包含更好的紋理細節(jié)和較少的噪聲,這表明在模糊核形式未知條件下,本文模型不需要預(yù)先估計運動模糊圖像的模糊核便能盲處理各種情況下造成的運動模糊問題。此外,對于圖像中那些不模糊的區(qū)域,本文的去模糊模型仍然能較好地保持其原始清晰度,而不會人為引入過多偽影。
圖5 視覺質(zhì)量評價對比結(jié)果Fig.5 Results of visual quality comparison
本文先采用雙向光流插幀合成法創(chuàng)建一個高質(zhì)量的運動模糊數(shù)據(jù)集,該數(shù)據(jù)集不僅適用于單幀圖像去模糊研究而且也適用于視頻圖像去模糊研究。進一步,對于視頻圖像去模糊問題,本文提出了一種雙向時域特征流盲運動去模糊生成網(wǎng)絡(luò),該網(wǎng)絡(luò)取三連幀圖像序列作為輸入,采用多階段的編碼-解碼結(jié)構(gòu)。在其中為了充分利用相鄰幀時域信息,本文提出一種并行編碼和混合解碼的解決方案。實驗測試結(jié)果表明,本文提出的模型在統(tǒng)計度量評價和圖像質(zhì)量評價方面均優(yōu)于當前一些優(yōu)秀的算法。但本文方法也存在處理速度較慢、對硬件性能要求高等問題,距離實際應(yīng)用還需要進一步優(yōu)化。