高 工,楊紅雨,2,劉 洪,2*
(1.視覺合成圖形圖像技術(shù)國防重點實驗室(四川大學(xué)),成都 610064;2.四川大學(xué)計算機學(xué)院,成都 610065)
(*通信作者電子郵箱g18438613630@126.com)
近年來,人工智能和計算機視覺高速發(fā)展,人臉識別憑借其高效性、便捷性、實用性,成為了目前最流行的生物安全驗證手段,在金融支付、視頻監(jiān)控、考勤等領(lǐng)域的相關(guān)應(yīng)用越來越廣泛。雖然基于二維圖像人臉識別有很高的識別率,但二維圖像是三維物體在平面上的投影,三維物體投影到平面會喪失一部分信息,并且二維圖像人臉識別容易受到光照、姿態(tài)、表情的影響,因此使用三維人臉數(shù)據(jù)進行識別更有優(yōu)勢。
傳統(tǒng)的基于點云的三維人臉識別首先使用鼻尖點檢測算法找到三維人臉的鼻尖點,根據(jù)鼻尖截取一定范圍內(nèi)的人臉區(qū)域,然后手工設(shè)計面部特征提取特征,比如臉型、鼻子、眼睛等,然后利用特征相似性度量進行識別[1]。Drira 等[2]把徑向線引入三維人臉,以鼻尖點為起點構(gòu)建徑向線來表示人臉表面,使用徑向線的彈性形狀進行分析人臉表面的形狀,通過彈性黎曼度量標準測量面部形狀的差異實現(xiàn)人臉識別。在此基礎(chǔ)上,Lei 等[3]設(shè)計出角徑向特征(Angular Radial Signature,ARS),針對人臉多表情的問題,僅提取上半部分臉的特征,然后使用核主成分分析(Kernel Principal Component Analysis,KPCA)方法將ARS 映射到更具區(qū)分度空間,最后使用支持向量機(Support Vector Machine,SVM)進行人臉識別。Russ等[4]針對三維人臉對齊中存在的最大數(shù)量壓縮以及未訓(xùn)練人臉的良好泛化性能,提出了一種基于主成分分析(Principal Component Analysis,PCA)的三維人臉識別方法。這種方法將三維面注冊到一個通用的三維參考面上,然后執(zhí)行一個曲面法向搜索算法實現(xiàn)面部點的對應(yīng),在FRGC v1 數(shù)據(jù)集可以達到98.5%的識別率。Xu 等[5]使用局部形狀變化信息和全局的集合特征進行三維人臉識別。首先,將三維點云轉(zhuǎn)換為網(wǎng)格,然后使用網(wǎng)格的每個頂點的z坐標構(gòu)建幾何向量,在人臉的某些區(qū)域(嘴、鼻子、左眼和右眼)提取形狀特征。隨著深度學(xué)習(xí)在二維人臉識別取得飛速發(fā)展,研究人員進一步使用深度學(xué)習(xí)框架實現(xiàn)三維人臉識別。Gilani 等[6]將有限的三維人臉掃描數(shù)據(jù)通過旋轉(zhuǎn)進行數(shù)據(jù)集擴增,將每個三維人臉點云轉(zhuǎn)換成深度圖,以深度值、法向量的方向角、仰角三通道作為網(wǎng)絡(luò)輸入,訓(xùn)練出卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)提取特征進行人臉識別,在FRGC v2數(shù)據(jù)庫上識別正確率為97.1%,在Bosphorus 數(shù)據(jù)庫上為96.2%。Jiang等[7]針對訓(xùn)練數(shù)據(jù)不均衡的問題提出了一種屬性感知的損失函數(shù),將三維點云的x、y、z坐標組成三通道圖輸入殘差網(wǎng)絡(luò)(Residual Network,ResNet)進行人臉識別,在FRGC v2 數(shù)據(jù)庫上獲得98.5%的準確度。
三維人臉點云數(shù)據(jù)是由其三個坐標(x,y,z)表示的一組數(shù)據(jù)點空間,有時還包括顏色信息(R、G、B)和紋理信息。最有代表性的獲取點云數(shù)據(jù)的方法是光探測和測距數(shù)據(jù),它通過在靶區(qū)照射脈沖激光并通過激光返回到傳感器的時間差計算出距離來進行點云采集[8]。點云數(shù)據(jù)主要有三個特性:稀疏性、無序性和剛體變換不變性[9]。2017年,Qi等[10]使用深度學(xué)習(xí)方法結(jié)合三維點云提出了PointNet 網(wǎng)絡(luò),解決了點云的無序性。PointNet的分類網(wǎng)絡(luò)只提取了全局特征,缺失了局部特征提取。同年,Qi等[11]在PointNet基礎(chǔ)上提出了PointNet++,使用了采樣、分組、PointNet 模塊,增加了全局特征提取,分類精度得到了提升。2019 年,Liu 等[12]將經(jīng)典的2D CNN 拓展到3D點云關(guān)系卷積中提出了關(guān)系型卷積神經(jīng)網(wǎng)絡(luò)(Relation-Shape CNN,RS-CNN),實現(xiàn)了置換不變性并在分類任務(wù)中精度最高。
三維人臉點云與物體和場景點云不同,由于表情變化和姿態(tài)變化,三維人臉點云在采集時會導(dǎo)致數(shù)據(jù)缺失,本文針對這一問題使用了跳躍連接增強點云缺失時的魯棒性。本文使用ResPoint 網(wǎng)絡(luò)中特征提取方法,增強了三維人臉點云特征提取能力,使用ArcFace 損失函數(shù)擴大了不同三維人臉之間的差異性,提高了人臉識別的正確率。本文使用不同的網(wǎng)絡(luò)進行訓(xùn)練,對比并分析不同網(wǎng)絡(luò)在分類任務(wù)中的特征提取能力并驗證識別準確性。
為了降低頭發(fā)、肩部等冗余信息的影響,需要從獲取的三維點云數(shù)據(jù)中切割出有效面部區(qū)域。由于人臉面部起伏產(chǎn)生的遮擋、局部區(qū)域反射率較大等影響,會導(dǎo)致切割后的數(shù)據(jù)可能包含孔洞、離群點等問題,對識別效果產(chǎn)生負面影響,因此需要進行人臉切割、高斯濾波和孔洞補全,獲取較為準確的面部數(shù)據(jù)。
本文采用了CASIA 人臉數(shù)據(jù)集(http://www.cbsr.ia.ac.cn/english/3DFace Databases.asp)進行實驗,對CASIA 數(shù)據(jù)庫的點云做了鼻尖點檢測,對鼻尖點周圍R=90 mm 范圍內(nèi)的人臉切割,對切割后的人臉進行濾波處理和孔洞補全。本文對切割后的點云進行高斯濾波和孔洞補全,在一定程度上消除了隨機噪聲和結(jié)構(gòu)噪聲的影響。
由于基于z最大值的鼻尖點檢測算法對于姿態(tài)敏感,不能很好地切割側(cè)臉等問題,本文采用了對姿態(tài)魯棒的鼻尖點快速定位算法。在局部基準坐標下計算頂點的平面距離能量,先計算出鼻尖置信點,并對置信點進一步篩選,最終得到鼻尖點;然后再以鼻尖點為球心,在R=90 mm的范圍內(nèi)切割出有效面部區(qū)域。如圖1(a)是采集到的原始點云信息,圖1(b)是點云數(shù)據(jù),圖1(c)是切割后的人臉區(qū)域。
高斯濾波使用采樣點及其鄰域點位置加權(quán)平均進行三維點云平滑實現(xiàn)降噪[13],適用于散亂點云去噪,能夠保持原始點云的原貌。
點云數(shù)據(jù)噪聲和孔洞對特征提取有重大影響。以R=90 mm 切割的點云數(shù)據(jù)具有噪聲和孔洞,進行高斯濾波處理后,點云數(shù)量在5 200~7 300。對每個點的鄰域進行統(tǒng)計分析,計算出輸入數(shù)據(jù)點到鄰近點的距離分布,假設(shè)距離分布是高斯分布,其形狀是由均值和標準差決定,平均距離在標準范圍之外的點可以被定義為離群點,進行剔除[14]。使用高斯統(tǒng)計去除離群點的算法思想如下:
切割后的人臉點云數(shù)據(jù)可以表示為P={pi(xi,yi,zi)|i=1,2,…,n},對其建立KD-tree 搜索樹后,KNN(p)是p點的k鄰域點集,pij(xij,yij,zij)∈KNN(pi)為點pi的鄰域點,其中j=1,2,…,k。
定義di為某一已知點pi到其k個鄰域點的平均距離為di的平均值,σ為di的標準差。
靈感的捕捉是一個優(yōu)秀產(chǎn)品誕生的大前提,在小型代步工具設(shè)計的初期,基于綠色理念的設(shè)計構(gòu)想,然后出現(xiàn)的一些想法不斷地消失又重組。此次的設(shè)計點就是“環(huán)境污染最小化”以這點作為設(shè)計的出發(fā)點,隨即而來的展開“回收利用最大化,拆卸重組完全化,材質(zhì)選擇零污化”等等的幾個方面。
對每個點進行鄰域分析,假設(shè)di服從高斯分布,即),那么根據(jù)高斯函數(shù)曲線的特點,設(shè)置閾值ε(為表示標準差倍數(shù)的閾值):對于原始點云中的某一點,當時,將這點看作離群點從點云數(shù)據(jù)中剔除,其中ε為預(yù)設(shè)定的去噪?yún)?shù)。當ε=1 時,理論上可濾除的點數(shù)量為原始點云的31.73%。如圖2 所示,圖2(c)是三維立方插值到26 000個點。
圖2 點云濾波和三維立方插值Fig.2 Point cloud filtering and 3D cubic interpolation
ResPoint 網(wǎng)絡(luò)結(jié)構(gòu)如圖3 所示,受PointNet++網(wǎng)絡(luò)的啟發(fā),本文采用了4 個特征提取模塊,每個模塊都使用了局部特征提取模塊(ResConv)。PointNet 網(wǎng)絡(luò)直接從不規(guī)則點云學(xué)習(xí),實現(xiàn)點的置換不變性;但PointNet 只學(xué)習(xí)了全局特征,忽略了局部特征的提取。PointNet++將點云分組,并通過PointNet 對其進行學(xué)習(xí),這種設(shè)計符合提取高級語義特征的CNN 模式。PointNet++由三個局部特征提取模塊組成,每個模塊內(nèi)包含3 個多層感知機(Multi-Layer Perceptron,MLP)層和1 個pooling 層,一共9 個MLP 層用于特征提取。PointNet++局部特征提取時使用MLP,有以下兩個缺點:其卷積核為1,感受野過小,點云信息少,獲得的特征不好;每層只用一種尺寸的卷積核,不能獲得不同尺度的特征。RS-CNN從集合拓撲中學(xué)習(xí)點云關(guān)系信息實現(xiàn)分類任務(wù),只使用了全局特征,沒有不同尺度特征。ResPoint 網(wǎng)絡(luò)在局部信息提取時使用ResConv,使用了(3,1)和(1,1)兩種不同尺度的卷積核,還增加了跳躍連接(skip connection),提取不同尺度的特征進行融合,既增加了感受野,又融合不同尺度的特征,獲得較好的分類效果。
圖3 ResPoint網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 ResPoint network structure
ResPoint 網(wǎng)絡(luò)中用不同大小的卷積核,可以更好地捕獲點云局部形狀信息[6]。因此ResPoint 網(wǎng)絡(luò)在每個局部特征提取器中采用了大小不同的卷積核增加不同的感受野,更好地學(xué)習(xí)不同的特征,并新增了跳躍連接,使提取到的特征能傳到下一層網(wǎng)絡(luò)。
ResPoint網(wǎng)絡(luò)有4個特征提取模塊,在提取高維特征方面很有優(yōu)勢。如圖4 所示,ResConv 模塊采用作為輸入,具有d維坐標和C維特征的N個點;前三個SA(Set Abstraction)模塊選取一定數(shù)量的關(guān)鍵點,再把每個點周圍一定半徑內(nèi)的區(qū)域設(shè)為一組,經(jīng)過分組之后,使用局部特征提取層ResConv 模塊進行特征提??;第四個模塊把每個組提取到的點云局部特征做最大池化得到全局特征;然后經(jīng)過三個全連接層進行特征組合,最后得到類別分數(shù),實現(xiàn)分類任務(wù)。
圖4 ResConv架構(gòu)Fig.4 ResConv architecture
本文借鑒了ResNet 的殘差結(jié)構(gòu)的思想,在局部特征提取層ResConv,在卷積、批歸一化、激活層之間加入跳躍式連接,在人臉識別任務(wù)中取得很好的結(jié)果。ResConv 與PointNet++的局部特征有很大不同。前者使用大小不同的卷積核感知多尺度信息并聚合多層次信息,后者只在同一層使用卷積核為1 來收集信息,這導(dǎo)致每個層的上下文信息較少[15]。ResConv用(3,1)卷積核和(1,1)的卷積核提取特征,同時用(1,1)的卷積核提取特征之后,把不同感受野的特征結(jié)合。當網(wǎng)絡(luò)的層數(shù)變深時,所提取的信息更抽象,學(xué)習(xí)到的特征更好。因此ResPoint使用了4個特征提取模塊,對不同尺度的信息進行特征融合,網(wǎng)絡(luò)學(xué)習(xí)能力更強。
在分類任務(wù)中常用的損失函數(shù)是Softmax,其作用是將特征的線性組成映射到(0,1)內(nèi),使用交叉熵給出每個分類的概率,Softmax定義如公式[16]:
其中:分子是K個類別中第j個值;分母則表示所有值之和;Qj是指該樣本屬于第j類對應(yīng)的概率值。交叉熵函數(shù)公式:
其中:yj表示樣本的真實標簽。Softmax 只在分類任務(wù)中有很好的表現(xiàn),而對于不同類別之間的角度空間上沒有很好地區(qū)分開,所以本文使用了ArcFace 損失函數(shù),在角度空間中最大化分類界限。ArcFace損失函數(shù)不僅對權(quán)重進行了正則化,還對特征進行了正則化。另外乘上一個scale 參數(shù)(s),使分類映射到一個更大的超球面上,分類更方便。ArcFace 公式如下:
圖5 損失函數(shù)對比Fig.5 Comparison of loss functions
本文對人臉點云樣本的處理及使用深度學(xué)習(xí)框架進行訓(xùn)練和測試的過程、結(jié)果進行比較分析。在人臉點云預(yù)處理之后,使用ResPoint 對點云數(shù)據(jù)進行分類,完成三維人臉識別任務(wù)。最后測試了在主成分分析(PCA)[17]、法向迭代最近點(Normal Iterative Closest Point,NICP)[18]、PointNet、PointNet++、RS-CNN 和ResPoint 網(wǎng)絡(luò)對三維點云人臉識別的準確性。
本文使用Ubuntu 16.04,在Matlab2016 編寫實現(xiàn)了三維點云鼻尖點檢測以及三維插值等算法,并使用Anaconda 開源管理器編寫人臉識別的代碼,基于Pytorch1.4 框架,在Python3.7,CUDA10.1 上進行測試[14]。程序運行的硬件配置為Intel Core i7-8700K 8 GB,GTX1060 6 GB。
CASIA 三維人臉數(shù)據(jù)庫包括123 個對象,每個對象有37或38 個WRL 格式數(shù)據(jù)和對應(yīng)的BMP 圖片。123 個對象都有姿態(tài)、光照、表情、遮擋多種變化。如表1,本文使用正臉、旋轉(zhuǎn)臉和小姿態(tài)視角作為實驗數(shù)據(jù)。三維點云數(shù)據(jù)預(yù)處理之后,點云數(shù)量不一致,為了恢復(fù)原始點云的規(guī)模,使用三維立方插值統(tǒng)一上采樣到26 000 個點;然后對點云使用隨機旋轉(zhuǎn)擴充數(shù)據(jù)集,生成123個對象,每個對象有80個不同姿態(tài)的點云數(shù)據(jù)。
表1 CASIA人臉數(shù)據(jù)庫姿態(tài)分布Tab.1 Pose distribution of CASIA face database
在CASIA 數(shù)據(jù)集上,分別使用PCA 和NICP 傳統(tǒng)方法和PointNet、PointNet++、RS-CNN 等深度分類網(wǎng)絡(luò)進行三維人臉識別實驗,與本文的ResPoint 進行了對比分析。由于點云數(shù)據(jù)預(yù)處理后體量很大,基于深度學(xué)習(xí)的點云數(shù)據(jù)處理一般經(jīng)過下采樣。本文統(tǒng)一使用最遠點采樣統(tǒng)一抽取1 024 個點作為輸入,使用標準的反向傳播和隨機梯度下降(Stochastic Gradient Descent,SGD)進行訓(xùn)練。訓(xùn)練集數(shù)據(jù)與驗證集數(shù)據(jù)按4∶1 進行劃分,學(xué)習(xí)率固定為0.001。本文訓(xùn)練ResPoint 網(wǎng)絡(luò)使用參數(shù)與其他網(wǎng)絡(luò)一致,以下是對比實驗結(jié)果。
NICP 是基于迭代最近點(Iterative Closest Point,ICP)算法的改進,在進行匹配時,不僅在距離上接近,而且所處的法向量也要相同。人臉表面作為非剛體受表情影響較大,只獲得了87.2%的識別正確率。PCA用一種點云匹配算法把整個人臉編碼為向量,缺失了眼睛、鼻子、嘴等人臉的局部信息,其識別正確率為91.8%。PointNet 跟PCA 的思想類似,把人臉編碼為向量之后,用三個全連接實現(xiàn)分類,獲得了66.7%的識別正確率。PointNet++的采樣、分組、提取特征與CNN 的思想一致,對人臉點云特征有比較好的提取能力,獲得了92.1%的識別正確率。RS-CNN 設(shè)計了一種在點云上可以運用的卷積方式,從集合關(guān)系中學(xué)習(xí)推理3D 形狀,其識別正確率為92.9%。本文提出的ResPoint 網(wǎng)絡(luò)改進了局部特征提取,使用不同的感受野更好地提取人臉點云的特征,獲得了97.6%的識別正確率,高于多個深度學(xué)習(xí)網(wǎng)絡(luò)和傳統(tǒng)方法的識別率,與RS-CNN相比,ResPoint網(wǎng)絡(luò)識別正確率提高了5.06%。
圖6 ResPoint網(wǎng)絡(luò)與其他方法的實驗結(jié)果Fig.6 Experimental results of ResPoint network and other methods
總體來說,ResPoint 網(wǎng)絡(luò)在CASIA 上的錯誤率降低了66.20%,這些結(jié)果表明ResPoint 網(wǎng)絡(luò)在CASIA 數(shù)據(jù)集上的有效性。
本文還測試了在CASIA 數(shù)據(jù)集上缺失點云的魯棒性,并進行了分析,圖7是在三維人臉點云分別采樣1 024、512、256、128、64個點的結(jié)果。
圖7 不同采樣密度的點云Fig.7 Point clouds with different sampling densities
本文使用了不同的采樣點數(shù)作為三維人臉點云數(shù)據(jù),作為輸入訓(xùn)練了1 024 個點的模型。訓(xùn)練過程中隨機丟失一定數(shù)量的點云,并與PointNet、PointNet++、PCA、RS-CNN 進行了比較。圖8 顯示ResPoint 在測試中表現(xiàn)更好,這表明ResPoint模型獲得的語義比PointNet++多尺度信息更多,顯示了模型很有競爭力。
圖8 稀疏點測試結(jié)果Fig.8 Test results of sparse points
本文針對三維人臉點云識別任務(wù)中人臉多姿態(tài)、多角度以及三維點云缺失等問題,提出了一種新的網(wǎng)絡(luò)模型ResPoint。ResPoint 網(wǎng)絡(luò)使用了大小不同的卷積核和跳躍連接提取特征,提高了三維點云網(wǎng)絡(luò)特征提取能力;使用ArcFace 作為損失函數(shù),提高了識別正確率;ResPoint 使用了ResConv 進行特征提取,增強了對人臉點云的特征提取能力。模型有效地提取了人臉的三維特征,可以進行三維點云的識別工作。在ResPoint 網(wǎng)絡(luò)中,點云數(shù)據(jù)經(jīng)過采樣、分組后使用ResConv 進行特征提取,充分保證了特征信息不丟失[19]。實驗結(jié)果表明,ResPoint 網(wǎng)絡(luò)對人臉點云有較好的特征提取能力,人臉識別任務(wù)精度較高。同時使用ResPoint 網(wǎng)絡(luò)對不同采樣密度進行測試,均取得了較好的結(jié)果,表明ResPoint 有很強的魯棒性。
由于ResPoint 網(wǎng)絡(luò)還達不到實時性的要求,在接下來的研究工作中,對如何提升ResPoint 網(wǎng)絡(luò)的實時性仍需進一步探索。