李耀兵,李 赟,李 俊
(國家工業信息安全發展研究中心,北京 100040)
超分辨率的研究按照對象可劃分為單幀圖像超分辨率和多幀圖像(視頻)超分辨率[1]。由于多幀圖像多出了時間維度,簡單地將視頻看作是一個個單幀圖像,通過對單幀圖像的處理來實現對視頻的超分辨率任務,結果通常是視頻變得不再平滑,視頻內的物體會有移位的現象。圖像分辨率定義的直觀表現是圖像的像素數目,更大的感光元件才能捕獲更多的細節信息。因此,要得到高分辨率圖像需要感光元件(圖像傳感器)有更大的感光面積,同時需要更大的帶寬來傳輸高分辨率的圖像。圖像的分辨率越高,圖像的細節信息就越豐富。受硬件、功耗和帶寬等的限制,圖像和視頻的分辨率在實際應用中往往達不到理想狀態,因此只能在這些因素之間進行均衡。在實際應用中,單純地通過硬件的方式來提升圖像分辨率的代價太高。因此,在當前的硬件基礎上,通過算法提升圖像和視頻的分辨率成為研究界和工業應用所期盼的重要技術之一[2]。
按照輸入圖像的數量,可以將圖像超分辨率分為單幀圖像超分辨率算法和多幀圖像超分辨率算法。單幀圖像的超分辨率算法包含基于插值的和基于學習的方法?;诓逯档姆椒▓绦兴俣瓤?,但得到的結果有時過于模糊,可能存在鋸齒效應,復原質量較差?;趯W習的方法具有更好的處理效果,引起了大家的普遍關注[3-5]。
近年來,基于學習的單幀圖像超分辨率算法通過樣例數據集,學習低分辨率圖像到高分辨率圖像間的非線性映射關系。通過構建低、高分辨率圖像的訓練數據集進行訓練。當訓練數據集包含的信息充足時,基于學習的單幀圖像超分辨率算法可以得到具有很高質量的超分辨率結果。傳統的基于學習的方法包括最近鄰[6]、鄰域嵌入[7]、稀疏表示[8]、錨近鄰回歸[9]和隨機森林[10]等機器學習方法。
董超等[11]將卷積神經網絡引入到單幀圖像超分辨率中。在此之后,深度學習在單幀圖像超分辨率中得到了廣泛應用。He等[12]提出了深度殘差學習方法,可以解決圖像識別中深層卷積神經網絡的降質問題。深層卷積網絡的降質問題是指隨著網絡層數的加深,網絡的擬合能力不增反降。深度殘差網絡通過在卷積神經網絡中添加跨步連接,使得深層卷積神經網絡的優化變得容易,從而提高了卷積神經網絡的容量和表達能力。深度殘差學習被引入到單幀圖像超分辨率中取得了視覺質量很好的超分辨率結果。
上述單幀圖像的超分辨率算法可以直接用于視頻超分辨率重建,但由于沒有利用視頻中的幀間互補信息,往往不能取得很好的超分辨率結果。目前,通過對多幀圖像超分辨率的研究,將超分辨率分成了4個階段:特征提取、對齊(對準)、融合以及重建。當視頻中有大范圍運動且模糊嚴重時,對齊以及融合算法決定了最終視頻超分辨率的質量。生成對抗網絡(Generative Adversarial Networks,GAN)[13]通過生成器和判別器之間的對抗使生成器生成更加逼真的結果,得益于這一特性,采用GAN結構做單幀圖像和多幀圖像超分辨率的工作引起了很多學者的關注。
本文采用SRGAN[14]的基礎結構用于多幀圖像,超分辨率生成器部分采用EDVR[15]中的PCD模塊用于相鄰幀對齊,TSA模塊用于相鄰幀融合。同樣,也將生成器部分的BN層去除減少人為制造的噪聲。
多幀圖像的相鄰幀之間有較強的相關性。多幀圖像超分辨率問題涉及到了三維領域,因為多了時間變量,隨著時間的推移,圖像中的物體會產生一定程度的位移。如果通過計算得到了這個位移矢量,就可以將發生位移之后的圖像減去這個位移矢量,減去位移矢量后的圖像就和發生位移前的圖像達到了對齊的效果。之后,將對齊的幾個相鄰幀進行融合操作,可以得到更多的細節信息,再進行圖像的重建時可以達到更好的超分辨率效果。更好的對齊算法能夠更精確地估計圖像的位移矢量,下一步融合可以通過對齊的相鄰幀得到更多的細節信息。因此,多幀圖像超分辨率中最重要的操作是對齊和融合。發生位移后的圖像減去位移矢量,也叫做運動補償。光流法之類的算法都是采用顯式的運動補償,即先求出位移矢量,再用扭曲的操作進行運動補償。采用隱式運動補償方式的多幀圖像超分辨率網絡可以達到比光流法更好的效果。相鄰幀對齊算法PCD來自于EDVR,它采用隱式的運動補償方式,達到了很好的相鄰幀對齊效果。相鄰幀融合算法TSA來自于EDVR,采用基于時間和空間注意力機制的融合算法。將結合PCD和TSA之后的GAN網絡稱為SRGAN-PT。
隨著對多幀圖像超分辨率的研究,一般將這個過程分解為4部分:特征提取、相鄰幀對齊、相鄰幀融合和圖像重建。每部分是獨立的功能模塊,這樣能夠達到更好的效果,也更容易對某一具體的功能進行優化。生成器模型如圖1所示。

圖1 生成器模型Fig.1 Generator model
基于GAN的多幀圖像超分辨率模型的生成器主要由相鄰幀對齊PCD模塊、相鄰幀融合TSA模塊和圖像重建模塊組成。下面描述一下生成器的大體計算過程。給定2N+1個連續的低質量視頻幀 ,將中間幀作為參考幀,其他幀作為相鄰幀。視頻恢復的目的是估計出一個高質量的參考幀,它接近于ground truth幀。每一個特征級別的相鄰幀都經過PCD模塊處理與參考幀對齊,TSA融合模型融合不同幀的圖像信息,這2個過程將在后面詳細描述。融合后的特征會經過重建模塊,重建模塊是一個簡單的殘差塊之間的串聯結構,重建后的特征圖再經過上采樣操作得到初步超分辨率幀,最后上采樣后的幀會跟初始輸入的直接上采樣的參考幀進行加和操作得到最終的超分辨率幀。
包含金字塔結構、級聯結構和可變形卷積的對齊模塊(PCD):首先介紹可變形卷積在對齊中的應用,將每個相鄰幀的特征與參考幀的特征對齊。不同于基于光流的方法,變形對齊應用在每一幀的特征上,Ft+i,i∈[-N,+N]。當給定一個有K個采樣位置的可變形卷積核,令wk和pk為權重以及第k個采樣位置的特定偏移。例如一個3×3的卷積核,它的K=9,并且pk∈{(-1,-1),(-1,0),…,(1,1)}。在每個p0位置處對齊后的特征:
(1)
可學習的偏差ΔPk和調制標量Δmk由相鄰幀和參考幀連接后的特征來預測:
ΔPt+i=f([Ft+i,Ft]),i∈[-N,+N],
(2)
式中,ΔP={Δp};f是由一些卷積層組成的函數;[.,.]表示拼接操作。為了方便,只考慮可學習偏差ΔPk,忽略調制參數Δmk。因為p0+pk+Δpk是分數,所以需要用雙線性插值來對坐標取整。為了解決復雜的運動和大視差對準問題,采用了 PCD模塊,即:金字塔處理和級聯細化。
PCD對齊模塊包括金字塔結構、級聯和可變形卷積,如圖2所示。

(3)
(4)

圖2 PCD對齊模塊,包括金字塔結構、級聯和可變形卷積Fig.2 PCD alignment module,including pyramid structure,cascade and deformable convolution
式中,(.)↑s表示s倍擴大;DConv為可變形卷積;g為具有多個卷積層的通用函數。采用雙線性插值實現2倍上采樣。本文使用3層金字塔,即L=3。為了降低計算成本,卷積層的特征圖沒有隨著空間尺寸的減小而增加通道數。在金字塔結構之后,后續的可變形對齊被級聯以進一步細化粗對齊的特征。PCD模塊以由粗到細的方式將對齊提高亞像素精度。PCD對準模塊與整個框架一起聯合學習,沒有額外的監督或其他任務例如光流的預訓練。
基于空間和時間注意力機制的融合算法,幀間的時間關系和幀內的空間關系是融合的關鍵,因為:① 由于遮擋、模糊區域和視差問題,不同的相鄰幀不能提供相同的信息;② 沒有對齊以及錯誤對齊對后續重建效果產生不利影響。因此,在像素級對相鄰幀進行動態聚合是有效融合必不可少的。為了解決上述問題,采用TSA融合模塊,在每幀上分配像素級的聚合權重。在融合過程中采用了時間和空間的注意力機制,如圖3所示。

圖3 TSA融合模塊,包括時間和空間注意力機制Fig.3 TSA fusion module,including time and space attention mechanism
時間注意力的目標是計算在嵌入(embedding)空間的幀的相似性。在embedding 空間中,相鄰幀更容易跟參考幀相似,應該被給予更多的關注。對于每一幀,相似距離h為:
(5)

(6)
(7)
式中,⊙以及 [.,.,.] 表示element-wise multiplication以及concatenation。 從融合的特征中計算出空間注意掩碼,采用金字塔設計來增加注意力接受域,融合的特征被掩模通過元素的乘法和加法調制。
判別器部分跟上文的SRGAN-PR的判別器部分一致。當生成器通過多幀圖像合成最后的超分辨率的圖像后,會將其跟原始的高分辨率圖像一起作為判別器的輸入,得到生成圖像是真實圖像的概率。
生成器最終損失函數由2部分組成,一個CharbonnierLoss:
(8)

(9)
式中,DθD(GθG(I[t-N:t+N]))表示重建圖像GθG(I[t-N:t+N])是真實高分辨率圖像的估計概率。為了更佳的梯度,將損失定義為-logDθD(GθG(I[t-N:t+N]))而不是log[1-DθD(GθG(I[t-N:t+N]))]。最終的損失函數為:
(10)
首先介紹了實驗環境和數據,然后介紹了實驗過程,最后將本文的方法和其他相關算法進行對比,證明本文算法在視頻流超分辨率方面的優勢。
由于Vimeo-90K全部數據量太大,所以將它的測試數據集當作本文的訓練數據集,將Vid4-41作為測試集。訓練集數據集由7 824個小視頻組成,每個視頻有7幀圖像,圖像尺寸為448 pixel×256 pixel。通過對高分辨率圖像使用bicubic算法4倍下采樣得到低分辨率圖像,圖像尺寸為112 pixel×64 pixel。
PCD對齊模塊采用5個殘差塊(RB)進行特征提取。在重構模塊中使用了10個RBs。每個剩余塊中的通道大小設置為64。數據集圖像大小為112 pixel×64 pixel×3 pixel。圖像讀入后進行隨機的剪裁,增加數據的豐富性。Mini-batch大小設置為16。網絡需要5個連續的幀作為輸入。用隨機水平翻轉以及90°旋轉增加訓練數據。設置β1=0.9,β2=0.999的Adam optimizer來訓練模型 。學習率初始化為4×10-4。使用PyTorch框架實現超分辨率模型。使用Geforce RTX 1080Ti單卡服務器訓練網絡。
幾種方法的超分辨結果對比如圖4所示。

(a) Bicubic

(b) EDVR

(c) 本文方法

(d) 原始高清圖像圖4 幾種方法的超分辨結果對比Fig.4 Comparison of super-resolution results of several methods
由圖4可以看出,將GAN跟PCD和TSA結合后的網絡初步達到了期望的結果,比Bicubic效果好了不少,但是跟目前的前沿模型EDVR有明顯差距。
PSNR結果對比如表1所示。

表1 PSNR結果對比Tab.1 Comparison of PSNR results
SSIM結果對比如表2所示。

表2 SSIM結果對比Tab.2 Comparison of SSIM results
由PSNR和SSIM的計算結果來看,跟前沿模型有不小差距。分析可能的原因是對于GAN的調教能力欠缺,另外受限于機器,網絡深度比較淺,訓練數據集的規模較小,但是總體上還是達到了對于視頻超分的目的。
對于多幀圖像超分辨率,最關鍵的2個步驟是相鄰幀對齊以及相鄰幀融合。本文采用SRGAN的基礎結構,并在此之上采用PCD模塊和TSA模塊解決上述問題。傳統光流算法只適用于小范圍位移場景,而PCD算法可以適用于大范圍的位移,以及畫面模糊等場景。PCD采用金字塔結構從粗到細地進行幀間對齊,再級聯一個可變性卷積模塊增加模型的魯棒性。相鄰幀融合之后需要充分考慮幀與幀之間的空間和時間冗余,本文的TSA模塊,采用基于時間和空間注意力機制的融合算法,時間注意力和空間注意力可以將對齊幀進行修整,與參考幀更相似的部分會給予更高的權重,之后的融合過程會保留更多有用信息,令融合后的參考幀內容更加豐富。同時保留了SRGAN的判別器部分,令生成器能生成更多的內容信息。實驗結果表明,上述模塊設計有助于解決多幀圖像超分辨率中的相鄰幀信息之間的對齊,以及相鄰幀之間的融合問題,給多幀圖像的超分辨率方法提供了更多的可能性。