王躍進(jìn),耿國華,郭沛瑤,拓東成,景云鵬,朱新懿,劉曉寧
(1.西北大學(xué) 文化遺產(chǎn)數(shù)字化國家地方聯(lián)合工程研究中心,陜西 西安 710127;2.西北大學(xué) 信息科學(xué)與技術(shù)學(xué)院,陜西 西安 710127)
在人的遺骸中,顱骨是最容易被長久保存的。作為進(jìn)行無名尸骨身份識別最有價值的遺骨,近100多年,法醫(yī)專家們一直嘗試通過顱骨來進(jìn)行身份認(rèn)證。其中最重要的方法之一就是顱骨面貌復(fù)原,也稱顱面復(fù)原[1-2]。解剖學(xué)、人類學(xué)等領(lǐng)域國內(nèi)外學(xué)者試圖利用顱骨面貌復(fù)原技術(shù)將本學(xué)科知識拓寬,顱骨面貌復(fù)原技術(shù)的受關(guān)注度逐漸升高,但是,復(fù)原的面貌還遠(yuǎn)未完成顱骨的身份識別。計算機(jī)輔助完成的復(fù)原面貌通常與真實面貌有一定差距[3]。由于目前沒有特別有效的方法,為了確認(rèn)顱骨的身份,國內(nèi)外刑偵人員通常的做法是將復(fù)原面貌向社會公布,由親屬或朋友辨認(rèn),進(jìn)而再與可疑失蹤人的照片進(jìn)行比對,或者由刑偵人員根據(jù)發(fā)案地周圍的失蹤人員照片進(jìn)行比對,該過程漫長且顯無力。面對數(shù)量龐大的失蹤人員,急需利用現(xiàn)有的信息技術(shù)提供幫助[4-5]。
本文旨在為計算機(jī)輔助復(fù)原的面貌與失蹤人口的面貌圖像之間搭建橋梁,研究復(fù)原面貌的真實感處理[6]。目前,復(fù)原面貌真實感領(lǐng)域研究者采用的處理方法大多基于紋理映射與物理模擬方法兩大類。它們都是在三維模型基礎(chǔ)上進(jìn)行紋理映射或物理模擬從而完成真實感處理。這兩類方法需要專業(yè)的知識才可以完成,并且復(fù)原操作過程繁瑣。當(dāng)前,計算機(jī)技術(shù)與各個學(xué)科之間不再互相獨立,復(fù)原面貌真實感處理也不再僅僅局限于刑偵與考古領(lǐng)域,醫(yī)療美容、電影娛樂與信息安全等領(lǐng)域也都不同程度使用該技術(shù)。與該領(lǐng)域研究發(fā)展較早且更成熟的國家相比,國內(nèi)復(fù)原面貌真實感處理還處于起步階段。2008年國家專門立項進(jìn)行顱骨面貌復(fù)原工作,為國內(nèi)復(fù)原面貌真實感處理工作奠定了基石[7-8]。
本文中采用深度學(xué)習(xí)技術(shù)二維空間中完成復(fù)原面貌的真實感處理,運用P-net保證身份唯一性的情況下,生成逼真面貌圖像,主要工作如圖1所示。顱骨面貌復(fù)原后只是復(fù)原了顱骨生前的外表皮,此時獲得面貌模型僅僅具有三維面貌形狀信息,缺少真實面貌的紋理細(xì)節(jié)和五官特征。為了彌補這一問題,早期面貌真實感處理基于紋理貼圖的方法來完成[9-14],這樣的處理方法僅僅得到了復(fù)原面貌紋理的幾何信息,而缺少可以更加直觀體現(xiàn)出無名顱骨身份的人類學(xué)信息。
圖1 本文主要工作Fig.1 Main contents of this paper
現(xiàn)階段主流面貌真實感處理方式是基于紋理映射或物理模擬[15-17]。紋理映射真實感主要基于顏色紋理映射進(jìn)行建模[2,5-6],顏色映射通過改變面貌表面的陰影給出皺紋的視覺印象,而不是通過幾何變形。紋理映射真實感處理主要依靠3DMax或OpenGL等軟件在復(fù)原面貌模型上添加數(shù)據(jù)庫中通用器官紋理數(shù)據(jù)實現(xiàn)[3,18-21]。使用3DMax等三維建模軟件將二維面貌數(shù)據(jù)的紋理或器官等細(xì)節(jié)信息提取,將這些特征映射至三維面貌模型以提高真實感[3]。物理的方法主要模擬面貌真實的皮膚形態(tài)和功能,典型的方法是質(zhì)量彈簧、有限元方法和光擴(kuò)散理論[7,22]。一些研究者提出有限元模型來創(chuàng)建富有表現(xiàn)力和老化的皺紋。
分析目前復(fù)原面貌真實感處理與年齡編輯的國內(nèi)外研究現(xiàn)狀[23-27],本文基于Pix2Pix對抗生成網(wǎng)絡(luò),引入身份約束P-net,提出進(jìn)行復(fù)原面貌真實感處理的方法,技術(shù)路線如圖2所示。傳統(tǒng)的Pix2Pix網(wǎng)絡(luò)是一種可以完成像素到像素的成對轉(zhuǎn)換的通用框架[28-31],使用VGG16來提取面貌特征,VGG16通過卷積和全連接的方式進(jìn)行面貌的特征提取,通過增加深度和寬度有效地提升了性能,同時只使用了3×3卷積與2×2池化,十分簡潔[32-33]。但是,使用復(fù)原面貌作為輸入時,常常識別不到面貌。為了確保生成真實感面貌的身份準(zhǔn)確性,本文預(yù)訓(xùn)練了一個人臉面貌目標(biāo)約束網(wǎng)絡(luò)P-net,同時使用SE-Block(將SE-Block添加到先前的網(wǎng)絡(luò)中,它會根據(jù)特征通道之間的相關(guān)性進(jìn)行建模,強(qiáng)化重要特征)學(xué)習(xí)各通道間關(guān)系。
圖2 技術(shù)路線圖Fig.2 Technology roadmap
P-net具有三類數(shù)據(jù),第一類數(shù)據(jù)“錨示例”和第二類數(shù)據(jù)“正示例”分別對應(yīng)真實感處理前面貌數(shù)據(jù)和其對應(yīng)真實面貌數(shù)據(jù),為了保證真實感后面貌圖像身份信息不變,第三類數(shù)據(jù)“反示例”樣本需要選取與第一類數(shù)據(jù)身份不同但相似度最高的前3樣本。本文使用Triplet loss和Contrastive loss,Triplet loss一般用于差別不明顯的樣本,通過Triplet Loss使得網(wǎng)絡(luò)對于第一、三類數(shù)據(jù)分辨能力加強(qiáng),Triplet loss使用平方距離來表示三類數(shù)據(jù)之間的距離。另外引入了Contrastive loss,這個損失函數(shù)主要是用在降維中,即本來相似的樣本,經(jīng)過降維(特征提取)后,在特征空間中,兩個樣本仍舊相似。而原本不相似的樣本,在經(jīng)過降維后,在特征空間中,兩個樣本仍舊不相似。
本文的訓(xùn)練目的是身份相同的第一、二類數(shù)據(jù)的距離越來越近,而身份不同的第一、三類數(shù)據(jù)的距離越來越遠(yuǎn)。通過這樣來約束面貌生成的方向,保證生成面貌的身份保存率。
2014年Isola等提出一種全新的網(wǎng)絡(luò)結(jié)構(gòu),如圖3所示使用兩個不斷競爭學(xué)習(xí)的模塊[34-35]。這個網(wǎng)絡(luò)即對抗生成網(wǎng)絡(luò)(generative adversarial network,GAN),它使用生成器模塊(generator)與判別器模塊(discriminator)不斷競爭博弈,最終使得生成器達(dá)到要求。生成與判別模塊內(nèi)部結(jié)構(gòu)可以是神經(jīng)網(wǎng)絡(luò)或其他結(jié)構(gòu)。生成器接收為一個隨機(jī)的噪聲(random noise),通過學(xué)習(xí)真實樣本的數(shù)據(jù)分布,使得生成器產(chǎn)生的偽造數(shù)據(jù)盡可能逼近真實數(shù)據(jù)分布。判別器任務(wù)則是判別數(shù)據(jù)的分布是否符合真實分布。對抗生成網(wǎng)絡(luò)的思想本質(zhì)就是一場零和游戲(zero-sum game),生成器與判別器競爭過程中一方損失則另一方一定受益。在圖像領(lǐng)域,判別器通過分析輸入數(shù)據(jù)分布判斷其真假,通過判別器的判斷生成器生成真實分布圖像的能力進(jìn)一步增強(qiáng)。兩者在不斷的競爭中提高自身能力,最終達(dá)到一個穩(wěn)定狀態(tài)。
圖3 對抗生成網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 Adversarial generation network structure
針對生成器與判別器各自的目標(biāo),GAN網(wǎng)絡(luò)的損失函數(shù)如公式(1)。
E(x)~Pdata(x)[logD(x)]+
E(x)~Pz(x)[log(1-D(G(x)))]。
(1)
其中,x為輸入圖像;Pdata、Pz分別為給定數(shù)據(jù)集和隨機(jī)信號的概率分布。
GAN網(wǎng)絡(luò)的生成器與判別器的目標(biāo)相反,如此一來生成器與判別器形成一個min-max游戲,兩者交替優(yōu)化自身,最后到達(dá)平滑的狀態(tài)。
Pix2Pix網(wǎng)絡(luò)基于GAN網(wǎng)絡(luò)進(jìn)行改進(jìn),實現(xiàn)了圖像到圖像的翻譯工作。GAN網(wǎng)絡(luò)使用條件約束控制數(shù)據(jù)生成方向,Pix2Pix網(wǎng)絡(luò)利用圖像作為約束條件,網(wǎng)絡(luò)學(xué)習(xí)輸入與輸出之間的關(guān)系,最終生成想要的圖像。
圖4左側(cè)輸入為非真實圖像x(如草圖)結(jié)合隨機(jī)噪聲z(未畫出),通過生成器產(chǎn)生偽造圖片G(x),x與G(x)進(jìn)行合并通道作為判別器的輸入。判別器給輸入為一對真實圖片的概率。圖4右側(cè)表示真實圖像y與x進(jìn)行通道合并,作為判別器的輸入。那么判別器的目標(biāo)就是,在輸入是一對真實圖片時,輸出最大概率;在輸入不是一對真實圖片時,輸出最小概率。生成器的目標(biāo)則是提高自身生成能力,希望在G(x)和x為一對輸入時,試圖欺騙判別器,讓判別器輸出最大概率。
圖4 Pix2Pix對抗生成網(wǎng)絡(luò)結(jié)構(gòu)[35]Fig.4 Adversarial generation network structure
Pix2Pix的損失函數(shù)是基于條件GAN網(wǎng)絡(luò)的損失函數(shù),L1為像錄級別的損失,參考TP-GAN網(wǎng)絡(luò)結(jié)構(gòu)[35],如式(2)所示。使用L1的目的是計算輸入圖像與約束圖像之間的距離,
(2)
其中,min和max的含義可以理解為,判別器D的訓(xùn)練目標(biāo)是使得式(3)的值越大越好,而生成器G的訓(xùn)練目標(biāo)是使得式(3)的值越小越好。但是這里需要將生成器G的損失函數(shù)從最小化log(1-D(x,G(x,z))修改為最大化log(D(x,G(x,z)))。這是由于對抗生成網(wǎng)絡(luò)使用公式(3)進(jìn)行訓(xùn)練的時候,極易發(fā)生飽和的狀態(tài),導(dǎo)致生成器與判別器的能力懸殊。
lcGAN(G,D)=E(x,y)[logD(x,y)]+
E(x,z)[log(1-D(x,G(x,z)))。
(3)
Pix2Pix網(wǎng)絡(luò)的生成器采用U-Net結(jié)構(gòu),如圖5所示,U-Net結(jié)構(gòu)可以將各個層次的特征充分融合,所以在圖像識別與分割領(lǐng)域廣泛使用。U-Net相對傳統(tǒng)的Encoder-decoder結(jié)構(gòu),添加了跳躍鏈接。跳躍連接的作用是可以將下采樣與上采樣的各階段特征進(jìn)行充分融合。U-Net使用上采樣獲取圖像的細(xì)節(jié)信息,使用下采樣獲取圖像輪廓信息,那么跳躍連接可以將各個部分的特征信保留并融合,避免出現(xiàn)因為隨著網(wǎng)絡(luò)傳遞導(dǎo)致丟失大量細(xì)節(jié)信息的問題。
圖5 U-Net網(wǎng)絡(luò)結(jié)構(gòu)Fig.5 U-net network structure
Pix2Pix網(wǎng)絡(luò)的判別器采用馬爾科夫判別器(PatchGAN)[36]。PatchGAN不是直接對輸入圖像整體做出判別,而是對圖像進(jìn)行劃分Patch,針對N×N大小的Patch進(jìn)行判別。理論上不同的Patch可以認(rèn)為是沒有關(guān)聯(lián)的,判別器結(jié)果取所有Patch判別結(jié)果平均值。通過Patch分批進(jìn)行判別,降低了參數(shù)量,提高運算速度。
Pix2Pix基于對抗生成網(wǎng)絡(luò)結(jié)構(gòu)為圖像翻譯一類問題提供了通用框架。生成器使用U-Net結(jié)構(gòu),融合了網(wǎng)絡(luò)各層的特征信息,保證生成圖像的質(zhì)量。判別使用PatchGAN,解決了直接輸入一張圖片運算速度慢的問題,同時因為是使用Patch判別,所以輸入圖片的大小不受限制。
為了確保生成的真實感面貌的準(zhǔn)確性,本文預(yù)訓(xùn)練了一個用于目標(biāo)約束的面貌網(wǎng)絡(luò)P-net,這個網(wǎng)絡(luò)與之前的面貌相似度度量網(wǎng)絡(luò)不同,因為當(dāng)數(shù)據(jù)為復(fù)原面貌圖像時,面貌檢測網(wǎng)絡(luò)通常會檢測不到目標(biāo)。本文針對這個問題重新來訓(xùn)練一個網(wǎng)絡(luò)P-net,使用VGG16來進(jìn)行人臉特征提取,結(jié)合SE-Block來學(xué)習(xí)各個特征通道之間的關(guān)系,為了讓網(wǎng)絡(luò)更好的收斂,引入了BN層,損失函數(shù)使用Triplet loss和Contrastive loss相結(jié)合。P-net網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示。
圖6 P-net網(wǎng)絡(luò)結(jié)構(gòu)Fig.6 P-net network structure
P-net網(wǎng)絡(luò)中主要具有3類數(shù)據(jù),Anchor代表復(fù)原面貌圖像,Positive代表Anchor的真實面貌圖片,Negative代表與Anchor不同身份的真實面貌圖像。本文將Anchor、Positive和Negative稱為圖像三元組。P-net網(wǎng)絡(luò)目標(biāo)是使得相同身份的Anchor和Positive距離變近,而不同身份的Anchor和Negative距離變遠(yuǎn)。
為了提高判別網(wǎng)絡(luò)的能力,Negative樣本數(shù)據(jù)選取與Anchor身份不同但與其對應(yīng)的面貌圖像相似度最高的樣本,這些樣本被稱為Hard Negative。P-net使用Face++將Anchor面貌數(shù)據(jù)與數(shù)據(jù)集中的面貌進(jìn)行相似度度量,選擇相似度最高的前3個面貌數(shù)據(jù)作為Hard Negative樣本。Triplet loss可以將差別很小的數(shù)據(jù)進(jìn)行區(qū)分。輸入圖片三元組,通過使用Triplet loss,將復(fù)原面貌圖像Anchor與Positive和Negative之間的距離使用平方距離表示。那么Triplet loss的損失函數(shù)計算公式可表示為公式(4)。
(4)
在數(shù)據(jù)量較小的情況下,Triplet loss讓Anchor樣本和Positive樣本的距離小于Anchor樣本和Negative樣本的距離。此外,Anchor樣本和Positive樣本的距離盡可能小,所以另外引入了Contrastive loss,Contrastive loss將數(shù)據(jù)進(jìn)行降維,降維之后的數(shù)據(jù)之間的相似性不會改變。本文所采用的Contrastive loss損失函數(shù)為
(1-y)max(margin-d,0)2。
(5)
其中,d為兩個圖像之間的歐氏距離;margin為預(yù)設(shè)置的閾值。損失函數(shù)將Triplet loss和Contrastive loss相結(jié)合,得到P-net網(wǎng)絡(luò)的損失函數(shù)為
(1-y)max(margin-d,0)2。
(6)
Pix2Pix將網(wǎng)絡(luò)中生成器的隨機(jī)輸入信號z換做一張圖像x和隨機(jī)信號z的組合向量{z,x},輸出為G(z,x)。判別器要判斷{x,G(z,x)}和{x,y},其中y為本文實驗想要得到真實數(shù)據(jù)Real。網(wǎng)絡(luò)中的生成器采用U-Net結(jié)構(gòu),U-Net使用拼接的方式將不同通道的特征融合,形成更厚的特征,這樣采用多尺度特征融合保留了更多的信息,得到的圖像更加精細(xì)。判別器采用了PatchGAN,提高了網(wǎng)絡(luò)的運行速度。
針對Pix2Pix網(wǎng)絡(luò)生成復(fù)原面貌圖像真實感低的問題,本文在此基礎(chǔ)上引入預(yù)訓(xùn)練網(wǎng)絡(luò)P-net,它專門針對面貌真實感的處理,P-GAN網(wǎng)絡(luò)的整體輸入為成對的面貌圖像和人臉數(shù)據(jù),將P-net中輸入部分替換為二元組,特征提取部分為SE-VGG16,去除Triplet loss部分,將提取到N維的特征映射到超球面,最后使用余弦距離(記為P-cos)來度量相似度。P-net主要用來約束生成人臉圖的唯一性,P-GAN網(wǎng)絡(luò)框架如圖7所示。
圖7 P-GAN網(wǎng)絡(luò)結(jié)構(gòu)Fig.7 P-GAN network structure
本文將P-net作用于生成器部分,將P-net產(chǎn)生的損失引入生成器的損失函數(shù)中,來提高生成器的準(zhǔn)確度,修改后的損失函數(shù)見式(7),
P-GAN loss=
E(y,x)~Pdata[logD(y,x)]+
E(z,x)~Pz[log(1-D(G(z,x)))+
P-net loss]。
(7)
本文在面貌數(shù)據(jù)集上評估了P-GAN真實感處理的效果。數(shù)據(jù)集中含復(fù)原面貌圖像和與其對應(yīng)真實面貌圖片200對,對于P-net的預(yù)訓(xùn)練網(wǎng)絡(luò),本文使用計算量較小的VGG16網(wǎng)絡(luò)來進(jìn)行特征提取,將網(wǎng)絡(luò)的輸入改為三輸入,引入BN層和SE-Block來加速網(wǎng)絡(luò)訓(xùn)練以及獲取特征通道之間的關(guān)系。將最后一層的全連接替換為128,用于得到128維特征向量,損失函數(shù)采用Triplet loss和Contrastive loss相結(jié)合的方法,它們分別作用于(Anchor、Positive、Negative)和((Anchor、Positive),(Positive、Negative)),采用梯度下降法進(jìn)行優(yōu)化。網(wǎng)絡(luò)的參數(shù)初始化分為2部分,①網(wǎng)絡(luò)的卷積部分的參數(shù)直接采用VGG16論文中的參數(shù);②全連接層參數(shù)采用截斷為0.01的高斯分布。本文網(wǎng)絡(luò)使用Fine-tuning訓(xùn)練。
對于P-net網(wǎng)絡(luò),本文通過Face++來篩選Hard negative樣本,選取相似度最高的前k個樣本與所對應(yīng)的m個Anchor和Positive組成m×k三元組,用于P-net網(wǎng)絡(luò)的訓(xùn)練。
通過提取人臉的特征,計算兩張面貌圖像的歐式距離與余弦距離,從而判斷兩者身份相同的概率,并給出相似度評分,百度API(https:∥ai.baidu.com/tech/face/detect)人臉識別準(zhǔn)確率已經(jīng)達(dá)到99.9%。對于一般的人臉相似度判斷,使用歐氏距離結(jié)合余弦距離進(jìn)行計算。歐式距離比較簡單,用來計算兩個點間的距離,公式為
(8)
通過計算空間目標(biāo)向量的夾角余弦值(cosθ),判別兩者之間的相似程度,cosθ值越小說明夾角越小,也就代表兩者相似程度越高。
(9)
在百度人臉相似度平臺會看到人臉相似度是一個百分比,其使用Sigmoid函數(shù),這個函數(shù)y的范圍是(0,1),對應(yīng)的百分比范圍0~100%,同樣可以通過Sigmoid函數(shù)的變形來實現(xiàn)從歐氏距離到人臉相似百分比的映射。
(10)
本文人臉相似度評價采用百度人臉相似度API,首先API對生成的圖像進(jìn)行人臉檢測,P-GAN所有生成的樣本均被檢測為正常人臉,通過計算真實面貌與生成面貌圖像之間的歐式距離與余弦距離,得到面貌相似度得分。該得分在0~100之間,分?jǐn)?shù)越高表明人臉的相似度越高,評價結(jié)果如表1所示。圖8展示了Pix2Pix網(wǎng)絡(luò)和P-GAN網(wǎng)絡(luò)的真實感處理結(jié)果。
本文對數(shù)據(jù)進(jìn)行增強(qiáng)操作(對稱反轉(zhuǎn)和加入高斯噪聲等)后,與原始Pix2Pix網(wǎng)絡(luò)進(jìn)行結(jié)果比較。發(fā)現(xiàn)添加P-net約束后,可以直觀地看出本文網(wǎng)絡(luò)P-GAN在進(jìn)行面貌真實感處理時對于身份的保存率更高,同時在發(fā)型和情感上也與真實面貌圖像有著更優(yōu)的保存率。但是,仍然存在生成出錯的樣本,很大一部分原因是由于數(shù)據(jù)量少,網(wǎng)絡(luò)過擬合導(dǎo)致。P-GAN網(wǎng)絡(luò)生成的真實化面貌圖像全部可以被識別成功,同時與真實面貌相似度最高可達(dá)93.06%,與視覺上的感受相同。本文P-GAN網(wǎng)絡(luò)真實感處理后的面貌圖像對于身份信息保存率全部高于傳統(tǒng)的Pix2Pix網(wǎng)絡(luò)。身份信息保存率高,主要是由于P-net中損失函數(shù)的創(chuàng)新功能。
表1 Pix2Pix與P-GAN結(jié)果評價Tab.1 Pix2Pix and P-GAN results evaluation
圖8 面貌真實感結(jié)果Fig.8 Face realistic result
P-net的損失函數(shù)由Triplet loss與Contrastive loss結(jié)合而成,Triplet loss的目標(biāo)是使得相同身份的數(shù)據(jù)距離盡可能近,同時使得不同身份數(shù)據(jù)的距離盡可能遠(yuǎn)(至少大于設(shè)定值margin)。針對成對數(shù)據(jù)P-net的損失函數(shù)引入Contrastive loss,使得網(wǎng)絡(luò)可以有效地處理這類數(shù)據(jù),
(11)
其中,d表示兩個圖像之間的歐氏距離;s為兩者的相似系數(shù);margin為預(yù)設(shè)設(shè)置的閾值。當(dāng)樣本相似s的值為1,式(11)只剩下前一項,如果兩個相似的樣本歐式距離大,那么通過的平方加大損失進(jìn)行優(yōu)化模型;當(dāng)樣本不匹配時,式(11)只剩下后一項,而不同身份樣本的歐氏距離反而很小的話,通過margin進(jìn)行加大損失??傊?當(dāng)不同樣本出現(xiàn)歐氏距離與其身份不同的情況,本文P-net損失通過s值的變化,對其加大損失。通過Triplet loss與Contrastive loss結(jié)合的損失函數(shù),可以保證真實感處理后人臉圖片的身份信息得以保存。
本文所提出的P-net用來生成更加準(zhǔn)確的面貌圖像,通過引入Face++來選擇 Negative樣本,采用VGG16來提取特征,Triplet loss作為損失函數(shù)來進(jìn)行訓(xùn)練得到一個特征提取器,對P-net產(chǎn)生的特征進(jìn)行相似度度量,并且將損失引入到生成器當(dāng)中,用來約束生成器的生成規(guī)則。它不僅可以應(yīng)用于復(fù)原面貌真實感處理,也可以應(yīng)用于其他的生成機(jī)制中(人臉老化、表情變化、人臉識別數(shù)據(jù)集等)。