于泗泓,于 洋,王爾博,王存睿
(大連民族大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,遼寧 大連 116650)
人臉融合技術(shù)在諸多領(lǐng)域具有廣泛的應(yīng)用,其中具有代表性的技術(shù)有DeepFake、FaceSwaps等。以生成對(duì)抗網(wǎng)絡(luò)(GAN)為代表的方法已成為最常使用的技術(shù)之一[1]。人臉融合技術(shù)在生活中的使用度逐漸提高,目前雖然計(jì)算機(jī)識(shí)別圖像已經(jīng)在多個(gè)標(biāo)準(zhǔn)數(shù)據(jù)集中呈現(xiàn)穩(wěn)定的狀態(tài),但真實(shí)應(yīng)用場(chǎng)景中,仍然存在著大量非標(biāo)準(zhǔn)的人臉姿勢(shì),如圖1。當(dāng)遇到側(cè)面圖像時(shí)無(wú)法完美的融合到源圖像中。
目前解決不同姿勢(shì)識(shí)別問(wèn)題的主流方法有以下兩類(lèi):一類(lèi)采用手繪(hand-crafted)或?qū)W習(xí)不同姿態(tài)的特征[2],在不變和可識(shí)別之間做出權(quán)衡,往往無(wú)法有效處理大角度的姿勢(shì);另一類(lèi)則是通過(guò)將二維圖像模型與有確切身份的三維圖像模型進(jìn)行對(duì)齊[3],使用LBP來(lái)考慮局部變化并利用三維幾何變換渲染正面人臉圖像。但是這種方法遇到大量差異較大的姿態(tài)圖像時(shí),紋理細(xì)節(jié)損失嚴(yán)重,性能也不盡如人意。在本文中解釋了如何利用人臉五官的對(duì)稱(chēng)性來(lái)生成正面人臉圖像及如何通過(guò)五官遷移將側(cè)面人臉圖像完美的融合到源圖像中。
圖1 側(cè)面人臉圖像融合效果
文中提出了一種基于區(qū)域變換的人臉融合改進(jìn)算法,首先利用人臉圖像關(guān)鍵點(diǎn)檢測(cè)技術(shù)判斷輸入的人臉圖像是否為正面圖像,若輸入的圖像是側(cè)面圖像則將其通過(guò)TP-GAN[4](Two-Pathway Generative Adversarial Network)網(wǎng)絡(luò)進(jìn)行正側(cè)面角度轉(zhuǎn)換。隨后將輸出的正面面部圖像歸一化,旨在解決面部尺度變化和面部旋轉(zhuǎn)的問(wèn)題,接著通過(guò)人臉區(qū)域選取對(duì)其進(jìn)行仿射變換、區(qū)域替換和膚色矯正,最后生成融合后的正面人臉圖像。其中區(qū)域選取部分使用到了Dlib提供的接口get_landmarks,該接口用于獲取面部關(guān)鍵特征點(diǎn)的坐標(biāo),從面部區(qū)域提取面部關(guān)鍵點(diǎn)眉、眼、鼻和嘴的位置坐標(biāo),預(yù)測(cè)變量需要在算法中定義,且需利用普氏分析方法(Procrustes Analysis)對(duì)原始數(shù)據(jù)進(jìn)行預(yù)處理[5],具體實(shí)驗(yàn)流程圖如圖2。
圖2 基于區(qū)域變換的人臉融合流程圖
本文使用到的網(wǎng)絡(luò)結(jié)構(gòu)如圖3。生成器GθG由兩條路徑組成,一個(gè)是全局網(wǎng)絡(luò)DθD,其進(jìn)行處理全局結(jié)構(gòu),其中用GθG來(lái)處理左右眼、鼻子和嘴唇及其周?chē)募y理并進(jìn)行提取,相當(dāng)于2D/3D局部紋理扭曲的方法[6]。一般將人臉的歸一化分為兩個(gè)步驟,第一步是將人臉于模型進(jìn)行全局對(duì)齊,第二步則是扭曲或渲染局部紋理到全局。側(cè)面圖像合成正面圖像是高度非線性的轉(zhuǎn)化過(guò)程,由于過(guò)濾器是人臉空間的所有位置共用的,即全局網(wǎng)絡(luò)無(wú)法精準(zhǔn)恢復(fù)局部細(xì)節(jié),而TP-GAN成功轉(zhuǎn)化成為基于深度學(xué)習(xí)的視圖合成的生成器。
圖3 TP-GAN 網(wǎng)絡(luò)結(jié)構(gòu)
進(jìn)一步將正面分布的檢驗(yàn)加入到訓(xùn)練中,引入一個(gè)判別器DθD來(lái)區(qū)分真實(shí)的正面圖像和轉(zhuǎn)換正面圖像,像判別器對(duì)于真實(shí)正臉給高分,對(duì)于生成器生成的正臉則給低分。交替訓(xùn)練DθD和GθG來(lái)優(yōu)化最小最大的問(wèn)題。其中尤為特別的是判別器生成的是2×2的概率矩陣而不是一個(gè)數(shù)[7]。
(1)
式中:DθD為判別器用來(lái)區(qū)分真實(shí)人臉圖像;GθG為生成器;IF為人臉圖像;Ip為生成人臉圖像;log(1-DθD(GθD(IP)))表示人臉圖像生成器GθG欺騙判別器的能力,EIF~P(IF)表示對(duì)人臉圖像判別器DθD判別真實(shí)樣本判別能力的數(shù)學(xué)期望。
對(duì)稱(chēng)是人臉固有的特征,利用先驗(yàn)知識(shí)在合成圖像上運(yùn)用其對(duì)稱(chēng)的特性,可以有效地改善被遮擋部分的問(wèn)題。展開(kāi)來(lái)說(shuō),就是在原像素空間和拉布拉斯圖像空間中定義對(duì)稱(chēng)損失,其對(duì)稱(chēng)損失為
(2)
這樣可以對(duì)不同光照具有魯棒性,簡(jiǎn)單來(lái)說(shuō)就是使左右兩側(cè)的差距變小,當(dāng)只有側(cè)臉部分的像素產(chǎn)生損失時(shí),這個(gè)損失產(chǎn)生的額外梯度會(huì)促進(jìn)TP-GAN模型的收斂[8]。而衍生出來(lái)的最終的綜合損失函數(shù)為
Lsyn=Lpixel+λ1Lsym+λ2Ladv+λ3Lip+λ4Ltv。
(3)
式中:Lpixel表示Pixel-wise損失;Lsym表示Symmetry損失;Ladv表示Adversarial損失;Lip表示人臉I(yè)dentity Perserving損失;Ltv表示Total variation損失,最終損失Lsyn是這五個(gè)指標(biāo)的加權(quán)和。
實(shí)驗(yàn)還加上了一個(gè)全變差正則化減少偽影的合成,這可以保證對(duì)稱(chēng)損失函數(shù)的對(duì)稱(chēng)作用,其可以加速擬合,產(chǎn)生更真實(shí)的圖,還可以補(bǔ)全遮擋的部分。
在側(cè)面人臉轉(zhuǎn)正面人臉合成方面的難點(diǎn)都在于人臉角度,在一般情況下大于60°時(shí),很難將側(cè)面圖像轉(zhuǎn)為正面圖像。然而,本文可以證明,有足夠的訓(xùn)練數(shù)據(jù)和正確的網(wǎng)絡(luò)結(jié)構(gòu)及適合的損失函數(shù),大角度的側(cè)面轉(zhuǎn)正面的合成是可以實(shí)現(xiàn)的。TP-GAN可以從任何角度合成其正面圖像,TP-GAN不僅可以合成自然地人臉正面圖像,還可以保存其身份識(shí)別的圖像。借助先驗(yàn)知識(shí)進(jìn)行數(shù)據(jù)建模,不僅可以實(shí)現(xiàn)面部整體結(jié)構(gòu),還可以顯示出被遮擋的耳朵、臉頰和額頭。此外,還可以完美的保留原始的側(cè)面圖像中檢測(cè)到的面部特征[9],例如眼鏡、發(fā)型等,如圖4。本文通過(guò)用Multi-Pie人臉數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),展現(xiàn)了在不同角度下,合成的正面人臉圖像。Multi-Pie人臉數(shù)據(jù)集是卡耐基梅隆大學(xué)于2000年收集,于2009年發(fā)布的多視點(diǎn)人臉圖像數(shù)據(jù)集,其主要用于身份鑒定,是PIE數(shù)據(jù)庫(kù)的替代品,其包含在15個(gè)視點(diǎn)下捕獲的337個(gè)主題,其中涵蓋共計(jì)超過(guò)750 000個(gè)圖像,其在推動(dòng)姿勢(shì)和光照的人臉識(shí)別研究具有很大的影響力。實(shí)驗(yàn)結(jié)果證明TP-GAN保留了更多的紋理細(xì)節(jié),并且很少有模糊的效果,這足以確定其具有穩(wěn)定的合成能力。
圖4 不同角度TP-GAN合成結(jié)果
TP-GAN根據(jù)不同姿勢(shì)合成的結(jié)果,從左到右依次為:90°、75°、60°、45°、30°和 15°,其中最后一列是真實(shí)圖像。為了進(jìn)一步證明TP-GAN網(wǎng)絡(luò)的轉(zhuǎn)換效果,每一豎列展示了在不同網(wǎng)絡(luò)結(jié)構(gòu)下生成的正面圖像如圖5??梢钥闯龅谝涣蠺P-GAN網(wǎng)絡(luò)生成的保留了更多的紋理,狀態(tài)十分穩(wěn)定。
圖5 不同網(wǎng)絡(luò)結(jié)構(gòu)對(duì)比圖
利用TP-GAN網(wǎng)絡(luò)生成正面人臉圖像后最關(guān)鍵的一步則是人臉融合,本文人臉融合的具體分為如下幾步:
(1)利用OpenCV中window.add_overlay(dets)來(lái)繪制檢測(cè)到的人臉框,并且獲取每個(gè)關(guān)鍵點(diǎn)shape.parts()坐標(biāo),將模型默認(rèn)提取的68個(gè)關(guān)鍵點(diǎn)存入landmark矩陣,提取結(jié)果。
(2)將輸入的矩陣轉(zhuǎn)換為浮點(diǎn)數(shù),這是后面步驟的必要條件。每一個(gè)點(diǎn)集減去它的矩心,一旦為這兩個(gè)新的點(diǎn)集找到了一個(gè)最佳的縮放和旋轉(zhuǎn)方法,這兩個(gè)矩心c1和c2就可以用來(lái)找到完整的解決方案。同樣,每一個(gè)點(diǎn)集除以它的標(biāo)準(zhǔn)偏差,這消除了問(wèn)題的組件縮放偏差。使用SingularValueDecomposition計(jì)算旋轉(zhuǎn)部分,利用仿射變換矩陣返回完整的轉(zhuǎn)化[10]。實(shí)質(zhì)上最后就是得到了一個(gè)轉(zhuǎn)換矩陣,第一幅圖片中的人臉可以通過(guò)這個(gè)轉(zhuǎn)換矩陣映射到第二幅圖片中,與第二幅圖片中的人臉對(duì)應(yīng)。得到了轉(zhuǎn)換矩陣后,就可以使用它進(jìn)行映射。這里也是使用了OpenCV的warpAffine函數(shù),自己從底層實(shí)現(xiàn)會(huì)比較復(fù)雜。
(3)為獲取人臉mask,通過(guò)定義像素值,屬于人臉的區(qū)域像素標(biāo)記1,不屬于人臉的區(qū)域像素標(biāo)記為0,來(lái)進(jìn)行人臉位置確定如圖6。上面這兩個(gè)結(jié)果相加即可以實(shí)現(xiàn)初步的換臉。
a)源圖像mask b)輸入圖像mask c)區(qū)域替換
(4)人臉對(duì)齊后利用人臉特征點(diǎn),可以進(jìn)行凸包檢測(cè)來(lái)得到人臉的區(qū)域,然后把第二幅圖凸包中的位置摳出來(lái)放到第一幅圖片中就可以了。但是,這樣得到的結(jié)果是十分不自然的,因?yàn)闀?huì)受到背景光照或者膚色等因素的影響。
利用高斯模糊來(lái)幫助校正顏色,使用im2(輸入人臉圖像)除以im2的高斯模糊,乘以im1(源圖像)來(lái)校正顏色??傮w來(lái)說(shuō),這個(gè)方法比較粗糙和暴力,很多因素都忽略了,結(jié)果也只能從一定程度上獲得提高,有時(shí)反而會(huì)被修正的更“差”。因?yàn)橛泻芏嗟挠绊懸蛩?,選取到一個(gè)合適的高斯核的大小,才可能取得比較理想的結(jié)果。如果太小,第一個(gè)圖像的面部特征將顯示在第二個(gè)圖像中。過(guò)大內(nèi)核之外區(qū)域像素被覆蓋,并發(fā)生變色。
(5)測(cè)試函數(shù)會(huì)應(yīng)用到前面所有的程序,并把過(guò)程中生成的圖片全部打印出來(lái)。在進(jìn)行一系列操作后,輸入正面圖像的灰度不是初始的0~255或是0~1了,要顯示這些圖片必須要先進(jìn)行歸一化。在程序中調(diào)用了opencv中的cv2.normalize()函數(shù)。
本實(shí)驗(yàn)展示了模型在定性綜合結(jié)果和定量識(shí)別結(jié)果上的優(yōu)點(diǎn),從上面輸出的結(jié)果,可以看出深度特征表示已可視化,說(shuō)明了TP-GAN的效果已經(jīng)達(dá)到了一個(gè)令人滿(mǎn)意的程度,此次實(shí)驗(yàn)用到的數(shù)據(jù)集是750 000的數(shù)據(jù)集,其可用在姿態(tài)、光照和表情變化等各類(lèi)情況下的人臉識(shí)別檢測(cè)中。雖然有很多利用深度學(xué)習(xí)來(lái)進(jìn)行正面人臉合成的例子,但是他們合成的圖像都無(wú)法存儲(chǔ)具有其身份識(shí)別信息的圖像。
在五官遷移的過(guò)程中,每個(gè)測(cè)試圖像皆為其正面圖像。傳統(tǒng)的面部遷移方法效果都很差,其主要原因是傳統(tǒng)的膚色融合及面部選擇區(qū)域過(guò)小,會(huì)影響其面部個(gè)別特征遷移后消失不見(jiàn)。為了測(cè)試文本提出的修改遷移選取五官的效果,故選取相同的輸入圖像作為測(cè)試樣本來(lái)進(jìn)行實(shí)驗(yàn),面部五官遷移效果如圖7。圖中從左至右分別為源圖像以及生成圖像。
a)源圖像 b)生成圖像
本文的方法,通過(guò)TP-GAN框架將人臉圖像由側(cè)面轉(zhuǎn)為正面,為了解決不受約束的問(wèn)題,在訓(xùn)練過(guò)程中進(jìn)一步引入了對(duì)抗性損失。對(duì)抗性損失能準(zhǔn)確地發(fā)現(xiàn)并指導(dǎo)合成駐留在正面的數(shù)據(jù)分布中,進(jìn)而明確地利用對(duì)稱(chēng)性來(lái)減輕大角度情況下被遮擋的影響。此外,還將身份保留損失融入到本文的框架中,使合成人臉圖像具有良好的視覺(jué)效果,可以應(yīng)用于準(zhǔn)確的人臉識(shí)別。通過(guò)本文實(shí)驗(yàn)表明,該方法提供了引人注目的感知結(jié)果,在大姿態(tài)人臉識(shí)別上也優(yōu)于目前的研究成果。針對(duì)面部五官融合的問(wèn)題,本文改變遷移區(qū)域劃分的方法,通過(guò)基于OpenCV和Dlib方法進(jìn)行人臉融合。實(shí)驗(yàn)結(jié)果表明由Semaless與Vag-Color的組合對(duì)人臉五官遷移有重要作用。與其他現(xiàn)有方法相比,本文的方法在融合程度與視覺(jué)效果均具有優(yōu)勢(shì),是一個(gè)很有潛力的模型。