周傳華,吳幸運,李 鳴
(1.安徽工業(yè)大學 管理科學與工程學院,安徽 馬鞍山 243002;2.中國科學技術(shù)大學 計算機科學與技術(shù)學院,安徽 合肥 230026)
超分辨率重建是指通過技術(shù)手段將單幀或多幀低分辨率圖像重建成相應(yīng)的高分辨率圖像,超分辨率重建已經(jīng)在圖像處理和計算機視覺方面被廣泛應(yīng)用,如紅外圖像[1-2]、醫(yī)學影像[3-4]、人臉識別[5]等場景。人臉超分辨率重建即通過超分辨率重建模型輸入一張或多張低分辨率人臉圖像,輸出相應(yīng)的紋理更清晰,視覺效果更好的高分辨率人臉圖像,文中主要針對單幀的人臉圖像進行超分辨率重建。
由于深度學習[6]在圖像處理和計算機視覺領(lǐng)域展現(xiàn)出的巨大潛力,使得基于深度學習的超分辨率重建技術(shù)逐漸成為研究熱點?;谏疃葘W習的超分辨率重建算法主要利用相關(guān)卷積神經(jīng)網(wǎng)絡(luò)及其改進架構(gòu)進行圖像超分辨率重建。2014年,Dong等[7]率先將卷積神經(jīng)網(wǎng)絡(luò)與超分辨率重建相結(jié)合,提出了卷積神經(jīng)網(wǎng)絡(luò)超分辨率重建算法(SRCNN)。該算法先經(jīng)過雙三次插值進行圖像上采樣,然后通過三層卷積的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)學習低分辨率與高分辨率圖像間的映射關(guān)系,通過該方法獲得的高分辨率圖像相對傳統(tǒng)方法有較大提高,但由于神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)太淺,難以學習到更深的特征。之后,Dong等[8]對其改進,提出了網(wǎng)絡(luò)深度更深的FSRCNN。該網(wǎng)絡(luò)架構(gòu)將原先三層的卷積層提升到8層,并在重建網(wǎng)絡(luò)的最后用反卷積層進行上采樣,代替圖像在輸入過程中用雙三次插值進行上采樣,減少了圖像卷積過程的參數(shù),加快了重建速度并取得了比SRCNN更好的重建效果。但8層的網(wǎng)絡(luò)結(jié)構(gòu)深度依然較淺,對圖像的重建效果仍然有限。Kim[9]制定了深度遞歸卷積神經(jīng)網(wǎng)絡(luò)進行超分辨率重建,網(wǎng)絡(luò)相較SRCNN通過利用更多的卷積層來增加重建網(wǎng)絡(luò)的局部感受野,并進一步減少過多的參數(shù),重建效果較好。深度更深的網(wǎng)絡(luò)因為允許建模高度復雜的映射,能大幅提高訓練效果,但更深的網(wǎng)絡(luò)結(jié)構(gòu)很難訓練[10]。殘差網(wǎng)絡(luò)(ResNet)[11]和快捷連接(skip connection)被應(yīng)用訓練更深層次的網(wǎng)絡(luò),可以提高訓練速度,降低模型訓練的內(nèi)存消耗。Ledig等人[12]利用上述訓練深層次網(wǎng)絡(luò)結(jié)構(gòu)的方法,結(jié)合了生成對抗網(wǎng)絡(luò)(GAN)和殘差網(wǎng)絡(luò),構(gòu)建了基于生成對抗網(wǎng)絡(luò)的超分辨率重建模型(SRGAN),實驗結(jié)果表明SRGAN在圖像超分辨率重建方面較其他的重建算法生成了視覺效果更好的圖像。
將超分辨率重建應(yīng)用到人臉圖像,可以有效提高人臉圖像的清晰度,增強原始圖像的紋理細節(jié)信息,改善圖片的質(zhì)量。鑒于生成對抗網(wǎng)絡(luò)在其他圖像超分辨率重建方面表現(xiàn)出的良好視覺效果,文中將其應(yīng)用到人臉圖像領(lǐng)域,并在其基礎(chǔ)上針對生成網(wǎng)絡(luò),判別網(wǎng)絡(luò)和損失函數(shù)做出改進,提出基于W-GAN的人臉超分辨率算法(SRWGAN)。對比其他超分辨率重建算法,在4倍的人臉超分辨率重建中增加了更多的高頻信息,重建出的人臉圖像效果更好。
生成對抗網(wǎng)絡(luò)啟發(fā)自二人零和博弈,由Goodfellow[13]在2014年提出。該框架包含生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò),它們的功能分別是生成網(wǎng)絡(luò)G接收噪聲z生成一個類似真實訓練數(shù)據(jù)的樣本,判別網(wǎng)絡(luò)D判別輸入判別器網(wǎng)絡(luò)的樣本來源于生成樣本還是真實樣本,通過不斷交替地訓練生成器和判別器來訓練模型,最后判別器無法辨別樣本真?zhèn)螘r,生成器模型訓練完成。其基本架構(gòu)如圖1所示。
圖1 GAN基本框架
圖1所示為GAN的基本框架,通過對抗過程來估計生成模型。該框架包含生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò),它們的功能分別是生成網(wǎng)絡(luò)G接收噪聲z生成一個類似真實訓練數(shù)據(jù)的樣本,判別網(wǎng)絡(luò)D判別輸入判別器網(wǎng)絡(luò)的樣本來源。具體訓練為先將真實樣本x輸入判別網(wǎng)絡(luò),判別網(wǎng)絡(luò)通過自身的訓練,盡可能輸出概率為1的值;其次,將噪聲z輸入到生成網(wǎng)絡(luò)生成樣本G(z),將生成的樣本G(z)作為判別網(wǎng)絡(luò)的輸入,判別器網(wǎng)絡(luò)盡量使D(G(z))接近0,而生成器盡量使它接近1。兩者相互博弈,當判別器網(wǎng)絡(luò)無法準確識別樣本來源時達到平衡。
生成對抗網(wǎng)絡(luò)的訓練是通過訓練判別網(wǎng)絡(luò)D最大化判別準確率,同時訓練生成網(wǎng)絡(luò)G最小化log(1-D(G(z))),即訓練生成網(wǎng)絡(luò)G和判別網(wǎng)絡(luò)D是關(guān)于函數(shù)V(G,D)的極小極大的博弈:
Ez~pD(z)[log(1-D(G(z)))]
(1)
為了解決原始的生成對抗網(wǎng)絡(luò)不易收斂的問題,Martin[14]提出了用Wasserstein距離代替KL或JS散度的損失函數(shù)訓練方法,Wasserstein距離定義如下:
(2)
通過數(shù)學變換將Wasserstein距離應(yīng)用到生成對抗網(wǎng)絡(luò)得到如下公式:
Ex~Pg[Fw(x)]
(3)
要求函數(shù)fw的Lipschitz常數(shù)‖fw‖L不超過K的條件下,對所有可能滿足條件的fw取到Ex~Pr[f(x)]-Ex~Pg[F(x)]的上界,然后再除以K,即近似求解:
Ex~Pg[Fw(x)]
(4)
通過構(gòu)造一個含參數(shù)w、最后一層不是非線性激活層的判別器網(wǎng)絡(luò)fw,在限制w不超過某個范圍的條件下,使得L=Ex~Pr[f(x)]-Ex~Pg[F(x)]盡可能取到最大,此時L就會近似真實分布與生成分布之間的Wasserstein距離(忽略常數(shù)倍數(shù)K)。同時生成器要近似地最小化Wasserstein距離,即最小化L,通過整理得到生成對抗網(wǎng)絡(luò)的兩個損失函數(shù):-Ex~Pg[fw(x)](生成損失)和Ex~Pg[f(x)]-Ex~Pr[F(x)](判別損失)。
WGAN相對于原始GAN,做出如下改進:
(1)判別器最后一層去掉sigmoid;
(2)生成器和判別器的loss不取log;
(3)每次更新判別器的參數(shù)之后把它們的絕對值截斷到不超過一個固定常數(shù)c;
(4)不要用基于動量的優(yōu)化算法。
隨著網(wǎng)絡(luò)深度的加深,模型會出現(xiàn)梯度消失與梯度爆炸問題。為了解決該問題,He等人[11]提出了殘差網(wǎng)絡(luò)模型(residual network,ResNet),通過殘差學習和恒等映射來優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),使網(wǎng)絡(luò)學習能達到更好的效果。ResNet網(wǎng)絡(luò)根據(jù)網(wǎng)絡(luò)層數(shù)和相關(guān)組件的不同可分為ResNet34、ResNet50、ResNet101和ResNet152等。當前的ResNet網(wǎng)絡(luò)已在網(wǎng)絡(luò)深度1 000層以上仍取得了良好的效果,ResNet基本組件如圖2所示。
圖2 ResNet網(wǎng)絡(luò)基本組件示意圖
圖2曲線部分表示恒等映射x,將殘差塊定義如下:
y=I(x,{Wi})+x
(5)
這里x和y分別表示輸入和輸出向量,函數(shù)I(x,{Wi})為要學習的殘差映射,對于圖2的示例, I=W2σ(W1x)(σ表示激活函數(shù),并且為了簡化符號,這里省略了偏差);通過快捷連接將原始要學習的H(x)轉(zhuǎn)換為H(x)=I(x)+x,即對I(x)的學習,使得網(wǎng)絡(luò)更容易被訓練,有效提高了網(wǎng)絡(luò)的性能。
文中的網(wǎng)絡(luò)結(jié)構(gòu)基于原始的SRGAN進行改進,針對其生成網(wǎng)絡(luò)、判別網(wǎng)絡(luò)和損失函數(shù)分別進行改進。
2.1.1 生成網(wǎng)絡(luò)的改進
原始SRGAN模型的生成器網(wǎng)絡(luò)是包含16個殘差塊的ResNet網(wǎng)絡(luò),每個殘差塊包含卷積層、BN層、激活函數(shù)(ReLU),并通過跳躍連接構(gòu)建殘差塊,最后通過兩層亞像素卷積層進行上采樣。其中,BN層在構(gòu)建識別任務(wù)的相關(guān)卷積神經(jīng)網(wǎng)絡(luò)模型中被廣泛使用,通過使用一個batch數(shù)據(jù)的均值和方差對特征進行歸一化,能有效對深層次的網(wǎng)絡(luò)進行訓練,防止梯度消失和梯度爆炸。但在超分辨率重建任務(wù)中模型對圖像Scale比較敏感,BN層會使特征標準化,同時限制了模型的泛化能力,增加了CPU的負擔,相關(guān)實驗[15]也證明去掉BN層的相關(guān)神經(jīng)網(wǎng)絡(luò)超分辨率重建模型獲得了更好的收斂效果,并減少計算復雜度。因此文中在構(gòu)建生成器網(wǎng)絡(luò)時去除了殘差塊中的BN層,同時,深度更深的網(wǎng)絡(luò)能學習更多的高頻信息[16],引入更多的先驗知識。因此,生成網(wǎng)絡(luò)模型在原有16層網(wǎng)絡(luò)深度的基礎(chǔ)上進一步加深網(wǎng)絡(luò)深度,構(gòu)建32層殘差塊的生成模型。
2.1.2 判別網(wǎng)絡(luò)的改進
判別網(wǎng)絡(luò)以原始的VGG19網(wǎng)絡(luò)作為判別網(wǎng)絡(luò),用來判別輸入判別網(wǎng)絡(luò)的圖像是真實樣本圖像(HR)還是生成網(wǎng)絡(luò)重建出的圖像(SR)。但VGG19的模型結(jié)構(gòu)較為復雜,深度較深,且特征圖通道數(shù)較少,模型在訓練過程中難以收斂。因此,文中設(shè)計判別網(wǎng)絡(luò)模型時較原有模型增加了特征圖通道數(shù)[15],并引入快捷連接,同時基于Wasserstein距離作為對抗損失函數(shù),判別網(wǎng)絡(luò)由原來二分類任務(wù)變成近似擬合Wasserstein距離,變成回歸任務(wù)。因此,判別網(wǎng)絡(luò)最后去除Sigmoid層。
2.1.3 損失函數(shù)的改進
SRGAN采用原始生成對抗網(wǎng)絡(luò)的損失函數(shù)KL散度作為對抗損失,在訓練時存在難以收斂、訓練不穩(wěn)定等問題,因此文中采用Wasserstein距離代替原始生成對抗網(wǎng)絡(luò)的損失函數(shù)KL散度作為對抗損失,加快網(wǎng)絡(luò)收斂,并使用訓練W-GAN的方式進行訓練。
文中采用W-GAN來進行人臉超分辨率重建,并采用2.1的改進思想設(shè)計具體的生成網(wǎng)絡(luò)、判別網(wǎng)絡(luò)和損失函數(shù)。
生成器網(wǎng)絡(luò)結(jié)構(gòu)如圖3(a)所示,輸入低分辨率圖像,先進入卷積層進行卷積操作(卷積層包含64個9×9的濾波器,通道數(shù)為3,步長為1),再使用PreLU進行非線性映射,然后依次進入32個相同的殘差塊網(wǎng)絡(luò)進行訓練,每個殘差塊去除了BN層,包含兩個3×3×3×64的卷積層和PreLU激活層,并使用Skip Connection加快網(wǎng)絡(luò)訓練,用兩次亞像素卷積進行圖像的上采樣增加圖片分辨率,最后通過卷積層輸出重建的高分辨率圖像。
為了判別生成的SR樣本是否和真實樣本足夠相似,訓練判別網(wǎng)絡(luò)D,其網(wǎng)絡(luò)架構(gòu)如圖3(b)所示。輸入生成的SR樣本,先經(jīng)過6層卷積(包含64個4×4的卷積核,3個通道)抽取圖片特征,并借鑒VGGNet,卷積層的通道數(shù)以2倍逐層增加,由最初的64個通道逐層增加到第6層的2 048個;接著通過1×1卷積進行降維,然后通過兩層卷積并使用Skip Connection加快網(wǎng)絡(luò)訓練,再將圖片輸入Flatten層進行維度壓平,最后經(jīng)Dense層輸出結(jié)果。
(a)生成器網(wǎng)絡(luò)
設(shè)計生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)的損失函數(shù),通過交替訓練生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)獲得更好的重建效果,損失函數(shù)如下:
(6)
優(yōu)化損失函數(shù)即優(yōu)化生成網(wǎng)絡(luò)的損失函數(shù)和判別網(wǎng)絡(luò)的損失函數(shù)。
2.3.1 生成網(wǎng)絡(luò)的損失函數(shù)
鑒于W-GAN相對GAN易收斂且生成的樣本效果更好,文中選擇Wasserstein距離作為對抗損失,同時像素的MSE損失通常與PSNR相關(guān),優(yōu)化MSE能實現(xiàn)更高的PSNR。綜合考慮,文中的生成損失函數(shù)采用像素MSE損失加上對抗損失,公式如下:
(7)
(9)
2.3.2 判別網(wǎng)絡(luò)的損失函數(shù)
判別網(wǎng)絡(luò)僅考慮對抗損失作為損失函數(shù),分別將原始高清圖像和生成的高分辨率圖像輸入判別網(wǎng)絡(luò),將判別網(wǎng)絡(luò)分別輸出的近似Wasserstein距離相加作為判別網(wǎng)絡(luò)的損失函數(shù)。公式如下:
(10)
文中使用了進行處理的MS-Celeb-1M和LFW人臉數(shù)據(jù)集作為實驗數(shù)據(jù)集,MS-Celeb-1M是微軟提供的世界上最大的人臉公開數(shù)據(jù)集,主要用于人臉檢測識別等任務(wù),包含100多萬名人的1 000萬多張人臉照片。實驗中,隨機選取3萬個名人的3萬張人臉作為數(shù)據(jù)集,并按照8∶2的比例,選取24 000張人臉作為訓練集,6 000張人臉作為測試集。LFW人臉數(shù)據(jù)集是由美國馬薩諸塞州立大學阿默斯特分校計算機視覺實驗室整理完成的數(shù)據(jù)庫,主要從互聯(lián)網(wǎng)上搜集圖像,用來研究非受限情況下的人臉識別問題,一共含有13 000多張人臉圖像。實驗中通過數(shù)據(jù)預處理剔除重復和不滿要求的人臉圖像,最終選取6 000張人臉作為數(shù)據(jù)集,并選取4 800張人臉圖像作為訓練集,1 200張人臉圖像作為測試集。
人臉具有五官相對固定的特征,而神經(jīng)網(wǎng)絡(luò)對不同位置提取的特征是不同的,因此,固定相應(yīng)的人臉區(qū)域,結(jié)合神經(jīng)網(wǎng)絡(luò)的局部感知性,可以優(yōu)化網(wǎng)絡(luò)訓練,加快收斂。文中結(jié)合人臉檢測對齊算法,針對以上預處理過的MS-Celeb-1M和LFW人臉數(shù)據(jù)集通過OpenCV和dlib返回對齊的人臉圖像,具體就是通過人臉檢測返回人臉關(guān)鍵點,然后旋轉(zhuǎn)平移進行人臉對齊,并截取96*96的人臉圖像,處理的示例如圖4所示。
圖4 人臉檢測對齊
預處理過的MS-Celeb-1M和LFW數(shù)據(jù)集經(jīng)過上述處理組成HR人臉數(shù)據(jù)集,之后對圖像進行下采樣(進行4倍下采樣),形成對應(yīng)的LR人臉數(shù)據(jù)集。
實驗環(huán)境:Linux系統(tǒng)環(huán)境;python3.6;CUDA10.0+CUDNN7.60+Tensorflow1.13+Keras2.2+;32 G內(nèi)存,RTX2080 GPU(8 G顯存)。
訓練過程中為了避免SRWGAN陷入局部最優(yōu)解,首先使用SRResNet網(wǎng)絡(luò)在處理過的LFW人臉數(shù)據(jù)集上進行訓練,實驗迭代1 000 000次,batchsize設(shè)置為16,學習率初始化為1×10-4,每隔500 000次學習率變?yōu)樵瓉淼?.1倍,學習動量設(shè)置為0.9,采用Adam優(yōu)化算法更新網(wǎng)絡(luò)權(quán)重。在訓練SRWGAN時,利用訓練好的SRResNet網(wǎng)絡(luò)作為初始化生成模型,交替訓練生成模型和判別模型,batchsize設(shè)置為16,初始學習率為1×10-5,迭代100 000次,每隔50 000次將學習率變?yōu)樵瓉淼?.1倍,同時使用RMSProp優(yōu)化算法進行訓練更新網(wǎng)絡(luò)權(quán)重。
超分辨率重建的算法性能可以通過超分辨率圖片質(zhì)量進行評價,超分辨率質(zhì)量可分為主觀評價和客觀評價。主觀評價方法主要是通過主觀的視覺感受評價生成圖片的質(zhì)量。客觀評價主要通過數(shù)據(jù)量化圖片的指標,評價重建圖像質(zhì)量。文中選用常用的峰值信噪比(PSNR)[17]和結(jié)構(gòu)相似性(SSIM)[18]作為客觀評價的評價指標。
為了充分驗證文中方法的有效性,分別在MS-Celeb-1M和LFW人臉數(shù)據(jù)集進行了4倍的人臉超分辨率重建,分別從主觀評價和客觀評價兩方面進行對比,綜合評估該算法的有效性。
3.3.1 主觀效果
分別用NN[19]、Bicubic[20]、SRCNN[7]、SRGAN、SRWGAN對MS-Celeb-1M和LFW人臉數(shù)據(jù)集進行了4倍的人臉超分辨率重建,實驗結(jié)果如圖5(a)、圖5(b)所示。
(a)MS-Celeb-1M數(shù)據(jù)集各方法重建效果對比
圖5為MS-Celeb-1M和LFW測試集中的人臉圖像的超分辨率重建主觀視覺效果圖(其中上面兩個為MS-Celeb-1M測試集中的人臉圖像,下面兩個為LFW測試集中的人臉圖像)。可以發(fā)現(xiàn)對人臉圖像進行超分辨率重建時,基于深度學習的SRGAN算法和文中所提算法重建出的圖像視覺效果較好。具體來說,NN重建出的人臉圖像棋格現(xiàn)象嚴重,效果最差,Bicubic和SRCNN算法重建出的人臉圖像整體看起來模糊,雖然SRCNN算法在圖像銳度方面有所提升,但清晰度和圖像細節(jié)方面的表現(xiàn)不足;SRGAN算法和文中提出的改進算法都重建處理了視覺效果出色的人臉圖像,但SRGAN算法在紋理細節(jié)方面處理的不夠細膩,文中所提算法在視覺上表現(xiàn)出了更逼真的紋理細節(jié)。綜上所述,文中算法重建表現(xiàn)出了具有最好視覺效果的人臉圖像。
3.3.2 客觀效果
為了客觀評價所提SRWGAN算法與其他超分辨率重建的效果,分別計算MS-Celeb-1M和LFW人臉數(shù)據(jù)集中重建的人臉圖像與原始高清人臉圖像的PSNR和SSIM,所得結(jié)果如表1所示。
表1 MS-Celeb-1M數(shù)據(jù)集各算法評價指標
由表1和表2各超分辨率重建算法重建出的圖像與原始圖像的PSNR和SSIM指標值可以看出,對于客觀評價指標SSIM,文中算法獲得了最高的SSIM值,并且NN、Bicubic、SRCNN、SRGAN、SRWGAN重建出圖像的SSIM值依次提高。同時,對于評價指標PSNR,文中算法的PSNR值低于Bicubic和SRCNN算法,但高于NN和SRGAN算法。相較SRGAN算法,文中算法在客觀評價指標上均有所提高,其中,在MS-Celeb-1M_LR人臉數(shù)據(jù)集中PSNR和SSIM分別提高了0.26和2%,在LFW_LR人臉數(shù)據(jù)集中PSNR和SSIM分別提高了0.31和3%。
表2 LFW數(shù)據(jù)集各算法評價指標
3.3.3 綜合評價
雖然PSNR廣泛應(yīng)用于圖像的客觀評價,但其有很大的局限性,最近的大多數(shù)實驗和文獻[21]都顯示了其作為評價指標往往數(shù)值無法與視覺感官的圖像質(zhì)量相符合,有些情況,PSNR較高的反而不如PSNR值低的視覺效果出色。針對此,文中采用客觀評價指標PSNR、SSIM和主觀視覺效果綜合的評價方法。
在重建出的人臉圖像的主觀視覺效果上,SRWGAN重建出了紋理細節(jié)效果更出色的人臉圖像。在客觀評價上,SRWGAN算法獲得了最好的SSIM評價指標數(shù)值。PSNR評價指標數(shù)值相較SRGAN也有所提高,因此,提出的基于SRWGAN的超分辨率算法能重建出效果更好的人臉圖像,且效果優(yōu)于NN、Bicubic、SRCNN、SRGAN算法。
針對4倍人臉的超分辨率重建提出了基于WGAN的人臉超分辨重建算法,該算法由生成網(wǎng)絡(luò)生成高分辨率人臉圖像,由判別網(wǎng)絡(luò)近似原始高分辨率圖像和生成圖像的Wasserstein距離,并通過生成圖像和原始圖像的內(nèi)容損失以及網(wǎng)絡(luò)結(jié)構(gòu)的對抗損失構(gòu)建損失函數(shù)進行網(wǎng)絡(luò)訓練優(yōu)化。最后在MS-Celeb-1M和LFW人臉數(shù)據(jù)集上與其他超分辨重建算法的重建結(jié)果對比表現(xiàn)出所提算法的優(yōu)越性。下一步的研究工作將考慮多幀人臉圖像的超分辨率重建,以探索更高效的超分辨率重建算法。