彭學桂
(上海理工大學 光電信息與計算機工程學院,上海 200093)
單幅圖像的超分辨重建(Single Image Super Resolution,SISR)是計算機視覺中的子任務,目標是從一幅低分辨率(Low Resolution,LR)圖像中恢復出高清圖像(High Resolution,HR)。隨著圖像處理技術的日趨成熟,超分辨率重建作為一種提高圖像分辨率的方法,其應用領域也越來越廣,已被用于人臉識別、衛(wèi)星遙感圖像、銀行安全監(jiān)控系統(tǒng)等領域。
深度卷積神經(jīng)網(wǎng)絡(CNN)在圖像處理方面效果顯著。Dong[1]等人在2014 年提出SRCNN,第一次將卷積網(wǎng)絡應用于超分辨率(Super Resolution,SR)重建;Lan[2]等人為了提高網(wǎng)絡的計算效率,設計了一種密集型的輕量級網(wǎng)絡,可以用于更強的多尺度特征表達和特征相關學習;Shi[3]等人提出的高效率亞像素卷積模型(Efficient Sub -Pixel Convolution Networks,ESPCN),模型引入亞像素卷積,是一種高效、快速、無參的像素重排列上采樣方式;Hui[4]等人提出了一種新的感知圖像超分辨率方法,通過構建一個階段式網(wǎng)絡,逐步產(chǎn)生視覺上高質量的結果;Tong[5]等人構建了SRDenseNet,在稠密塊(Dense block)中將每一層的特征都輸入給之后的所有層,使所有層的特征都串聯(lián)起來,而不是像ResNet 那樣直接相加。這樣的結構給整個網(wǎng)絡帶來了減輕梯度消失、加強特征傳播、支持特征復用、減少參數(shù)數(shù)量的優(yōu)點;Zhang[6]等人設計了一種無監(jiān)督的多循環(huán)模型結構,以生成對抗網(wǎng)絡(Generative Adversarial Networks,GAN)作為基礎單元,將有噪聲和模糊的低分辨率向量映射到一個無噪聲的低分辨率向量空間;Wang[7]等人在超分辨率重建生成對抗模 型(Super Resolution Generative Adversarial Networks,SRGAN)的基礎上,,去除網(wǎng)絡中所有的正則化層,并將殘差單元由串聯(lián)變?yōu)槊芗B接,得到增強的超分辨率重建生成對抗模型。
近年來誕生了各種各樣的超分辨率網(wǎng)絡,但超分辨率重建本身依舊存在很多問題。首先,超分辨率重建是一個病態(tài)問題,對于同一個低分辨率圖像,其對應的高分辨率圖片的解并不唯一,即存在不適定性,為了約束解空間,通常需要可靠的先驗信息;其次,隨著重建圖片的尺寸擴大,問題的復雜性也會增加。在更高的因子下,恢復丟失的細節(jié)信息會更加復雜,經(jīng)常導致錯誤信息的再現(xiàn)。此外,網(wǎng)絡輸出圖片質量的評估并不簡單,量化指標與人的感知只有松散的關聯(lián)。最關鍵的,這些網(wǎng)絡大多數(shù)采用簡單的雙三次下采樣,從高質量圖像構建低分辨率和高分辨率對用于訓練,可能會丟失與頻率相關的細節(jié),在現(xiàn)實世界的圖像超分辨率中的效果并不好。
針對上述問題,本文提出一種GCA 網(wǎng)絡。首先通過一個圖像退化框架估計各種模糊核以及真實的噪聲分布,可以獲得與真實世界圖像共享一個公共域的圖像,使網(wǎng)絡輸入的低分辨率圖片與高分辨率圖片處在一個域中,提高了模型在現(xiàn)實世界圖片上測試的效果;其次,生成模塊使用殘差注意力稠密塊(Residual in Residual Dense,RRDB)和殘差塊(Residual Network,ResNet)對圖片高低頻信息進行融合,為了使網(wǎng)絡在各層次特征信息融合的過程中更專注于圖片的高層次信息,采用注意力機制,將RRDB 模塊輸出后的特征向量作為高層次特征信息的參數(shù),再使用sub-pixel 網(wǎng)絡上采樣得到超分辨率圖片;在判別模塊中使用膠囊網(wǎng)絡(Capsule Net)對生成模塊輸出的超分辨率圖片及真實的高分辨率圖片進行判別。
早期的超分辨率重建技術可以分為3 類:基于插值,基于重建,基于學習的方法。基于插值的方法在傳統(tǒng)方法中相對來說實現(xiàn)簡單,且應用廣泛,但是這些線性的模型不利于恢復高頻細節(jié)信息;基于學習的稀疏表示技術通過使用先驗知識增強了線性模型的能力,假設任意的自然圖像可以被字典的元素稀疏表示,需要大量計算資源;基于重建的方法通常用于多幀圖像的超分辨率重建,該技術需要結合先驗知識。
單幅圖片超分辨率重建是一個逆問題,對于一個低分辨率圖像,可能存在許多不同的高分辨率圖像與之對應,因此通常在求解高分辨率圖像時會加一個先驗信息進行規(guī)范化約束。在傳統(tǒng)的方法中,這個先驗信息可以通過若干成對出現(xiàn)的低-高分辨率圖像的實例中學到。而基于深度學習的超分辨率重建(Super Resolution,SR)通過神經(jīng)網(wǎng)絡直接學習分辨率圖像到高分辨率圖像的端到端的映射函數(shù)。
基于卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks,CNN)解決單圖像超分辨率重建的初步方法是通過3 層的卷積網(wǎng)絡對輸入圖片做卷積處理。Singh[8]等人提出將圖像超分辨率問題分為多個子問題,然后利用神經(jīng)網(wǎng)絡來處理的方法。為了解決信息流隨網(wǎng)絡深度而削弱的問題,Xu[9]等人根據(jù)循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network,RNN)的原理設計了一個輕量級的基于反饋的遞歸神經(jīng)網(wǎng)絡(Feedback Recurrent Neural Network FRNN);Li[10]等人根據(jù)該思路,提出了基于反饋連接和類循環(huán)神經(jīng)網(wǎng)絡結構的SRFBN 反饋網(wǎng)絡;Zhang[11]等人采用了一種基于深度卷積神經(jīng)網(wǎng)絡的多層降級超分辨率模 型(Super Resolution Multiple Degradations,SRMD);Fritsche[12]等人提出了通過無監(jiān)督方式訓練網(wǎng)絡來學習退化率的模型(Distant Supervision GAN,DSGAN)。
目前,注意力機制已經(jīng)逐漸運用在圖像及其它一些任務上,取得了顯著的效果。Yang[13]等人提出將殘差網(wǎng)絡和稠密跳躍連接結合起來;Huang[14]等設計了一個雙路徑的注意力網(wǎng)絡,將殘差連接和稠密連接組合,以此來進行不同層次特征信息的互補;Fu[15]等人設計了一個尺度注意力模塊,通過引入尺度因子作為先驗知識來學習低分辨率圖像的判別特征,利用坐標信息和比例因子的二次多項式預測像素級重構核,實現(xiàn)任意比例因子的超分辨率。
圖像超分辨率的重建目的是從LR圖像中恢復出相應的HR圖像。為了得到相對應的成對數(shù)據(jù)集,通常的做法是將高分辨率圖片降級,以此來獲得低分辨率圖片。一般來說,LR圖像ILR建模為退化的輸出,式(1):
其中,D為退化映射函數(shù);IHR為對應的HR圖像;δ為退化函數(shù)中的超參數(shù)。
往往降級退化過程是未知的,只是得到LR圖片。需要從LR圖片中恢復和真實標簽樣本IHR一致的超分辨率圖片式(2):
其中,F(xiàn)是超分辨率模型,θ代表整個模型F的超參數(shù)。
雖然退化過程是未知的,并且可能受到各種因素的影響,如:壓縮偽像、各向異性退化、傳感器噪聲和散斑噪聲,但是隨著不斷地嘗試對退化映射建模,現(xiàn)在大多數(shù)工作將降級直接建模為單個下采樣操作,式(3):
其中,↓s為下采樣操作,s為比例因子。
事實上,大多數(shù)的超分辨率數(shù)據(jù)集構造都是通過這種方式,下采樣一般采用雙三次插值。
本文采用一種新的退化映射函數(shù),式(4):
其中,IHR*k表示模糊核k和HR圖像IHR之間的卷積,nε是以ε為標準差的噪聲。
實驗表明,該降級函數(shù)得到的LR圖片比簡單的插值下采樣更接近真實世界的圖片。
GCA 模型的整體結構如圖1 所示。模型分為3部分,分別為預處理模塊(Preprocessed Module)、生成器模塊(Generator Module)以及判別器模塊(Discriminator Module)。
圖1 GCA 的整體模型Fig.1 The GCA overall model
本文使用一種基于核估計和噪聲注入的真實圖像退化方法。假設LR圖像通過式(5)退化方法獲得。
其中,k和n分別表示模糊核和噪聲。
為了更準確地模擬退化方法,本文從真實世界圖像中明確地估計核和噪聲,在獲得估計的核和噪聲塊后,建立一個退化池,用于將高分辨率圖像退化為符合真實世界模糊和噪聲分布的低分辨率圖片,從而生成用于訓練GCA 網(wǎng)絡的圖像對,該降級過程簡單描述見表1。
表1 數(shù)據(jù)集預處理算法Tab.1 Data set preprocessing algorithm
本文采用核估計算法從真實圖片中明確地估計核,估計的模糊核應該滿足式(6)約束:
其中, (Isrc*k) ↓s是核函數(shù)為k的下采樣LR圖片,Isrc↓s是理想核函數(shù)下采樣后的圖片。
因此最小化二者之差就是期望下采樣的低分辨率圖片保留原更多的低頻信息,式(6)中的第二項是為了約束k的總和為1,第三項是k的懲罰邊界,后面的判別模塊是為了保證生成的圖片和原圖片盡可能相似,也就是處于同一個域,更符合真實世界的圖像。
通過以上約束獲得模糊核后,將所有的模糊核放入退化池中,然后從退化池中隨機選擇一個模糊核來對HR圖片進行降級退化處理,該過程可以表述如式(7):
其中,ID代表下采樣后的圖片,ki代表從{k1,k2,…,km} 中隨機選定的模糊核。
由于真實世界圖片并不是純凈的,往往受到環(huán)境的影響而存在一定噪聲。為了更好地擬合真實圖片,需要在經(jīng)過模糊核下采樣后的圖片中加入噪聲。本文直接從原數(shù)據(jù)集X的圖片中采集噪聲塊,一般情況下,內(nèi)容越豐富,其像素值的方差是越大的,因此,本文設計了一個篩選規(guī)則來收集方差在一定范圍內(nèi)的塊,簡化如式(8):
其中,σ(·)表示計算方差的函數(shù),v是方差的最大值。
獲得了一系列的噪聲塊后,將所有的噪聲塊放入退化池,從中隨機裁剪噪聲塊加入到下采樣后的圖片中,以此來完成噪聲注入,表示為式(9):
其中,ni是從退化池隨機裁剪的噪聲塊。
經(jīng)過模糊核和噪聲注入退化后的ILR更加符合真實世界的圖像。
生成模塊本質上就是一個生成函數(shù)G,對于給定的LR圖片,可以輸出對應的HR圖片。本文采用RRDB 塊和Resnet 塊作為生成網(wǎng)絡的基礎塊,注意力機制的原理便是將前面部分的特征向量作為當前層高層次信息的參數(shù)。假設數(shù)據(jù)集Preprocessed 中下采樣的比例因子為r,用一個大小為W ×H ×C的張量來表示ILR圖片,rW × rH × C的張量則表示ILR圖片和IHR。生成模塊作為一個前饋網(wǎng)絡代表網(wǎng)絡中的超參數(shù),θG ={W1:L;b1:L},通過超分辨率網(wǎng)絡中特定的損失函數(shù)LSR得到。訓練時,數(shù)據(jù)集中的高分辨率圖片表示為低分辨率圖片表示為
作為生成模塊的基本塊RRDB,其結構如圖2所示。首先將Preprocessed 過程后得到的LR圖片經(jīng)過9×9 卷積對輸入圖片進行一個全局信息提取,再輸入到RRDB 塊中對信息進一步整合,具體來說,稠密塊(Dense Block)的每一層使用64 個步長為1 的3×3 卷積核,每層的輸出采用LRelu 激活函數(shù),其與Relu 函數(shù)的不同之處在于將小于0 的數(shù)值進行保留,這對于超分辨率這樣對細節(jié)信息要求較高的任務非常適合。RRDB 的每一個Dense Block之后會有一個殘差縮放因子β,即在將殘差添加到主路徑之前,通過乘以0 和1 之間的常數(shù)來縮小殘差,因為隨著網(wǎng)絡層數(shù)的加深,會存在一定的冗余信息,越靠近輸入的層其所含信息越豐富,殘差因子相對更大,這也是一種自注意力機制。
圖2 RRDB 塊結構Fig.2 RRDB block structure
RRDB 塊之后,使用Resnet 塊來整合網(wǎng)絡中各層的信息,同時加速網(wǎng)絡,保證了梯度信息能夠有效的傳遞。損失函數(shù)從判別模塊開始反向傳播至生成模塊時,經(jīng)過了很多層,越深的網(wǎng)絡隱藏參數(shù)越多,在反向傳播的過程中也越容易梯度彌散,而加入Resnet 塊可避免這種情況。Resnet 塊共有3 個,每個包含3 層卷積神經(jīng)網(wǎng)絡,每層網(wǎng)絡由64 個3×3 的卷積核構成,在卷積核前面加了一個LRelu 預激活函數(shù)。
為了使生成模塊輸出的圖片和Preprocessed 中的HR圖片能輸入到判別模塊進行分類,需要將Resent 塊后的圖片進行上采樣,使之與HR圖片同等尺寸。此處本文使用像素混洗(Pixel-Shuffle)對圖片進行放大,其過程可以表示為式(10):
其中,Ihid表示處于低維空間的圖片,PS是像素混洗算子,其將W×H×C × r2的張量重新排列成大小為rW × rH × C的張量。
從數(shù)學角度來講,該算子的像素重排列可以表示為式(11):
其中,x,y,c分別為尺寸大小以及通道數(shù);mod為模運算符;C為比例因子;T則為組合排列函數(shù)。
假設輸入是一個三維的張量x × y × c,通過PS周期為T的運算,其可以變成其它尺寸的張量。
在Pixel-Shuffle 層前設置3×3 的卷積層,經(jīng)過卷積得到通道數(shù)為r2與輸入圖像大小一樣的特征圖像;再將特征圖像每個像素的r2個通道重新排列成一個r × r的區(qū)域,對應高分辨率圖像中一個r × r大小的子塊,從而大小為W × H × r2的特征圖像被重新排列成rW × rH ×1 的高分辨率圖片。另外,Pixel-Shuffle 只在最后一層對圖像大小做變換,前面的卷積運算由于在低分辨率圖像上進行,因此效率會較高。
判別模塊是由膠囊網(wǎng)絡組成的一個二分類器,將生成模塊輸出的ISR作為虛假圖片,數(shù)據(jù)集預處理過程的IHR作為真實圖片,判別模塊的目的是盡可能地區(qū)分出ISR和IHR。Discriminator 只訓練判別模塊的參數(shù);Generator 的訓練是把生成模塊和判別模塊兩個網(wǎng)絡連在一起,凍結判別模塊的學習率,以此來對兩個模塊進行交替訓練,最終使得Discriminator中的分類器無法區(qū)分ISR和IHR。生成模塊輸出的fake 圖片表示為生成模塊和判別模塊的對抗訓練定義如式(12):
其中,GG代表生成器;DθD代表判別器;E則代表訓練過程中的比例因子。
用判別模塊訓練來實現(xiàn)maxθD,其由膠囊網(wǎng)絡組成,分別是Conv1 層、PrimaryCaps 層、DigitCaps層。為了實現(xiàn)對ISR和IHR的0-1 二分類,本文將DigitCaps 層改為兩個膠囊,最后通過計算膠囊向量的模塊作為分類的概率值。由于膠囊網(wǎng)絡中不存在池化層,對細節(jié)信息的捕獲非常敏感,且在Mnist 數(shù)據(jù)集上對數(shù)字圖片分類的結果較好,非常適合圖片分類任務。
和CNN 中的標量神經(jīng)元不一樣,膠囊網(wǎng)絡中的神經(jīng)元是向量,膠囊網(wǎng)絡通過動態(tài)路由算法將低級膠囊的預測結果傳輸?shù)礁呒壞z囊。Conv1 層有256個9×9 卷積核,primary 層是一個卷積膠囊層,通過6×6 的卷積核和reshape 操作得到,最后通過全連接的矩陣轉換得到兩個膠囊,分別對應0-1 分類。
將均方誤差作為損失函數(shù),因為圖像超分辨率重建的常用評價指標PSNR 與之存在一定的數(shù)值運算關系,可以得到更高的PSNR 值。學習端到端的重建映射函數(shù)f L需要計算網(wǎng)絡參數(shù),用θ代表,即式(13):
其中,yi和xi為高低分辨率圖像,n為訓練樣本的數(shù)量。
為了驗證模型的有效性,做了一定的對比實驗和消融實驗,還使用Set5、Set14、BSD100 公共基準數(shù)據(jù)集進行測試實驗。
Set5 是一個經(jīng)典數(shù)據(jù)集,只包含嬰兒、鳥、蝴蝶、頭和人的5 幅測試圖像。
Set14 公開數(shù)據(jù)集包含更多類別,但圖像數(shù)量依然很少,只有14 張圖像。
BSD100 是一個具有100 張測試圖像的經(jīng)典數(shù)據(jù)集,從自然圖像到特定對象,如植物、人、食物等。
City100 包括City100 NikonD5500 和City100 iPhoneX,分別表示單反相機和智能手機相機下的分辨率和視場退化,以100 張不同城市場景的明信片作為成像對象。HR 和LR 圖像分別在55 mm 和18 mm的焦距下拍攝。
通過數(shù)據(jù)集預處理,得到相對應的高低分辨率圖像對,通過隨機截取低分辨率圖像的48×48,以及高分辨率圖像對應位置的192×192,并分別將其旋轉與翻轉,進行數(shù)據(jù)增強處理,以此得到更多的訓練數(shù)據(jù)集。采用Adam 優(yōu)化器來優(yōu)化模型,動量設置為0.9,權重衰減系數(shù)為0.000 1,共訓練代數(shù)為200,此外采用多步學習策略,初始學習率為0.01,在適當?shù)牡螖?shù)后,以一定比例降低學習率。
所有實驗均在windows10 系統(tǒng)搭載的12 GB NVIDIA GTX 1080 Ti GPU 和3.6 GHz Intel ?i7CPU 上完成的,在Pytorch-GPU 1.13.1 環(huán)境下使用python3.7 實現(xiàn)了模型。
PSNR:峰值信噪比是一個表示信號最大可能功率和影響其表示精度的破壞性噪聲功率的比值,經(jīng)常作為圖像重建等領域中重建質量好壞的評價標準,其值越大,表明圖像質量越好;
SSIM:越大表示輸出圖像和無失真圖像的差距越小,即圖像質量越好。
為了進行直觀的對比,將本文所提模型的SR結果與SRCNN、ESRGAN、DPAN、WDN 等現(xiàn)有模型進行對比,這些模型在超分任務中性能較好,具有代表性,且與本文提出的算法具有一定的相關性。SRCNN 模型首次將卷積神經(jīng)網(wǎng)絡應用于圖像超分辨率任務;ESRGAN 在SRGAN 的基礎上去除所有的BN 層。DPAN[14]則構建了一個雙路徑的注意力模型;WDN[8]是最近提出的一種將超分辨率任務分而治之的算法,通過多路徑的模型將超分辨率重建任務分為多個子任務,并行計算從而大大提高了模型的效率。
基線模型的PSNR 和SSIM 指標在公共數(shù)據(jù)集上的實驗結果見表2,本文提出的模型分別為28.53和0.869,比WDN 要更好。和SRCNN、ESRGAN、DPAN、WDN 比較,在兩個評價指標上,本文的方法表現(xiàn)出了一定的優(yōu)勢,這說明本文提出的GCA 模型在圖像超分辨率重建上效果良好,直觀效果如圖3所示。為了證明本文所提算法中各個模塊的有效性,將進行消融實驗,結果見表3。
表2 對比實驗結果Tab.2 Compare the results of the experiment
表3 消融實驗結果Tab.3 Ablation experiment
圖3 模型效果可視化Fig.3 Model effect visualization
將GCA 算法中的Generator 作為基線模型,City100 數(shù)據(jù)集中包含高低分辨率圖像對,進行消融實驗時,各個模塊之間可以獨立存在,互不影響,這也保證了消融實驗的可靠性。另外,從實驗結果上來看也證明了Preprocessed 模塊在構造低分辨率圖片上有效果。表3 中的實驗數(shù)據(jù)表明GCA 算法中的各個模塊在超分辨率任務中是有效的。在Set5、Set14 和BSD100 公共數(shù)據(jù)集上的實驗結果見表4,通過與基線模型的對比可以看出本文提出的GCA算法在PSNR 和SSIM 指標上都是要更好的。
表4 Set5、Set14、BSD100 數(shù)據(jù)集上的對比實驗Tab.4 Comparison experiments on Set5,Set14,BSD100 datasets
本文提出GCA 算法來提高真實世界圖片的超分辨率重建效果,數(shù)據(jù)集的預處理上采用核估計和噪聲注入,目的是為了獲取處于同一域的高分辨率和低分辨率圖片對,生成模塊利用RRDB 塊和ResNet 塊促進了模型中不同層之間的信息流動和特征重用,判別模塊則利用膠囊網(wǎng)絡對超分辨率圖片和高清圖片進行判別分類,通過生成模塊和判別模塊二者之間的交替博弈來進行訓練。在City100數(shù)據(jù)集上的實驗表明,本文采用的模型在真實世界圖片上的效果優(yōu)異,與其它方法相比,在PSNR 和SSIM 評價指標上,均取得較好的效果。目前的模型主要針對的是較低倍數(shù)的超分辨率重建圖片,在未來的工作中,將致力于輸出更高倍數(shù)圖片的研究。