?

基于深度學習的三維點云人臉識別

2021-09-18 06:22楊紅雨
計算機應用 2021年9期
關鍵詞:鼻尖正確率特征提取

高 工,楊紅雨,2,劉 洪,2*

(1.視覺合成圖形圖像技術國防重點實驗室(四川大學),成都 610064;2.四川大學計算機學院,成都 610065)

(*通信作者電子郵箱g18438613630@126.com)

0 引言

近年來,人工智能和計算機視覺高速發展,人臉識別憑借其高效性、便捷性、實用性,成為了目前最流行的生物安全驗證手段,在金融支付、視頻監控、考勤等領域的相關應用越來越廣泛。雖然基于二維圖像人臉識別有很高的識別率,但二維圖像是三維物體在平面上的投影,三維物體投影到平面會喪失一部分信息,并且二維圖像人臉識別容易受到光照、姿態、表情的影響,因此使用三維人臉數據進行識別更有優勢。

傳統的基于點云的三維人臉識別首先使用鼻尖點檢測算法找到三維人臉的鼻尖點,根據鼻尖截取一定范圍內的人臉區域,然后手工設計面部特征提取特征,比如臉型、鼻子、眼睛等,然后利用特征相似性度量進行識別[1]。Drira 等[2]把徑向線引入三維人臉,以鼻尖點為起點構建徑向線來表示人臉表面,使用徑向線的彈性形狀進行分析人臉表面的形狀,通過彈性黎曼度量標準測量面部形狀的差異實現人臉識別。在此基礎上,Lei 等[3]設計出角徑向特征(Angular Radial Signature,ARS),針對人臉多表情的問題,僅提取上半部分臉的特征,然后使用核主成分分析(Kernel Principal Component Analysis,KPCA)方法將ARS 映射到更具區分度空間,最后使用支持向量機(Support Vector Machine,SVM)進行人臉識別。Russ等[4]針對三維人臉對齊中存在的最大數量壓縮以及未訓練人臉的良好泛化性能,提出了一種基于主成分分析(Principal Component Analysis,PCA)的三維人臉識別方法。這種方法將三維面注冊到一個通用的三維參考面上,然后執行一個曲面法向搜索算法實現面部點的對應,在FRGC v1 數據集可以達到98.5%的識別率。Xu 等[5]使用局部形狀變化信息和全局的集合特征進行三維人臉識別。首先,將三維點云轉換為網格,然后使用網格的每個頂點的z坐標構建幾何向量,在人臉的某些區域(嘴、鼻子、左眼和右眼)提取形狀特征。隨著深度學習在二維人臉識別取得飛速發展,研究人員進一步使用深度學習框架實現三維人臉識別。Gilani 等[6]將有限的三維人臉掃描數據通過旋轉進行數據集擴增,將每個三維人臉點云轉換成深度圖,以深度值、法向量的方向角、仰角三通道作為網絡輸入,訓練出卷積神經網絡(Convolutional Neural Network,CNN)提取特征進行人臉識別,在FRGC v2數據庫上識別正確率為97.1%,在Bosphorus 數據庫上為96.2%。Jiang等[7]針對訓練數據不均衡的問題提出了一種屬性感知的損失函數,將三維點云的x、y、z坐標組成三通道圖輸入殘差網絡(Residual Network,ResNet)進行人臉識別,在FRGC v2 數據庫上獲得98.5%的準確度。

三維人臉點云數據是由其三個坐標(x,y,z)表示的一組數據點空間,有時還包括顏色信息(R、G、B)和紋理信息。最有代表性的獲取點云數據的方法是光探測和測距數據,它通過在靶區照射脈沖激光并通過激光返回到傳感器的時間差計算出距離來進行點云采集[8]。點云數據主要有三個特性:稀疏性、無序性和剛體變換不變性[9]。2017年,Qi等[10]使用深度學習方法結合三維點云提出了PointNet 網絡,解決了點云的無序性。PointNet的分類網絡只提取了全局特征,缺失了局部特征提取。同年,Qi等[11]在PointNet基礎上提出了PointNet++,使用了采樣、分組、PointNet 模塊,增加了全局特征提取,分類精度得到了提升。2019 年,Liu 等[12]將經典的2D CNN 拓展到3D點云關系卷積中提出了關系型卷積神經網絡(Relation-Shape CNN,RS-CNN),實現了置換不變性并在分類任務中精度最高。

三維人臉點云與物體和場景點云不同,由于表情變化和姿態變化,三維人臉點云在采集時會導致數據缺失,本文針對這一問題使用了跳躍連接增強點云缺失時的魯棒性。本文使用ResPoint 網絡中特征提取方法,增強了三維人臉點云特征提取能力,使用ArcFace 損失函數擴大了不同三維人臉之間的差異性,提高了人臉識別的正確率。本文使用不同的網絡進行訓練,對比并分析不同網絡在分類任務中的特征提取能力并驗證識別準確性。

1 三維點云的預處理

為了降低頭發、肩部等冗余信息的影響,需要從獲取的三維點云數據中切割出有效面部區域。由于人臉面部起伏產生的遮擋、局部區域反射率較大等影響,會導致切割后的數據可能包含孔洞、離群點等問題,對識別效果產生負面影響,因此需要進行人臉切割、高斯濾波和孔洞補全,獲取較為準確的面部數據。

本文采用了CASIA 人臉數據集(http://www.cbsr.ia.ac.cn/english/3DFace Databases.asp)進行實驗,對CASIA 數據庫的點云做了鼻尖點檢測,對鼻尖點周圍R=90 mm 范圍內的人臉切割,對切割后的人臉進行濾波處理和孔洞補全。本文對切割后的點云進行高斯濾波和孔洞補全,在一定程度上消除了隨機噪聲和結構噪聲的影響。

1.1 對姿態魯棒的鼻尖點檢測

由于基于z最大值的鼻尖點檢測算法對于姿態敏感,不能很好地切割側臉等問題,本文采用了對姿態魯棒的鼻尖點快速定位算法。在局部基準坐標下計算頂點的平面距離能量,先計算出鼻尖置信點,并對置信點進一步篩選,最終得到鼻尖點;然后再以鼻尖點為球心,在R=90 mm的范圍內切割出有效面部區域。如圖1(a)是采集到的原始點云信息,圖1(b)是點云數據,圖1(c)是切割后的人臉區域。

1.2 對人臉點云濾波處理和孔洞補全

高斯濾波使用采樣點及其鄰域點位置加權平均進行三維點云平滑實現降噪[13],適用于散亂點云去噪,能夠保持原始點云的原貌。

點云數據噪聲和孔洞對特征提取有重大影響。以R=90 mm 切割的點云數據具有噪聲和孔洞,進行高斯濾波處理后,點云數量在5 200~7 300。對每個點的鄰域進行統計分析,計算出輸入數據點到鄰近點的距離分布,假設距離分布是高斯分布,其形狀是由均值和標準差決定,平均距離在標準范圍之外的點可以被定義為離群點,進行剔除[14]。使用高斯統計去除離群點的算法思想如下:

切割后的人臉點云數據可以表示為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的標準差。

靈感的捕捉是一個優秀產品誕生的大前提,在小型代步工具設計的初期,基于綠色理念的設計構想,然后出現的一些想法不斷地消失又重組。此次的設計點就是“環境污染最小化”以這點作為設計的出發點,隨即而來的展開“回收利用最大化,拆卸重組完全化,材質選擇零污化”等等的幾個方面。

對每個點進行鄰域分析,假設di服從高斯分布,即),那么根據高斯函數曲線的特點,設置閾值ε(為表示標準差倍數的閾值):對于原始點云中的某一點,當時,將這點看作離群點從點云數據中剔除,其中ε為預設定的去噪參數。當ε=1 時,理論上可濾除的點數量為原始點云的31.73%。如圖2 所示,圖2(c)是三維立方插值到26 000個點。

圖2 點云濾波和三維立方插值Fig.2 Point cloud filtering and 3D cubic interpolation

2 ResPoint網絡結構

ResPoint 網絡結構如圖3 所示,受PointNet++網絡的啟發,本文采用了4 個特征提取模塊,每個模塊都使用了局部特征提取模塊(ResConv)。PointNet 網絡直接從不規則點云學習,實現點的置換不變性;但PointNet 只學習了全局特征,忽略了局部特征的提取。PointNet++將點云分組,并通過PointNet 對其進行學習,這種設計符合提取高級語義特征的CNN 模式。PointNet++由三個局部特征提取模塊組成,每個模塊內包含3 個多層感知機(Multi-Layer Perceptron,MLP)層和1 個pooling 層,一共9 個MLP 層用于特征提取。PointNet++局部特征提取時使用MLP,有以下兩個缺點:其卷積核為1,感受野過小,點云信息少,獲得的特征不好;每層只用一種尺寸的卷積核,不能獲得不同尺度的特征。RS-CNN從集合拓撲中學習點云關系信息實現分類任務,只使用了全局特征,沒有不同尺度特征。ResPoint 網絡在局部信息提取時使用ResConv,使用了(3,1)和(1,1)兩種不同尺度的卷積核,還增加了跳躍連接(skip connection),提取不同尺度的特征進行融合,既增加了感受野,又融合不同尺度的特征,獲得較好的分類效果。

圖3 ResPoint網絡結構Fig.3 ResPoint network structure

ResPoint 網絡中用不同大小的卷積核,可以更好地捕獲點云局部形狀信息[6]。因此ResPoint 網絡在每個局部特征提取器中采用了大小不同的卷積核增加不同的感受野,更好地學習不同的特征,并新增了跳躍連接,使提取到的特征能傳到下一層網絡。

2.1 網絡結構

ResPoint網絡有4個特征提取模塊,在提取高維特征方面很有優勢。如圖4 所示,ResConv 模塊采用作為輸入,具有d維坐標和C維特征的N個點;前三個SA(Set Abstraction)模塊選取一定數量的關鍵點,再把每個點周圍一定半徑內的區域設為一組,經過分組之后,使用局部特征提取層ResConv 模塊進行特征提??;第四個模塊把每個組提取到的點云局部特征做最大池化得到全局特征;然后經過三個全連接層進行特征組合,最后得到類別分數,實現分類任務。

圖4 ResConv架構Fig.4 ResConv architecture

2.2 特征提取模塊ResConv

本文借鑒了ResNet 的殘差結構的思想,在局部特征提取層ResConv,在卷積、批歸一化、激活層之間加入跳躍式連接,在人臉識別任務中取得很好的結果。ResConv 與PointNet++的局部特征有很大不同。前者使用大小不同的卷積核感知多尺度信息并聚合多層次信息,后者只在同一層使用卷積核為1 來收集信息,這導致每個層的上下文信息較少[15]。ResConv用(3,1)卷積核和(1,1)的卷積核提取特征,同時用(1,1)的卷積核提取特征之后,把不同感受野的特征結合。當網絡的層數變深時,所提取的信息更抽象,學習到的特征更好。因此ResPoint使用了4個特征提取模塊,對不同尺度的信息進行特征融合,網絡學習能力更強。

2.3 損失函數

在分類任務中常用的損失函數是Softmax,其作用是將特征的線性組成映射到(0,1)內,使用交叉熵給出每個分類的概率,Softmax定義如公式[16]:

其中:分子是K個類別中第j個值;分母則表示所有值之和;Qj是指該樣本屬于第j類對應的概率值。交叉熵函數公式:

其中:yj表示樣本的真實標簽。Softmax 只在分類任務中有很好的表現,而對于不同類別之間的角度空間上沒有很好地區分開,所以本文使用了ArcFace 損失函數,在角度空間中最大化分類界限。ArcFace損失函數不僅對權重進行了正則化,還對特征進行了正則化。另外乘上一個scale 參數(s),使分類映射到一個更大的超球面上,分類更方便。ArcFace 公式如下:

圖5 損失函數對比Fig.5 Comparison of loss functions

3 實驗與結果分析

本文對人臉點云樣本的處理及使用深度學習框架進行訓練和測試的過程、結果進行比較分析。在人臉點云預處理之后,使用ResPoint 對點云數據進行分類,完成三維人臉識別任務。最后測試了在主成分分析(PCA)[17]、法向迭代最近點(Normal Iterative Closest Point,NICP)[18]、PointNet、PointNet++、RS-CNN 和ResPoint 網絡對三維點云人臉識別的準確性。

3.1 環境配置

本文使用Ubuntu 16.04,在Matlab2016 編寫實現了三維點云鼻尖點檢測以及三維插值等算法,并使用Anaconda 開源管理器編寫人臉識別的代碼,基于Pytorch1.4 框架,在Python3.7,CUDA10.1 上進行測試[14]。程序運行的硬件配置為Intel Core i7-8700K 8 GB,GTX1060 6 GB。

3.2 CASIA數據集

CASIA 三維人臉數據庫包括123 個對象,每個對象有37或38 個WRL 格式數據和對應的BMP 圖片。123 個對象都有姿態、光照、表情、遮擋多種變化。如表1,本文使用正臉、旋轉臉和小姿態視角作為實驗數據。三維點云數據預處理之后,點云數量不一致,為了恢復原始點云的規模,使用三維立方插值統一上采樣到26 000 個點;然后對點云使用隨機旋轉擴充數據集,生成123個對象,每個對象有80個不同姿態的點云數據。

表1 CASIA人臉數據庫姿態分布Tab.1 Pose distribution of CASIA face database

3.3 與其他方法對比實驗

在CASIA 數據集上,分別使用PCA 和NICP 傳統方法和PointNet、PointNet++、RS-CNN 等深度分類網絡進行三維人臉識別實驗,與本文的ResPoint 進行了對比分析。由于點云數據預處理后體量很大,基于深度學習的點云數據處理一般經過下采樣。本文統一使用最遠點采樣統一抽取1 024 個點作為輸入,使用標準的反向傳播和隨機梯度下降(Stochastic Gradient Descent,SGD)進行訓練。訓練集數據與驗證集數據按4∶1 進行劃分,學習率固定為0.001。本文訓練ResPoint 網絡使用參數與其他網絡一致,以下是對比實驗結果。

NICP 是基于迭代最近點(Iterative Closest Point,ICP)算法的改進,在進行匹配時,不僅在距離上接近,而且所處的法向量也要相同。人臉表面作為非剛體受表情影響較大,只獲得了87.2%的識別正確率。PCA用一種點云匹配算法把整個人臉編碼為向量,缺失了眼睛、鼻子、嘴等人臉的局部信息,其識別正確率為91.8%。PointNet 跟PCA 的思想類似,把人臉編碼為向量之后,用三個全連接實現分類,獲得了66.7%的識別正確率。PointNet++的采樣、分組、提取特征與CNN 的思想一致,對人臉點云特征有比較好的提取能力,獲得了92.1%的識別正確率。RS-CNN 設計了一種在點云上可以運用的卷積方式,從集合關系中學習推理3D 形狀,其識別正確率為92.9%。本文提出的ResPoint 網絡改進了局部特征提取,使用不同的感受野更好地提取人臉點云的特征,獲得了97.6%的識別正確率,高于多個深度學習網絡和傳統方法的識別率,與RS-CNN相比,ResPoint網絡識別正確率提高了5.06%。

圖6 ResPoint網絡與其他方法的實驗結果Fig.6 Experimental results of ResPoint network and other methods

總體來說,ResPoint 網絡在CASIA 上的錯誤率降低了66.20%,這些結果表明ResPoint 網絡在CASIA 數據集上的有效性。

本文還測試了在CASIA 數據集上缺失點云的魯棒性,并進行了分析,圖7是在三維人臉點云分別采樣1 024、512、256、128、64個點的結果。

圖7 不同采樣密度的點云Fig.7 Point clouds with different sampling densities

本文使用了不同的采樣點數作為三維人臉點云數據,作為輸入訓練了1 024 個點的模型。訓練過程中隨機丟失一定數量的點云,并與PointNet、PointNet++、PCA、RS-CNN 進行了比較。圖8 顯示ResPoint 在測試中表現更好,這表明ResPoint模型獲得的語義比PointNet++多尺度信息更多,顯示了模型很有競爭力。

圖8 稀疏點測試結果Fig.8 Test results of sparse points

4 結語

本文針對三維人臉點云識別任務中人臉多姿態、多角度以及三維點云缺失等問題,提出了一種新的網絡模型ResPoint。ResPoint 網絡使用了大小不同的卷積核和跳躍連接提取特征,提高了三維點云網絡特征提取能力;使用ArcFace 作為損失函數,提高了識別正確率;ResPoint 使用了ResConv 進行特征提取,增強了對人臉點云的特征提取能力。模型有效地提取了人臉的三維特征,可以進行三維點云的識別工作。在ResPoint 網絡中,點云數據經過采樣、分組后使用ResConv 進行特征提取,充分保證了特征信息不丟失[19]。實驗結果表明,ResPoint 網絡對人臉點云有較好的特征提取能力,人臉識別任務精度較高。同時使用ResPoint 網絡對不同采樣密度進行測試,均取得了較好的結果,表明ResPoint 有很強的魯棒性。

由于ResPoint 網絡還達不到實時性的要求,在接下來的研究工作中,對如何提升ResPoint 網絡的實時性仍需進一步探索。

猜你喜歡
鼻尖正確率特征提取
自體肋軟骨雕刻“新月形”帽狀移植物在鼻尖精細化的應用
個性化護理干預對提高住院患者留取痰標本正確率的影響
課程設置對大學生近視認知的影響
悠悠一夏
超 越
空間目標的ISAR成像及輪廓特征提取
基于Gazebo仿真環境的ORB特征提取與比對的研究
基于特征提取的繪本閱讀機器人設計方案
翻轉瘢痕瓣在鼻頭修復中的應用研究
基于MED—MOMEDA的風電齒輪箱復合故障特征提取研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合