李耀兵,李 赟,李 俊
(國(guó)家工業(yè)信息安全發(fā)展研究中心,北京 100040)
超分辨率的研究按照對(duì)象可劃分為單幀圖像超分辨率和多幀圖像(視頻)超分辨率[1]。由于多幀圖像多出了時(shí)間維度,簡(jiǎn)單地將視頻看作是一個(gè)個(gè)單幀圖像,通過(guò)對(duì)單幀圖像的處理來(lái)實(shí)現(xiàn)對(duì)視頻的超分辨率任務(wù),結(jié)果通常是視頻變得不再平滑,視頻內(nèi)的物體會(huì)有移位的現(xiàn)象。圖像分辨率定義的直觀表現(xiàn)是圖像的像素?cái)?shù)目,更大的感光元件才能捕獲更多的細(xì)節(jié)信息。因此,要得到高分辨率圖像需要感光元件(圖像傳感器)有更大的感光面積,同時(shí)需要更大的帶寬來(lái)傳輸高分辨率的圖像。圖像的分辨率越高,圖像的細(xì)節(jié)信息就越豐富。受硬件、功耗和帶寬等的限制,圖像和視頻的分辨率在實(shí)際應(yīng)用中往往達(dá)不到理想狀態(tài),因此只能在這些因素之間進(jìn)行均衡。在實(shí)際應(yīng)用中,單純地通過(guò)硬件的方式來(lái)提升圖像分辨率的代價(jià)太高。因此,在當(dāng)前的硬件基礎(chǔ)上,通過(guò)算法提升圖像和視頻的分辨率成為研究界和工業(yè)應(yīng)用所期盼的重要技術(shù)之一[2]。
按照輸入圖像的數(shù)量,可以將圖像超分辨率分為單幀圖像超分辨率算法和多幀圖像超分辨率算法。單幀圖像的超分辨率算法包含基于插值的和基于學(xué)習(xí)的方法?;诓逯档姆椒▓?zhí)行速度快,但得到的結(jié)果有時(shí)過(guò)于模糊,可能存在鋸齒效應(yīng),復(fù)原質(zhì)量較差?;趯W(xué)習(xí)的方法具有更好的處理效果,引起了大家的普遍關(guān)注[3-5]。
近年來(lái),基于學(xué)習(xí)的單幀圖像超分辨率算法通過(guò)樣例數(shù)據(jù)集,學(xué)習(xí)低分辨率圖像到高分辨率圖像間的非線性映射關(guān)系。通過(guò)構(gòu)建低、高分辨率圖像的訓(xùn)練數(shù)據(jù)集進(jìn)行訓(xùn)練。當(dāng)訓(xùn)練數(shù)據(jù)集包含的信息充足時(shí),基于學(xué)習(xí)的單幀圖像超分辨率算法可以得到具有很高質(zhì)量的超分辨率結(jié)果。傳統(tǒng)的基于學(xué)習(xí)的方法包括最近鄰[6]、鄰域嵌入[7]、稀疏表示[8]、錨近鄰回歸[9]和隨機(jī)森林[10]等機(jī)器學(xué)習(xí)方法。
董超等[11]將卷積神經(jīng)網(wǎng)絡(luò)引入到單幀圖像超分辨率中。在此之后,深度學(xué)習(xí)在單幀圖像超分辨率中得到了廣泛應(yīng)用。He等[12]提出了深度殘差學(xué)習(xí)方法,可以解決圖像識(shí)別中深層卷積神經(jīng)網(wǎng)絡(luò)的降質(zhì)問(wèn)題。深層卷積網(wǎng)絡(luò)的降質(zhì)問(wèn)題是指隨著網(wǎng)絡(luò)層數(shù)的加深,網(wǎng)絡(luò)的擬合能力不增反降。深度殘差網(wǎng)絡(luò)通過(guò)在卷積神經(jīng)網(wǎng)絡(luò)中添加跨步連接,使得深層卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)化變得容易,從而提高了卷積神經(jīng)網(wǎng)絡(luò)的容量和表達(dá)能力。深度殘差學(xué)習(xí)被引入到單幀圖像超分辨率中取得了視覺(jué)質(zhì)量很好的超分辨率結(jié)果。
上述單幀圖像的超分辨率算法可以直接用于視頻超分辨率重建,但由于沒(méi)有利用視頻中的幀間互補(bǔ)信息,往往不能取得很好的超分辨率結(jié)果。目前,通過(guò)對(duì)多幀圖像超分辨率的研究,將超分辨率分成了4個(gè)階段:特征提取、對(duì)齊(對(duì)準(zhǔn))、融合以及重建。當(dāng)視頻中有大范圍運(yùn)動(dòng)且模糊嚴(yán)重時(shí),對(duì)齊以及融合算法決定了最終視頻超分辨率的質(zhì)量。生成對(duì)抗網(wǎng)絡(luò)(Generative Adversarial Networks,GAN)[13]通過(guò)生成器和判別器之間的對(duì)抗使生成器生成更加逼真的結(jié)果,得益于這一特性,采用GAN結(jié)構(gòu)做單幀圖像和多幀圖像超分辨率的工作引起了很多學(xué)者的關(guān)注。
本文采用SRGAN[14]的基礎(chǔ)結(jié)構(gòu)用于多幀圖像,超分辨率生成器部分采用EDVR[15]中的PCD模塊用于相鄰幀對(duì)齊,TSA模塊用于相鄰幀融合。同樣,也將生成器部分的BN層去除減少人為制造的噪聲。
多幀圖像的相鄰幀之間有較強(qiáng)的相關(guān)性。多幀圖像超分辨率問(wèn)題涉及到了三維領(lǐng)域,因?yàn)槎嗔藭r(shí)間變量,隨著時(shí)間的推移,圖像中的物體會(huì)產(chǎn)生一定程度的位移。如果通過(guò)計(jì)算得到了這個(gè)位移矢量,就可以將發(fā)生位移之后的圖像減去這個(gè)位移矢量,減去位移矢量后的圖像就和發(fā)生位移前的圖像達(dá)到了對(duì)齊的效果。之后,將對(duì)齊的幾個(gè)相鄰幀進(jìn)行融合操作,可以得到更多的細(xì)節(jié)信息,再進(jìn)行圖像的重建時(shí)可以達(dá)到更好的超分辨率效果。更好的對(duì)齊算法能夠更精確地估計(jì)圖像的位移矢量,下一步融合可以通過(guò)對(duì)齊的相鄰幀得到更多的細(xì)節(jié)信息。因此,多幀圖像超分辨率中最重要的操作是對(duì)齊和融合。發(fā)生位移后的圖像減去位移矢量,也叫做運(yùn)動(dòng)補(bǔ)償。光流法之類的算法都是采用顯式的運(yùn)動(dòng)補(bǔ)償,即先求出位移矢量,再用扭曲的操作進(jìn)行運(yùn)動(dòng)補(bǔ)償。采用隱式運(yùn)動(dòng)補(bǔ)償方式的多幀圖像超分辨率網(wǎng)絡(luò)可以達(dá)到比光流法更好的效果。相鄰幀對(duì)齊算法PCD來(lái)自于EDVR,它采用隱式的運(yùn)動(dòng)補(bǔ)償方式,達(dá)到了很好的相鄰幀對(duì)齊效果。相鄰幀融合算法TSA來(lái)自于EDVR,采用基于時(shí)間和空間注意力機(jī)制的融合算法。將結(jié)合PCD和TSA之后的GAN網(wǎng)絡(luò)稱為SRGAN-PT。
隨著對(duì)多幀圖像超分辨率的研究,一般將這個(gè)過(guò)程分解為4部分:特征提取、相鄰幀對(duì)齊、相鄰幀融合和圖像重建。每部分是獨(dú)立的功能模塊,這樣能夠達(dá)到更好的效果,也更容易對(duì)某一具體的功能進(jìn)行優(yōu)化。生成器模型如圖1所示。
圖1 生成器模型Fig.1 Generator model
基于GAN的多幀圖像超分辨率模型的生成器主要由相鄰幀對(duì)齊PCD模塊、相鄰幀融合TSA模塊和圖像重建模塊組成。下面描述一下生成器的大體計(jì)算過(guò)程。給定2N+1個(gè)連續(xù)的低質(zhì)量視頻幀 ,將中間幀作為參考幀,其他幀作為相鄰幀。視頻恢復(fù)的目的是估計(jì)出一個(gè)高質(zhì)量的參考幀,它接近于ground truth幀。每一個(gè)特征級(jí)別的相鄰幀都經(jīng)過(guò)PCD模塊處理與參考幀對(duì)齊,TSA融合模型融合不同幀的圖像信息,這2個(gè)過(guò)程將在后面詳細(xì)描述。融合后的特征會(huì)經(jīng)過(guò)重建模塊,重建模塊是一個(gè)簡(jiǎn)單的殘差塊之間的串聯(lián)結(jié)構(gòu),重建后的特征圖再經(jīng)過(guò)上采樣操作得到初步超分辨率幀,最后上采樣后的幀會(huì)跟初始輸入的直接上采樣的參考幀進(jìn)行加和操作得到最終的超分辨率幀。
包含金字塔結(jié)構(gòu)、級(jí)聯(lián)結(jié)構(gòu)和可變形卷積的對(duì)齊模塊(PCD):首先介紹可變形卷積在對(duì)齊中的應(yīng)用,將每個(gè)相鄰幀的特征與參考幀的特征對(duì)齊。不同于基于光流的方法,變形對(duì)齊應(yīng)用在每一幀的特征上,F(xiàn)t+i,i∈[-N,+N]。當(dāng)給定一個(gè)有K個(gè)采樣位置的可變形卷積核,令wk和pk為權(quán)重以及第k個(gè)采樣位置的特定偏移。例如一個(gè)3×3的卷積核,它的K=9,并且pk∈{(-1,-1),(-1,0),…,(1,1)}。在每個(gè)p0位置處對(duì)齊后的特征:
(1)
可學(xué)習(xí)的偏差ΔPk和調(diào)制標(biāo)量Δmk由相鄰幀和參考幀連接后的特征來(lái)預(yù)測(cè):
ΔPt+i=f([Ft+i,Ft]),i∈[-N,+N],
(2)
式中,ΔP={Δp};f是由一些卷積層組成的函數(shù);[.,.]表示拼接操作。為了方便,只考慮可學(xué)習(xí)偏差ΔPk,忽略調(diào)制參數(shù)Δmk。因?yàn)閜0+pk+Δpk是分?jǐn)?shù),所以需要用雙線性插值來(lái)對(duì)坐標(biāo)取整。為了解決復(fù)雜的運(yùn)動(dòng)和大視差對(duì)準(zhǔn)問(wèn)題,采用了 PCD模塊,即:金字塔處理和級(jí)聯(lián)細(xì)化。
PCD對(duì)齊模塊包括金字塔結(jié)構(gòu)、級(jí)聯(lián)和可變形卷積,如圖2所示。
(3)
(4)
圖2 PCD對(duì)齊模塊,包括金字塔結(jié)構(gòu)、級(jí)聯(lián)和可變形卷積Fig.2 PCD alignment module,including pyramid structure,cascade and deformable convolution
式中,(.)↑s表示s倍擴(kuò)大;DConv為可變形卷積;g為具有多個(gè)卷積層的通用函數(shù)。采用雙線性插值實(shí)現(xiàn)2倍上采樣。本文使用3層金字塔,即L=3。為了降低計(jì)算成本,卷積層的特征圖沒(méi)有隨著空間尺寸的減小而增加通道數(shù)。在金字塔結(jié)構(gòu)之后,后續(xù)的可變形對(duì)齊被級(jí)聯(lián)以進(jìn)一步細(xì)化粗對(duì)齊的特征。PCD模塊以由粗到細(xì)的方式將對(duì)齊提高亞像素精度。PCD對(duì)準(zhǔn)模塊與整個(gè)框架一起聯(lián)合學(xué)習(xí),沒(méi)有額外的監(jiān)督或其他任務(wù)例如光流的預(yù)訓(xùn)練。
基于空間和時(shí)間注意力機(jī)制的融合算法,幀間的時(shí)間關(guān)系和幀內(nèi)的空間關(guān)系是融合的關(guān)鍵,因?yàn)椋孩?由于遮擋、模糊區(qū)域和視差問(wèn)題,不同的相鄰幀不能提供相同的信息;② 沒(méi)有對(duì)齊以及錯(cuò)誤對(duì)齊對(duì)后續(xù)重建效果產(chǎn)生不利影響。因此,在像素級(jí)對(duì)相鄰幀進(jìn)行動(dòng)態(tài)聚合是有效融合必不可少的。為了解決上述問(wèn)題,采用TSA融合模塊,在每幀上分配像素級(jí)的聚合權(quán)重。在融合過(guò)程中采用了時(shí)間和空間的注意力機(jī)制,如圖3所示。
圖3 TSA融合模塊,包括時(shí)間和空間注意力機(jī)制Fig.3 TSA fusion module,including time and space attention mechanism
時(shí)間注意力的目標(biāo)是計(jì)算在嵌入(embedding)空間的幀的相似性。在embedding 空間中,相鄰幀更容易跟參考幀相似,應(yīng)該被給予更多的關(guān)注。對(duì)于每一幀,相似距離h為:
(5)
(6)
(7)
式中,⊙以及 [.,.,.] 表示element-wise multiplication以及concatenation。 從融合的特征中計(jì)算出空間注意掩碼,采用金字塔設(shè)計(jì)來(lái)增加注意力接受域,融合的特征被掩模通過(guò)元素的乘法和加法調(diào)制。
判別器部分跟上文的SRGAN-PR的判別器部分一致。當(dāng)生成器通過(guò)多幀圖像合成最后的超分辨率的圖像后,會(huì)將其跟原始的高分辨率圖像一起作為判別器的輸入,得到生成圖像是真實(shí)圖像的概率。
生成器最終損失函數(shù)由2部分組成,一個(gè)CharbonnierLoss:
(8)
(9)
式中,DθD(GθG(I[t-N:t+N]))表示重建圖像GθG(I[t-N:t+N])是真實(shí)高分辨率圖像的估計(jì)概率。為了更佳的梯度,將損失定義為-logDθD(GθG(I[t-N:t+N]))而不是log[1-DθD(GθG(I[t-N:t+N]))]。最終的損失函數(shù)為:
(10)
首先介紹了實(shí)驗(yàn)環(huán)境和數(shù)據(jù),然后介紹了實(shí)驗(yàn)過(guò)程,最后將本文的方法和其他相關(guān)算法進(jìn)行對(duì)比,證明本文算法在視頻流超分辨率方面的優(yōu)勢(shì)。
由于Vimeo-90K全部數(shù)據(jù)量太大,所以將它的測(cè)試數(shù)據(jù)集當(dāng)作本文的訓(xùn)練數(shù)據(jù)集,將Vid4-41作為測(cè)試集。訓(xùn)練集數(shù)據(jù)集由7 824個(gè)小視頻組成,每個(gè)視頻有7幀圖像,圖像尺寸為448 pixel×256 pixel。通過(guò)對(duì)高分辨率圖像使用bicubic算法4倍下采樣得到低分辨率圖像,圖像尺寸為112 pixel×64 pixel。
PCD對(duì)齊模塊采用5個(gè)殘差塊(RB)進(jìn)行特征提取。在重構(gòu)模塊中使用了10個(gè)RBs。每個(gè)剩余塊中的通道大小設(shè)置為64。數(shù)據(jù)集圖像大小為112 pixel×64 pixel×3 pixel。圖像讀入后進(jìn)行隨機(jī)的剪裁,增加數(shù)據(jù)的豐富性。Mini-batch大小設(shè)置為16。網(wǎng)絡(luò)需要5個(gè)連續(xù)的幀作為輸入。用隨機(jī)水平翻轉(zhuǎn)以及90°旋轉(zhuǎn)增加訓(xùn)練數(shù)據(jù)。設(shè)置β1=0.9,β2=0.999的Adam optimizer來(lái)訓(xùn)練模型 。學(xué)習(xí)率初始化為4×10-4。使用PyTorch框架實(shí)現(xiàn)超分辨率模型。使用Geforce RTX 1080Ti單卡服務(wù)器訓(xùn)練網(wǎng)絡(luò)。
幾種方法的超分辨結(jié)果對(duì)比如圖4所示。
(a) Bicubic
(b) EDVR
(c) 本文方法
(d) 原始高清圖像圖4 幾種方法的超分辨結(jié)果對(duì)比Fig.4 Comparison of super-resolution results of several methods
由圖4可以看出,將GAN跟PCD和TSA結(jié)合后的網(wǎng)絡(luò)初步達(dá)到了期望的結(jié)果,比Bicubic效果好了不少,但是跟目前的前沿模型EDVR有明顯差距。
PSNR結(jié)果對(duì)比如表1所示。
表1 PSNR結(jié)果對(duì)比Tab.1 Comparison of PSNR results
SSIM結(jié)果對(duì)比如表2所示。
表2 SSIM結(jié)果對(duì)比Tab.2 Comparison of SSIM results
由PSNR和SSIM的計(jì)算結(jié)果來(lái)看,跟前沿模型有不小差距。分析可能的原因是對(duì)于GAN的調(diào)教能力欠缺,另外受限于機(jī)器,網(wǎng)絡(luò)深度比較淺,訓(xùn)練數(shù)據(jù)集的規(guī)模較小,但是總體上還是達(dá)到了對(duì)于視頻超分的目的。
對(duì)于多幀圖像超分辨率,最關(guān)鍵的2個(gè)步驟是相鄰幀對(duì)齊以及相鄰幀融合。本文采用SRGAN的基礎(chǔ)結(jié)構(gòu),并在此之上采用PCD模塊和TSA模塊解決上述問(wèn)題。傳統(tǒng)光流算法只適用于小范圍位移場(chǎng)景,而PCD算法可以適用于大范圍的位移,以及畫(huà)面模糊等場(chǎng)景。PCD采用金字塔結(jié)構(gòu)從粗到細(xì)地進(jìn)行幀間對(duì)齊,再級(jí)聯(lián)一個(gè)可變性卷積模塊增加模型的魯棒性。相鄰幀融合之后需要充分考慮幀與幀之間的空間和時(shí)間冗余,本文的TSA模塊,采用基于時(shí)間和空間注意力機(jī)制的融合算法,時(shí)間注意力和空間注意力可以將對(duì)齊幀進(jìn)行修整,與參考幀更相似的部分會(huì)給予更高的權(quán)重,之后的融合過(guò)程會(huì)保留更多有用信息,令融合后的參考幀內(nèi)容更加豐富。同時(shí)保留了SRGAN的判別器部分,令生成器能生成更多的內(nèi)容信息。實(shí)驗(yàn)結(jié)果表明,上述模塊設(shè)計(jì)有助于解決多幀圖像超分辨率中的相鄰幀信息之間的對(duì)齊,以及相鄰幀之間的融合問(wèn)題,給多幀圖像的超分辨率方法提供了更多的可能性。