張宇航,張 乾,江 漫,蘇江濤
(1. 貴州民族大學(xué) a. 數(shù)據(jù)科學(xué)與信息工程學(xué)院,b. 教務(wù)處,貴陽(yáng) 550025;2. 貴州省模式識(shí)別與智能系統(tǒng)重點(diǎn)實(shí)驗(yàn)室,貴陽(yáng) 550025)
隨著計(jì)算機(jī)視覺(jué)和人工智能的發(fā)展,人臉識(shí)別技術(shù)得到了廣泛的應(yīng)用,人們往往只需露出面部,即可被識(shí)別出.但是,在實(shí)際生活中人們常常會(huì)因?yàn)榕宕骺谡帧⒀坨R、帽子等物品,對(duì)面部有部分遮擋,尤其是在新冠疫情以來(lái),許多公眾場(chǎng)所要求人們必須佩戴口罩,人臉識(shí)別的效果進(jìn)而受到了影響.因此,如何利用計(jì)算機(jī)視覺(jué)技術(shù)對(duì)被遮擋的面部進(jìn)行修復(fù),使其逼近原始未被遮擋的人臉圖像,以達(dá)到人臉識(shí)別的目的,這在實(shí)際生活中有著重要意義.
早期的人臉修復(fù)算法主要以傳統(tǒng)修復(fù)方法為主,分為紋理修復(fù)和結(jié)構(gòu)修復(fù)2 類(lèi).Criminisi 等[1]基于圖像的紋理,利用邊緣像素優(yōu)先級(jí),依次對(duì)圖片的空洞區(qū)域進(jìn)行填充修復(fù).Barnes 等[2]根據(jù)圖片紋理合成的方法提出了匹配塊(patch match)算法,該算法利用匹配塊隨機(jī)搜索圖片中類(lèi)似的圖像塊來(lái)對(duì)缺失區(qū)域進(jìn)行修復(fù).結(jié)構(gòu)修復(fù)方法主要通過(guò)保留圖片重要結(jié)構(gòu)來(lái)提高圖像完成的質(zhì)量.Huang 等[3]通過(guò)透視平面的規(guī)則性來(lái)修復(fù)圖像空白區(qū)域;Kopf 等[4]基于分片搜索空間約束方式對(duì)圖像進(jìn)行修復(fù).傳統(tǒng)修復(fù)算法主要依賴(lài)于利用圖片中已有的信息對(duì)圖像進(jìn)行修復(fù),隨著破損區(qū)域的變大,造成的信息缺失會(huì)增多,進(jìn)而導(dǎo)致修復(fù)的圖像變得模糊,修復(fù)效果變差.
隨著深度學(xué)習(xí)以及計(jì)算機(jī)技術(shù)的飛速發(fā)展,Goodfellow 等[5]提出了生成對(duì)抗網(wǎng)絡(luò)(generative adversarial network, GAN).該網(wǎng)絡(luò)解決了傳統(tǒng)修復(fù)方法生成圖片模糊、細(xì)節(jié)體現(xiàn)不佳等問(wèn)題,為圖像修復(fù)問(wèn)題開(kāi)辟了新的道路.Mirza 等[6]提出了一種帶有約束性的生成對(duì)抗網(wǎng)絡(luò)(conditional generative adversarial nets, CGAN),通過(guò)將數(shù)據(jù)和條件變量一同輸入到模型中,來(lái)提高原始GAN生成圖像的質(zhì)量.
Salimans 等[7]對(duì)GAN 的訓(xùn)練過(guò)程進(jìn)行了改進(jìn),通過(guò)結(jié)合特征匹配(feature matching)和小批量判別(minibatch discrimination)等方法來(lái)提升模型訓(xùn)練過(guò)程中的穩(wěn)定性.Arjovsky等[8]針對(duì)GAN訓(xùn)練不穩(wěn)定的問(wèn)題,對(duì)其損失函數(shù)進(jìn)行了改進(jìn),引入Wasserstein距離代替GAN 中的KL和JS散度,提出了W-GAN (Wasserstein GAN).
但后來(lái),Gulrajani 等[9]發(fā)現(xiàn)采用W-GAN 損失函數(shù)后,存在的大部分權(quán)重只集中在2 個(gè)數(shù)上,無(wú)法充分發(fā)揮神經(jīng)網(wǎng)絡(luò)的擬合能力,便在W-GAN基礎(chǔ)上又加入梯度懲罰,對(duì)Lipschitz 連續(xù)性限制條件進(jìn)行了改進(jìn),提出了WGAN-GP,使得收斂速度更快,模型訓(xùn)練更加穩(wěn)定.Iizuka 等[10]提出一個(gè)雙判別器模型,使得GAN 由傳統(tǒng)的單判別器模型轉(zhuǎn)換為多判別器模型.該模型由1 個(gè)局部判別器和1 個(gè)全局判別器構(gòu)成,全局判別器對(duì)整張圖像進(jìn)行判別,而局部判別器只對(duì)以修復(fù)區(qū)域?yàn)橹行牡牟糠謪^(qū)域進(jìn)行判別.采用該方式可以加強(qiáng)對(duì)圖像邊緣的修復(fù)效果,使得修復(fù)圖像看起來(lái)更連貫.李澤文等[11]提出基于殘差生成對(duì)抗網(wǎng)絡(luò)的人臉圖像復(fù)原方法,在原始GAN 中引入殘差網(wǎng)絡(luò),利用人臉的特征輪廓對(duì)人像進(jìn)行修復(fù),使局部修復(fù)細(xì)節(jié)更加明顯.
本文針對(duì)現(xiàn)有模型在人臉圖像修復(fù)任務(wù)中存在的修復(fù)效果不佳、細(xì)節(jié)體現(xiàn)不足、修復(fù)邊緣生硬等問(wèn)題,將跳躍連接引入到生成器中,并結(jié)合雙判別器模型,提出一種新的人臉圖像修復(fù)的生成對(duì)抗網(wǎng)絡(luò)算法并加以驗(yàn)證、比較.
生成對(duì)抗網(wǎng)絡(luò)(GAN)的原理主要源于博弈論中的二人“零和博弈”思想.該模型主要由生成器和判別器2 部分構(gòu)成.其生成器的作用是根據(jù)輸入的隨機(jī)樣本(噪聲),生成一個(gè)假圖像;判別器的作用則是對(duì)輸入的圖片進(jìn)行判別,并將判別結(jié)果反饋給生成器.如果輸入的圖像越接近原始圖像,則判別結(jié)果越接近于1;反之,判別結(jié)果越接近于0.GAN 的基本網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示.

圖1 GAN 基本網(wǎng)絡(luò)結(jié)構(gòu)
生成器的目標(biāo)是生成一個(gè)判別器無(wú)法判斷的假圖像,而判別器的目標(biāo)則是盡力去正確判別輸入圖像的真假.整個(gè)模型生成器和判別器交替訓(xùn)練,能力同步提升,最終達(dá)到“納什均衡”狀態(tài),生成一個(gè)可以以假亂真的假圖像.
為提升圖像修復(fù)效果,使修復(fù)后的圖像整體與局部保持連貫,細(xì)節(jié)更加真實(shí),Iizuka 等[10]提出了GLCIC 模型,相比于傳統(tǒng)生成對(duì)抗網(wǎng)絡(luò)僅有1 個(gè)生成器和1 個(gè)判別器模型,該模型最大的貢獻(xiàn)在于采用了雙判別器模型對(duì)圖像進(jìn)行判別,其網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示.

圖2 GLCIC 模型網(wǎng)絡(luò)結(jié)構(gòu)
由圖2 可知,整個(gè)模型以卷積網(wǎng)絡(luò)為基礎(chǔ),分為2 部分和3 網(wǎng)絡(luò).第一部分為生成器,只包括生成網(wǎng)絡(luò);第二部分為判別器,包含局部判別器和全局判別器2 個(gè)網(wǎng)絡(luò).通過(guò)局部判別和全局判別聯(lián)合的方法,可以在很大程度上增加修補(bǔ)區(qū)域和其他區(qū)域的聯(lián)系[12],對(duì)圖像的整體修復(fù)效果進(jìn)行提升,優(yōu)化生成圖像的細(xì)節(jié).
本文生成器模型采用編碼器-解碼器結(jié)構(gòu),通過(guò)在層間加入跳躍連接[13],提出了新的跳躍連接式生成對(duì)抗網(wǎng)絡(luò),并對(duì)其網(wǎng)絡(luò)結(jié)構(gòu)和激活函數(shù)進(jìn)行改進(jìn).整個(gè)網(wǎng)絡(luò)由14 層卷積層網(wǎng)絡(luò)構(gòu)成,生成器模型如圖3 所示.

圖3 生成器網(wǎng)絡(luò)模型
由圖3 可知,該生成器分為編碼器、解碼器和空洞卷積3 部分.其中,編碼器由5 層卷積層構(gòu)成,采用stride=2 的步長(zhǎng)卷積進(jìn)行下采樣,來(lái)降低輸入圖片的分辨率,卷積核大小為3×3;解碼器則采用與編碼器相對(duì)應(yīng)的5 個(gè)反卷積層構(gòu)成,其卷積核大小亦為3×3,并利用stride=1/2的 微 步 長(zhǎng) 卷 積 操 作 (fractionally-strided convolutions),將輸出恢復(fù)到原始分辨率.
該網(wǎng)絡(luò)采用跳躍連接將編碼器和解碼器連接起來(lái),可以將更多的低層特征傳送到高層特征來(lái)獲取更多的層間特征.同時(shí),在編碼器和解碼器中間還使用了4 次空洞卷積(dilated conv)來(lái)增大感受視野,可在不改變圖像大小的情況下,獲取更多的上下文信息,得到生成圖像.生成器模型除最后1 個(gè)卷積層使用Tanh激活函數(shù)外,在每個(gè)卷積層之后,均采用ReLU激活函數(shù).生成器網(wǎng)絡(luò)體系結(jié)構(gòu)見(jiàn)表1.

表1 生成器網(wǎng)絡(luò)體系結(jié)構(gòu)
本文判別器網(wǎng)絡(luò)大致采用文獻(xiàn)[10]提出的局部和全局雙判別器模型,其結(jié)構(gòu)如圖4 所示.

圖4 雙判別器網(wǎng)絡(luò)模型
在圖4 中,全局判別器對(duì)整張人臉圖像進(jìn)行判別,其輸入為128×128×3 的全局圖像;局部判別器僅對(duì)以修復(fù)區(qū)域?yàn)橹行牡脑紙D像1/4 區(qū)域進(jìn)行判別,其輸入為64×64×3 的局部圖片.2 種判別器的網(wǎng)絡(luò)卷積層均采用5×5 的卷積核,并用stride=2 的步長(zhǎng)卷積來(lái)降低圖像分辨率;再通過(guò)全連接層,得到2 個(gè)1 024 維的向量,進(jìn)一步將其連接成1 個(gè)2 048 維向量;最后經(jīng)過(guò)全連接層輸出1 個(gè)對(duì)應(yīng)圖像判別結(jié)果的值.在本文所用判別器模型中,去掉了最后一層的Sigmoid激活函數(shù).除最后一層外,各層均采用Leaky_ReLU激活函數(shù),且每層都加入batch norm 層對(duì)其進(jìn)行批量歸一化處理,以提升訓(xùn)練的穩(wěn)定性.判別器網(wǎng)絡(luò)體系結(jié)構(gòu)見(jiàn)表2.

表2 判別器網(wǎng)絡(luò)體系結(jié)構(gòu)
損失函數(shù)直接采用文獻(xiàn)[10]的損失函數(shù).整個(gè)模型的損失函數(shù)由均方誤差損失(mean square error, MSE)和GAN 損失聯(lián)合構(gòu)成.MSE 損失用于計(jì)算原圖與生成圖像像素間的差異,可以提高模型訓(xùn)練的穩(wěn)定性和結(jié)果的真實(shí)性,其表達(dá)式如公式(1)所示.


其中α為加權(quán)參數(shù).

8)生成器和雙判別器網(wǎng)絡(luò)交替訓(xùn)練.
9)更新生成器網(wǎng)絡(luò)和雙判別器網(wǎng)絡(luò)的參數(shù).
10)end if.
11)end while.
本文實(shí)驗(yàn)使用百度云服務(wù)器AI Studio,框架為PaddlePaddle 1.8.0;Python 版本為Python3.7;使用GPU 訓(xùn)練,GPU 為T(mén)esla V100;顯卡內(nèi)存32 GB,RAM 32 GB,磁盤(pán)100 GB.
實(shí)驗(yàn)所用數(shù)據(jù)集為公開(kāi)數(shù)據(jù)集CelebA[14],該數(shù)據(jù)集包含202 599 張大小為178×218×3 的人臉圖像.本文從CelebA 人臉數(shù)據(jù)集中選擇20 000張人臉圖片進(jìn)行訓(xùn)練,其中19 000 張圖片用作訓(xùn)練數(shù)據(jù),1 000 張圖片用作測(cè)試數(shù)據(jù).實(shí)驗(yàn)先將圖像大小歸一化為128×128×3,并在其隨機(jī)區(qū)域隨機(jī)添加大小為24×24×1 至48×48×1 的空洞掩碼,輸入到生成器中進(jìn)行修復(fù).預(yù)處理后的圖像如圖5 所示.

圖5 預(yù)處理后的圖像
整個(gè)模型在實(shí)驗(yàn)過(guò)程中共訓(xùn)練150個(gè)epoch(一代訓(xùn)練).為了縮短模型訓(xùn)練時(shí)間,先單獨(dú)訓(xùn)練生成器50 個(gè)epoch,之后再將生成器與雙判別器交替訓(xùn)練100 個(gè)epoch,總共耗時(shí)4 h.在訓(xùn)練中優(yōu)化器采用Adam 優(yōu)化算法[15].其中,batch_size設(shè)置為 128;學(xué)習(xí)率設(shè)置為 0.001;β1=0.9,β2=0.999;加權(quán)參數(shù)α設(shè)為0.1.
圖6 為采用本文算法和其他文獻(xiàn)算法對(duì)不同人臉圖像修復(fù)前后的效果對(duì)比.
由圖6 可知,采用本文算法修復(fù)后的人臉圖像,細(xì)節(jié)表現(xiàn)更加逼真,整體更加連貫;在遮擋面積幾乎覆蓋整個(gè)面部時(shí),文獻(xiàn)[10]的方法出現(xiàn)了修復(fù)模糊、圖像失真等問(wèn)題,而本文算法仍能較好地對(duì)人臉圖像進(jìn)行修復(fù),且修復(fù)結(jié)果自然生動(dòng),與原始圖像對(duì)比沒(méi)有明顯差異.

圖6 圖像修復(fù)效果對(duì)比
圖7 為采用本文算法對(duì)同一張人臉采用隨機(jī)遮擋后的修復(fù)效果.

圖7 隨機(jī)遮擋圖像的修復(fù)效果
隨機(jī)遮擋是指對(duì)人臉不同部位采取隨機(jī)大小的遮擋塊對(duì)其遮擋.從圖7 可以看出,本文算法可以很好地對(duì)人臉部不同器官(如眼睛、鼻子、嘴巴、臉頰等)的復(fù)雜圖像進(jìn)行修復(fù),且修復(fù)后的圖像與原始圖像圖7(a)相近,其細(xì)節(jié)刻畫(huà)明顯,表情較豐富和逼真.
為更進(jìn)一步評(píng)價(jià)修復(fù)效果,本文采用峰值信噪比(PSNR)和結(jié)構(gòu)相似性(SSIM)這2 個(gè)常被用來(lái)評(píng)價(jià)圖像相似度的指標(biāo),對(duì)不同方法下人臉圖像的修復(fù)效果進(jìn)行對(duì)比,其結(jié)果見(jiàn)表3.

表3 不同修復(fù)方法的PSNR 和SSIM 平均值
由表3 可知,相較GLCIC 算法,采用本文算法修復(fù)圖像的PSNR值為32.158 7,提高了14.67%;SSIM值為0.966 2,提高了4.35%.這說(shuō)明本文所提方法的圖像修復(fù)效果更佳.
本文提出了一個(gè)基于跳躍連接的生成對(duì)抗網(wǎng)絡(luò)人臉修復(fù)模型.在采用雙判別器網(wǎng)絡(luò)模型的基礎(chǔ)上,對(duì)生成器網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了改進(jìn),并在層間加入跳躍連接以獲得更多特征信息,通過(guò)步長(zhǎng)卷積減少采樣過(guò)程導(dǎo)致的信息損失,最終使其對(duì)人臉不同部位、不同大小的遮擋都有較好的修復(fù)效果,且修復(fù)后的人臉圖像更逼真、連貫、生動(dòng).對(duì)比其他已有模型,其不僅有更好的修復(fù)效果,訓(xùn)練速度也有明顯提升,在實(shí)際應(yīng)用中具有良好的魯棒性和泛化能力.然而,整個(gè)模型在訓(xùn)練過(guò)程中仍會(huì)出現(xiàn)訓(xùn)練不穩(wěn)定,造成梯度消失和梯度爆炸等情況.針對(duì)該模型的局限性,今后的實(shí)驗(yàn)可從此方面進(jìn)行改進(jìn).