曾凡智,鄒 磊,周 燕,邱騰達,陳嘉文
(佛山科學技術學院 計算機系,廣東 佛山528000)
E-mail:coolhead@126.com
超分辨率[1]技術是指從一副或多幅低分辨率圖像中重構出相應高分辨率圖像的技術,該技術可以在現有硬件環境不改變的情況下,在低分辨率圖像基礎上,利用圖像的先驗信息重構出相對清晰的高分辨率圖像,在刑事偵查、醫學影像、天文觀測[2]和影視娛樂等領域都具有十分重要的應用價值.
目前運用相對廣泛的超分辨率圖像重構的方法主要有以下三類:基于圖像插值的方法、基于圖像重建的方法以及基于學習[3,4]的方法.基于圖像插值的方法,主要有雙線性插值、最近鄰插值和雙三次插值,此類方法雖然處理速度快,同時能有效增加圖像的分辨率,但是生成的圖像過于模糊,細節丟失嚴重;基于圖像重建的方法在恢復圖像高頻信息方面取得了良好進展,但是此類方法在處理一些復雜圖像(例如人臉)時效果不佳[5];基于學習的方法能夠利用訓練樣本所提供的先驗信息推導從低分辨率圖像重構出高分辨率圖像時所需要的高頻細節信息,例如局部線性嵌入、稀疏表達等,此類方法相較前面兩類在圖像重構的質量上有所提高.
隨著2014年深度學習熱潮的開始,基于深度學習的方法目前已經在眾多領域都得到了廣泛的應用,同時在超分辨率圖像重構領域也越來越受到了人們的重視.在基于卷積神經網絡的方法中,Dong等人[6]提出SRCNN(Super-Resolution Convolutional Neural Network)的方法,將基于深度學習的方法與超分辨率圖像重構技術結合.SRCNN先用雙三次插值將低分辨率圖像放大成目標尺寸,再通過三層卷積層擬合非線性映射,最后輸出高分辨率圖像.Tong等人[7]參照DenseNet[8]高強度稠密連接的方式,對低分辨率圖像進行超分辨率重構,使得網絡復雜度大幅下降并提高了網絡訓練速度.Zhang等人[9]創新性地將殘差塊和稠密連接塊結合,得到殘差稠密塊,加深了網絡結構,增加了網絡感受野并提升了性能.基于卷積神經網絡的超分辨率圖像重構方法所得的結果雖然有較高的信噪比,但圖像缺少高頻信息,在細節上缺乏真實感,所以會出現過度平滑的紋理.
近幾年,生成對抗網絡在圖像修復領域取得了重大突破,由生成對抗網絡產生的圖像具有更加逼真的視覺效果.Ledig等人[10]提出SRGAN(Super-Resolution Generative Adversarial Network)方法,通過SRGAN生成的圖像在感知質量方面較之前的方法有顯著的提升.Lim等人[11]在SRGAN網絡結構的基礎上提出增強的深度殘差超分辨率網絡,同時該網絡去除了批量歸一化層,這不僅大幅減少了計算量,還使模型更加適用于超分辨率圖像重構這類低層視覺任務;Yang等人[12]提出基于判別性增強的EDGAN(Enhanced Discriminative Generative Adversarial Network)網絡,該網絡使用一種改進感受損失,在激活函數之前使用特征,取得了不錯的重構效果.
由于現有基于生成對抗神經網絡的超分辨率圖像重構算法存在計算量巨大,模型占用內存多,實時場景運行嚴重延時等問題,本文基于生成對抗網絡框架,提出一種輕量化的GAN超分辨率圖像重構算法,致力于解決超分辨率圖像重構技術運用在實時人臉識別相關場景中,造成嚴重延時和模型占用空間大等問題.
隨著深度學習技術的不斷進步,人臉識別的準確率相比過去有了巨大的飛躍,然而當前眾多人臉識別算法在面對復雜環境(如光照劇烈變化)時,其識別準確率不能令人滿意.在人臉識別算法中,附加基于超分辨率圖像重構的預處理模塊是一種新的方法,它可以提高人臉識別算法在復雜環境中的準確率.
結合超分辨率圖像重構技術的人臉識別算法運行流程如圖1所示.首先,從視頻中獲取一幀人臉圖像,將圖像送入人臉檢測模塊得到人臉位置信息,裁剪出人臉并放大到一定尺寸,然后將放大后的模糊頭像送入超分辨率重構模塊進行圖像重構獲得高清頭像,最后送入人臉識別模塊進行特征提取和相似度計算并得到識別結果.模糊頭像產生的原因是低分辨率圖像向高分辨率圖像轉化的過程中,造成圖像失真而顯得模糊,人臉特征嚴重丟失.

圖1 結合超分辨率圖像重構技術的人臉識別算法運行流程圖Fig.1 Operation flow chart of face recognition algorithm combined with super-resolution image reconstruction technology
本文基于生成對抗網絡框架進行超分辨率圖像重構算法設計,整體網絡主要包含生成器網絡和判別器網絡,整體網絡結構如圖2所示.低分辨率圖像從生成器網絡輸入層輸入,首先經過一個標準卷積層,并將輸出用非線性激活函數進行激活以增強模型的非線性表達能力,再將結果依次送入17個倒置殘差塊中提取特征,其中倒置殘差塊包含擴張卷積層(Expansion Convolution,EC)、深度可分離卷積層(Depthwise Separable Convolution,DSC)、壓縮卷積層(Compressed Convolution,CC)、線性(Linear Activation,LA)和非線性激活層(Swish)及特征融合層(Add),最后將結果送入亞像素卷積層(Sub-Pixel Convolution,SPC),用于將多張低分辨率圖像合成一張高分辨率圖像;同時將生成器網絡得到的圖像作為負樣本送入判別器中,而正樣本是沒有經過處理的高分辨率圖像,本文使用的判別器是具有4個稠密連接塊的DenseNet網絡,最后網絡輸出為判別高分辨率圖像的真假結果.
受到MobileNetV2[13]和ESPCN[14](Efficient Sub-Pixel Convolutional Neural)思想的啟發,本文的生成器網絡主要由MobileNetV2的具有線性瓶頸的倒置殘差塊和ESPCN的亞像素卷積層組成,如圖2生成器網絡部分所示,同時為進一步提升網絡性能,本文對倒置殘差塊做了相應的修改:去除原倒置殘差塊中的批量歸一化層(Batch Normalization,BN),修改激活函數為Swish函數,使其更加適用于超分辨率圖像重構這種低層視覺任務.
3.1.1 激活函數
修正線性單元(Rectified Linear Unit,ReLU)具有運算簡單,計算效率高和信號響應快等優勢,因此它常被用于各類深度學習算法中.但它的優勢僅僅在正向傳播方面,并且ReLU函數對負值全部舍棄,因此很容易使模型輸出全零而無法再進行訓練.
基于上述情況,本文取Swish函數作為激活函數,其數學形式見式(1),相比ReLU函數,Swish函數可以將激活單元的輸出均值往0推進,達到批量歸一化的效果且減少計算量,即輸出均值接近0可以減少偏移效應進而使梯度接近于自然狀態.
(1)
3.1.2 倒置殘差塊
倒置殘差塊中所用的結構是擴張——卷積——壓縮,相比原生的殘差結構:壓縮——卷積——擴張,前者可以提升梯度在卷積層之間的傳播能力,有著更好的內存使用效率,部分結構如圖3所示,該結構主要包含擴張卷積層、深度可分離卷積層和壓縮卷積層.研究表明[15]BN層在一定程度上限制了網絡的靈活性,同時增大了計算量,因此本文在原倒置殘差塊的基礎上移除了BN層,并使用Swish函數作為激活函數,使得算法更加適用于超分辨率圖像重構這種低層視覺任務.

圖3 倒置殘差塊部分結構圖Fig.3 Structure of inverted residual block
1)深度可分離卷積:將標準卷積拆分成兩個分卷積,第一層為深度卷積,對每個輸入通道應用單通道的輕量級濾波器;第二層為逐點卷積,即1×1卷積,負責計算輸入通道的線性組合,構建新的特征.
標準卷積的輸入張量Li為hi*wi*di,標準卷積核k∈Rk*k*di*dj產生輸出張量Lj為hi*wi*dj,其中h,w,di,dj,k分別為特征圖的長、寬、輸入通道數、輸出通道數以及卷積核邊長.
1.標準卷積的計算消耗為:hi*wi*di*dj*k*k;
2.深度可分離卷積消耗為:hi*wi*di*(k2+dj);
參照MobileNetV2網絡設計,本文使用的卷積核大小k=3,dj最小取64,與標準卷積相比計算量減少了8-9倍.
2)擴張卷積層與壓縮卷積層:深度卷積本身不具備改變通道的能力,輸入通道數等于輸出通道數,如果輸入通道很少的話,深度卷積只能在低維度上工作,這樣所得的效果會很差,因此通過逐點卷積先進行升維(升維倍數為t,本文依據MobileNetV2實驗結果,t取4),使深度卷積在一個更高維空間中進行特征提取,最后為了保證輸入維數與輸出維數相等,還需要加一個逐點卷積層進行降維操作.
3.1.3 亞像素卷積層
亞像素卷積可以很好地避免算法直接在高分辨率空間進行重構,相比SRCNN先對低分辨率圖像進行預處理,然后在高分辨率空間重構的方法,亞像素卷積不僅節省了不必要的計算量,而且實現了較好的圖像上采樣效果.具體上采樣過程如圖4所示,將4個圖片中的第一個像素取出成為重構圖中的4個像素,以此類推,在重構圖中的每個2×2區域都是由這4幅圖對應位置的像素組成(重構后的圖像尺寸是原來低分辨率圖像尺寸的4倍).亞像素卷積的方法只在最后幾層進行圖像低分辨率到高分辨率的大小變換,保證了前面的卷積運算均在低分辨率圖像上進行,從而得到更高的運算效率.

圖4 亞像素卷積層上采樣過程Fig.4 Sampling process on sub-pixel convolution layer
判別器網絡使用具有稠密連接塊的DenseNet網絡訓練,DenseNet通過稠密連接改善了網絡中信息和梯度的流動,進而使網絡易于訓練,DenseNet在參數和計算成本更少的情形下實現比ResNet[16]更優的性能.DenseNet主要由多個稠密連接塊組成,稠密連接塊具體結構如圖5所示.每一個連接塊

圖5 稠密連接塊組成結構Fig.5 Structure of dense connection block
均有多個元素組成,每一個元素又有1×1卷積層、Swish激活函數、BN層、3×3卷積層組成,其中1×1卷積層的作用是對上層輸出數據壓縮、降維以減少計算量.
在將高分辨率圖像送入判別器網絡之前,對圖像進行隨機翻轉、裁剪等數據增強方式充分增加訓練樣本量,以提高模型的穩定性.經過大量次數的迭代訓練會使生成器盡可能模擬出以假亂真的樣本,而判別器會有更加精準的鑒別真偽數據的能力,最終整個對抗神經網絡會達到一個納什均衡,即判別器對于生成器的數據鑒別結果為正確率和錯誤率各占50%.
本文將均方誤差(Mean Square Error,MSE)與對抗損失的總和作為訓練整個生成器網絡的總體損失,生成器網絡損失表達式(2)如下:
LG=Lmse+Ladv
(2)
其中LG表示生成器網絡總體損失,Lmse表示均方誤差損失,Ladv表示對抗損失.
3.3.1 均方誤差損失
本文采用基于像素的均方誤差作為生成器網絡損失的一部分,在算法中采用均方誤差用于計算生成器得到的圖像與期望圖像對應像素間的歐式距離.通過均方誤差訓練得到的模型,其生成的圖像在細節上更接近真實圖像.目前,均方誤差被廣泛運用在超分辨率圖像重構模型的訓練中.均方誤差損失函數表達式(3)如下:
(3)

3.3.2 對抗損失
基于生成對抗網絡相互對抗的機制,本文將加入了倒置殘差塊的網絡作為生成器,使用具有稠密連接塊的判別器網絡在無監督學習下通過約束對抗損失迫使生成器獲得更加清晰、逼真的高分辨率圖像.對抗損失表達式(4)如下:
(4)

3.3.3 判別器損失
本文在判別器損失部分借鑒了生成器損失中基于像素的均方誤差損失Lmse方法,所不同的是,在判別器部分所比較的對象是重構圖像和原高清圖像經過了4個稠密連接塊計算后所得的特征圖,判別器損失函數表達式(5)如下:
(5)

本文使用FEI(FEI Face Database)公共人臉數據集對本文算法進行實驗驗證,同時為提高驗證結果的準確性以及可信度,本文額外加入了低復雜度單圖像超分辨率數據集Set5和Set14進行測試.其中FEI數據集中全為彩色人臉圖像,并且都在白色的均質背景下以直立的正面位置拍攝,輪廓旋轉最多約180度,每個圖像的原始尺寸為640×480像素.將樣本送入生成器之前,先使用雙三次插值下采樣獲得低分辨率圖像,其中本文下采樣因子為4,得到的低分辨率圖像尺寸為160×120像素;而Set5,Set14 數據集是基于非負鄰域嵌入的低復雜度單圖像超分辨率的數據集,該數據集由法國貝爾實驗室發布.
本文實驗均在Window10操作系統上進行,使用的仿真軟件為Anaconda下基于Python語言的PyCharm解釋器,深度學習框架為PyTorch,計算機CPU為Intel Core i7-7700K,GPU使用的是NVIDIA RTX 2080Ti.本文網絡總共訓練800個周期,采用RMSProp算法優化器,本實驗受GPU容量限制,訓練時每一批次的圖片數量為32張,權重衰減為0.0001,初始學習率為0.001,每經過200個周期,學習率下降90%有助于算法收斂,更容易接近最優解.具體訓練過程如圖6所示.

圖6 訓練損失變化曲線圖Fig.6 Training loss curve
如圖6所示,G_loss代表生成器損失,D_loss代表判別器損失,橫軸代表本次實驗總共訓練周期,縱軸代表訓練過程中生成器和判別器的特征損失值.由圖6可知,判別器在大約第200個周期時開始準備收斂,到大約第350個周期基本已經收斂;生成器開始收斂時間相對較晚,大約在第600個周期開始收斂,直到大約第750個周期才完全收斂,這其中的原因是生成器損失有兩部分構成,在反向傳播時計算量更大相對更加耗時一些,而判別器損失本身只有一個損失函數組成,并且稠密連接塊的參數量也比較少,所以更加容易收斂.同時如圖6所示,生成器和判別器的損失曲線不夠圓滑,帶有些小幅波動,這主要的原因是訓練時每一批次圖片數量不夠多,如果每批次的圖片數量增加,曲線的波動會減小很多.
為驗證本文提出的算法在超分辨率圖像重構上的性能,實驗通過FEI人臉數據集和Set5,Set14 非人臉數據集進行測試,采用峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)和結構相似性(Structural SIMilarity,SSIM)作為圖像質量客觀評估主要指標,PSNR和SSIM數值越高,表明重構圖像質量越好.為保證對比結果的公平性,所有算法均在放大因子等于4的比例下進行對比測試.
測試主要包含以下三部分:
1)測試對比生成器部分使用普通標準卷積和深度可分離卷積之間的性能差異,測試對比判別器部分使用DenseNet的稠密連接塊、ResNet的殘差塊和InceptionV3[17]的Inception塊之間的性能差異;
2)測試對比本文算法與三雙次插值(Bicubic)、SRCNN、SRGAN、ESRGAN[18](Enhanced Super-Resolution Generative Adversarial Networks)等先進算法在重構圖像質量、重構速度和模型體積等上的差異;
3)測試對比加入了本文方法的人臉識別算法 SphereFace[19]、CosFace[20]和ArcFace[21]與未加入本文方法的上述人臉識別算法,在識別準確率上的差異.
4.2.1 對比實驗1
本部分實驗將對本文所使用的深度可分離卷積和稠密連接塊,與其他深度學習經典的模塊進行對比.為保證對比結果的準確性,當實驗在生成器部分對比時,判別器部分均使用稠密連接塊;當實驗在判別器部分對比時,生成器部分均使用深度可分離卷積.同時本文中的參數數量均指生成器網絡參數數量,因為判別器只在網絡訓練時使用,實際測試并不參與.本部分實驗在FEI數據集上進行,具體各部分對比情況如表1所示.

表1 各模塊在FEI數據集測試結果對比Table 1 Comparison of test results of each module in FEI dataset
如表1所示,使用了深度可分離卷積和稠密連接塊的網絡,與使用其他深度學習經典模塊的網絡相比,重構出的圖像在客觀評估指標PSNR和SSIM上均有不同程度的提高,并且生成器參數數量相比使用標準卷積也有近乎8倍的減少,這充分說明本文使用低計算量、高性能的深度可分離卷積和低參數量、高頻率復用特征的稠密連接塊作為網絡關鍵部分,可以起到降參數量、提高重構圖像質量的作用.

表2 不同算法在FEI數據集測試結果對比Table 2 Comparison of test results of different algorithms in FEI dataset
4.2.2 對比實驗2
本部分實驗對本文提出的算法與Bicubic、SRCNN、SRGAN、ESRGAN進行對比,這其中包括傳統的插值方法,基于卷積神經網絡的方法以及基于生成對抗神經網絡的方法.
由表2可知,在SSIM的測試中,本文算法在FEI人臉數據集上獲得了更高的得分,說明本文算法在圖像結構恢復上效果更好;而在PSNR的測試上本文算法并沒有顯現出優勢,說明通過本文算法生成的圖像相比其他算法得到的圖像,缺少了更多的高頻信息,使圖像出現了相對平滑的紋理;在測試時間方面,Bicubic算法對低分辨率圖像進行圖像重構的速度是最快的,因為Bicubic算法只是進行簡單的插值操作,并沒有額外的計算量,而SRCNN、SRGAN、ESRGAN等算法中包含較多的卷積層,使得模型在處理過程中需要進行大量的運算,本文算法雖然沒有Bicubic算法快,但相比其他算法的測試時間減少了許多,基本不影響實時人臉識別算法的運行速度;在模型體積方面,本算法形成的模型體積較SRCNN、SRGAN和ESRGAN都有不同程度的減小,同時本文算法的參數數量較上述幾種先進算法減少了1到2個數量級,從而真正達到了輕量化.由于使用了分步式的計算方法,深度可分離卷積可以在保持原有效果的基礎上大大減少模型參數數量和計算量.

表3 不同算法在Set5,Set14數據集測試結果對比Table 3 Comparison of test results of different algorithms in Set5 and Set14 datasets
由表3可知,本文算法在非人臉數據集Set5,Set14上并沒有大幅超越先進算法ESRGAN,只是在Set5上SSIM得分上略微高出一點,這其中一個原因是本文算法是基于人臉圖像進行訓練的,在非人臉數據集上測試難免不能發揮更多優勢,但本文算跟先進算法ESRGAN差距不大,同時較SRCNN、SRGAN在PSNR和SSIM上都有不同程度的提高,這說明本文模型的泛化性較好.

圖7 各算法實驗效果圖對比Fig.7 Comparison of experimental results of each algorithm
使用Bicubic、SRCNN、SRGAN、ESRGAN和本文算法在FEI數據集上進行超分辨率圖像重構測試,各算法效果圖如圖7所示.
4.2.3 對比實驗3
為驗證加入了本文方法后的人臉識別算法在識別準確率上的表現,實驗將加入了本文方法的SphereFace[19]、CosFace[20]和ArcFace[21]先進人臉識別算法與原生上述算法進行對比,整個實驗在公共人臉數據集FEI上進行,具體對比如表4所示.

表4 不同人臉識別算法識別準確率對比Table 4 Comparison of recognition accuracy of different face recognition algorithms
由表4可知,加入了本文方法后的人臉識別算法在識別準確率上均有提升.因為通過超分辨率重構后的人臉圖像去除了更多影響識別的噪聲,使得特征提取算法提取出更加精確的人臉特征,從而提高識別準確率.但是由表4中同比增長部分可知,加入了本文方法后的人臉識別算法并沒有出現識別準確率大幅增長的現象,說明本文方法只能對人臉識別的性能進行小范圍的提高,并且由表2測試時間部分可知,本文方法重構圖像的時間非常短,基本不影響原有算法圖像處理時間.所以本文方法可以作為人臉識別中額外的圖像預處理模塊,對最終的識別準確率起到小幅增長的作用.
本文提出一種輕量化的生成對抗網絡超分辨率圖像重構算法,通過將含有低計算量、高性能的深度可分離卷積作為生成器網絡主體卷積,將低參數量、高頻率復用特征的稠密連接塊作為判別器網絡核心,并結合亞像素卷積進行上采樣,大幅削減了不必要的計算量,使得在人臉識別算法中加入圖像重構預處理過程所造成的嚴重延時等問題得以解決.實驗結果表明,相較于現有幾種流行算法,本文算法雖然在PSNR和SSIM上優勢不明顯,但是在單幅圖像重建的速度上,明顯更加迅速,快速的圖像重建保證了在實時人臉識別中極低的延時.并且由于本文的模型較小,還可以植入到一些移動設備或者內存較小的機器上運行,具有更加廣闊的應用價值.下一步工作,將考慮解決加入了超分辨率圖像重構模塊后,人臉識別算法的準確率提升不明顯問題.