肖仕華,桑 楠,王旭鵬
(電子科技大學(xué)信息與軟件工程學(xué)院,成都610000)
(?通信作者電子郵箱xsh115@qq.com)
頭部姿態(tài)信息是研究人類行為和注意力的重要指標。在人際交往中,人們通過改變頭部姿態(tài)傳達信息,例如同意、理解、反對、迷惑等。頭部姿態(tài)估計可以為許多人臉相關(guān)任務(wù)提供關(guān)鍵信息,比如人臉識別、面部表情識別、駕駛姿勢預(yù)測等,因此,頭部姿態(tài)估計成為了計算機視覺和模式識別領(lǐng)域的一個熱門的研究方向[1-4]。
在計算機視覺領(lǐng)域,頭部姿態(tài)估計[5]是指計算機通過算法對輸入圖片或者視頻進行分析和預(yù)測,從而確定人物的頭部在三維空間中的姿態(tài)信息,即俯仰角(pitch)、側(cè)傾角(roll)和偏航角(yaw)??煽康念^部姿態(tài)估計算法具有以下特點:對大尺度的姿態(tài)變化保持魯棒,能夠有效地處理遮擋,實時性較高,資源消耗低等[6]。
現(xiàn)有算法主要采用RGB 圖像進行頭部姿態(tài)估計。其中,Hsu 等[1]提出采用RGB 作為輸入的深度網(wǎng)絡(luò),網(wǎng)絡(luò)針對四元素和歐拉角的不同輸出方式給出了聯(lián)合的多元回歸損失函數(shù)。Patacchiola 等[2]研究了自適應(yīng)梯度法和Droupout 法相結(jié)合的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)模型,該模型直接為輸入頭部RGB 圖像建立姿態(tài)估計回歸模型。Ruiz 等[3]把回歸問題轉(zhuǎn)化為分類與回歸相結(jié)合的問題處理,訓(xùn)練了一個深度CNN 直接從圖像強度預(yù)測頭部姿態(tài)。他們首先用分類的結(jié)果去映射一個可以回歸的區(qū)間范圍,再利用multi-loss 來進行回歸預(yù)測。Ahn 等[7]提出了一種利用RGB 估計頭部姿態(tài)的高效CNN 模型,并采用基于粒子濾波的后處理方法提高了模型在視頻應(yīng)用中的穩(wěn)定性。Drouard 等[8]提出了方向梯度直方圖(Histogram of Oriented Gradients,HOG)特征和高斯局部線性映射模型相結(jié)合的方法來進行頭部姿態(tài)估計,將人臉描述符映射到頭部姿態(tài)空間,從而預(yù)測頭部旋轉(zhuǎn)角度。然而,這類估計方法往往會受到光照變化的影響,很難適用于夜間光線較差或白天光照持續(xù)變化等環(huán)境[9]。
為此,基于點云數(shù)據(jù)描述的方法被提出。點云數(shù)據(jù)描述的是場景的三維幾何結(jié)構(gòu)信息,不受光照變化的影響,能夠有效地應(yīng)對RGB 彩色圖像存在的問題。Fanelli等[6]考慮到隨機回歸森林處理大型訓(xùn)練數(shù)據(jù)的能力,通過該方法來估計鼻尖的三維坐標和頭部距離圖像的旋轉(zhuǎn)角度,從而實現(xiàn)姿態(tài)預(yù)測。Padeleris 等[10]根據(jù)相機獲取的深度圖重建頭部的三維幾何模型,然后使用粒子群優(yōu)化算法進行頭部姿態(tài)估計。Papazov等[11]引入了一種新的三角曲面描述符來編碼三維曲面的形狀,訓(xùn)練階段合成頭部模型,通過對比輸入深度圖與頭部模型的描述符進行頭部姿態(tài)估計。隨著深度學(xué)習(xí)在計算機視覺領(lǐng)域取得巨大的成功,研究人員開始采用基于深度學(xué)習(xí)的方法解決頭部姿態(tài)估計問題。Venturelli 等[12]采用深度圖作為輸入,將CNN 用于頭部姿態(tài)估計。Chen 等[13]提出CNN 與隨機森林相結(jié)合的方式,采用CNN 來獲取關(guān)節(jié)信息,再通過隨機森林將之細化,進而實現(xiàn)姿態(tài)估計。但是,傳統(tǒng)的深度學(xué)習(xí)網(wǎng)絡(luò)架構(gòu)只能處理高度規(guī)則的數(shù)據(jù)格式,比如二維圖片或三維網(wǎng)格,而點云數(shù)據(jù)是點的集合,通常被轉(zhuǎn)化為多視角下的深度圖或三維網(wǎng)格,這導(dǎo)致了數(shù)據(jù)的冗余,計算復(fù)雜度高,無法滿足實時性的要求[14-15]。
針對上述問題,本文直接采用點云數(shù)據(jù)作為輸入來進行頭部姿態(tài)估計,提出了一種新的深度學(xué)習(xí)框架——HPENet。主要思想是,將頭部姿態(tài)估計抽象為回歸問題,對于輸入的無序排列和非均勻分布的點云,通過深度網(wǎng)絡(luò)提取魯棒的頭部特征,用于頭部姿態(tài)的估計。為了解決點云數(shù)據(jù)存在的非均勻采樣和無序排列問題,HPENet分別引入了分組采樣層和特征提取層,從而提高三維頭部姿態(tài)估計特征提取的準確性。HPENet能夠直接處理點云數(shù)據(jù),結(jié)構(gòu)簡單,準確度高,更能適用于快速、可靠的人臉分析任務(wù)。
點云數(shù)據(jù)是三維幾何信息的一種表示方式,是由一系列的點組成的集合{ pi=(xi,yi,zi)|i = 1,2,…,N }。其中:pi代表點云中的元素;(xi,yi,zi)為其三維空間坐標;N 表示點的數(shù)目。此外,點云也可以用一個N × 3 維的矩陣來表示。與三維網(wǎng)格(mesh)相比,點云數(shù)據(jù)結(jié)構(gòu)簡單,對幾何信息的表示統(tǒng)一,更適用于深度網(wǎng)絡(luò)的學(xué)習(xí)[14-15]。
傳統(tǒng)的深度學(xué)習(xí)以規(guī)則的數(shù)據(jù)為輸入,比如二維圖像網(wǎng)格或三維體素,能夠?qū)崿F(xiàn)網(wǎng)絡(luò)權(quán)重共享,進行卷積操作。卷積神經(jīng)網(wǎng)絡(luò)在各種任務(wù)中成功的關(guān)鍵在于,卷積算子能夠有效地利用規(guī)則數(shù)據(jù)的空間局部相關(guān)性[16]。
而點云數(shù)據(jù)是一系列無序點的集合(見1.1 節(jié)),無法直接應(yīng)用卷積操作;同時,點云采樣密度不均勻(見1.2 節(jié))增加了將深度學(xué)習(xí)應(yīng)用于點云數(shù)據(jù)的難度。因此,需要解決將深度學(xué)習(xí)應(yīng)用于點云存在的問題,以提高頭部姿態(tài)估計的準確性。
點的順序不會影響點云在空間中的整體幾何表示,相同的點云可以由兩個不同的矩陣表示,如圖1(a)所示。因此,深度網(wǎng)絡(luò)架構(gòu)提取的特征需要對點云的無序性保持魯棒,即對于點云的不同矩陣表示A 和B,在特征提取時需保證提取的特征是相同的,如圖1(b)所示。
圖1 點云的無序性Fig. 1 Randomness of point cloud
點云非均勻采樣密度是指在數(shù)據(jù)采集過程中,由透視變換、徑向密度變化、目標運動等引起的點云數(shù)據(jù)的不規(guī)則分布。在這種非均勻的采樣密度下,很難保證點集特征學(xué)習(xí)的魯棒性。例如,針對稀疏點云區(qū)域訓(xùn)練的模型可能無法識別到密集區(qū)域更加細微的特征。
因此,本文方法應(yīng)該能適用于不同密度下的特征提取,即對點云密集區(qū)域進行特征提取時,網(wǎng)絡(luò)應(yīng)該盡可能小范圍地檢查點集,以捕獲密集采樣區(qū)域中最細微的特征。然而,對于稀疏區(qū)域應(yīng)該禁止這種檢查,因為此時區(qū)域內(nèi)的點數(shù)過少,容易導(dǎo)致采樣不足,此時,應(yīng)該在更大的區(qū)域內(nèi)尋找更大的尺度提取特征。
本文提出了一種新的基于深度學(xué)習(xí)的三維點云頭部姿態(tài)估計算法——HPENet。HPENet 以點云數(shù)據(jù)為輸入,輸出頭部的姿態(tài),用歐拉角(Euler angles)表示,包括俯仰角、側(cè)傾角和偏航角。
如圖2 所示,方法的整體結(jié)構(gòu)由數(shù)據(jù)預(yù)處理和HPENet 網(wǎng)絡(luò)構(gòu)成。數(shù)據(jù)預(yù)處理給出了頭部三維點云數(shù)據(jù)的生成方法(見2.2 節(jié))。HPENet 網(wǎng)絡(luò)實現(xiàn)了對頭部點云數(shù)據(jù)的姿態(tài)估計,其中特征提取模塊采用PointNet++[15]網(wǎng)絡(luò)模型。PointNet++直接處理點云數(shù)據(jù),并被成功應(yīng)用于目標分類、檢測和場景分割。
HPENet 網(wǎng)絡(luò)直接以點云數(shù)據(jù)作為輸入,其維度為B ×N × C,其中,B 是輸入batch 的大小,N 為輸入點云的點數(shù),C為點云的通道數(shù)。本文只采用點云的三維空間坐標作為輸入,即C 的值為3。網(wǎng)絡(luò)輸出的是預(yù)測的頭部姿態(tài)角度,其維度為B × 3。
HPENet 網(wǎng)絡(luò)主要由分組采樣層(見2.3 節(jié))、特征提取層(見2.4節(jié))和全連接層三部分組成。
分組采樣層主要實現(xiàn)對點集進行特征點采樣和分組,兩個分組采樣層的特征點數(shù)目選取分別為512和128,區(qū)域半徑分別為0.2 和0.4。特征提取層主要實現(xiàn)對分組后的點云進行特征提取。該層依賴于特征提取對稱函數(shù),該函數(shù)由3 個核為1× 1 的卷積層和一個最大池化層組成。PHENet 遞歸調(diào)用了三次該特征提取對稱函數(shù),每次卷積層輸出通道數(shù)分別為(64,64,128)、(128,128,256)和(256,512,1 024)。全連接層主要實現(xiàn)對輸出的特征向量進一步處理,以預(yù)測頭部姿態(tài)。其維度分別為512、256 和3。同時,為了防止過擬合,加入了Dropout操作(σ=0.5)。
由于頭部姿態(tài)估計可看作一個多元回歸問題,因此網(wǎng)絡(luò)損失函數(shù)采用均方誤差(Mean Square Error,MSE):
圖2 頭部姿態(tài)估計整體框架Fig. 2 Overall framework of head pose estimation
深度傳感器采集的是場景在某一視角下的三維幾何信息,以深度圖的形式保存。因此,需要對傳感器采集的數(shù)據(jù)進行處理,以獲得三維點云數(shù)據(jù)[17]。
本文遵從文獻[9]的做法,假定經(jīng)過人臉檢測已經(jīng)獲取到頭部中心點(xH,yH),則頭部的深度圖片可由中心點為(xH,yH)、寬和高分別為w、h 的矩形框提取。w、h 的計算公式如下:
其中:fx、fy是傳感器的內(nèi)部參數(shù),分別為水平和垂直焦距;Rx、Ry表示人臉的平均寬度和高度(其值均設(shè)為300 mm);D為頭部中心(xH,yH)的深度值。
由頭部的深度圖片生成相應(yīng)的三維點云結(jié)構(gòu),就是將圖像中的任意一點(u,v)從圖像坐標系映射到世界坐標系,如下所示:
其中:(x,y,z)表示世界坐標系下的坐標值;(u0,v0)是傳感器的內(nèi)部參數(shù),分別表示圖像坐標系在x和y方向相對于世界坐標系的偏移量;d為點(u,v)處的深度值。
此外,神經(jīng)網(wǎng)絡(luò)要求輸入數(shù)據(jù)的維度保持一致,為了將生成的頭部三維點云數(shù)據(jù)用于深度網(wǎng)絡(luò)架構(gòu),本文采用最遠點采樣算法處理生成的三維點云,使得采樣后的點數(shù)相同。同時,為了加快網(wǎng)絡(luò)訓(xùn)練的收斂、減少運算時間,分別對點云數(shù)據(jù)的三個通道進行標準化,使得數(shù)據(jù)的均值為0、方差為1。
數(shù)據(jù)采用SPSS 22.0軟件進行統(tǒng)計處理。首先進行正態(tài)分布檢驗,符合正態(tài)分布的計量資料以x±s表示,多組間比較采用方差分析,兩組間比較采用t檢驗。P<0.05為差異有統(tǒng)計學(xué)意義。
如1.2 節(jié)所述,在對點云數(shù)據(jù)進行特征提取時,網(wǎng)絡(luò)需要有效地處理非均勻采樣密度的問題,以提高網(wǎng)絡(luò)學(xué)習(xí)的特征的鑒別力。本文在HPENet深度網(wǎng)絡(luò)中引入分組采樣層,將點云數(shù)據(jù)進行分層表示,用于后續(xù)點云由整體到局部的特征描述。
分組采樣層由下采樣和分組操作組成,下采樣提取點云數(shù)據(jù)中的特征點,分組操作借助關(guān)鍵點將點云數(shù)據(jù)進行分組表示。HPENet通過遞歸調(diào)用分組采樣層,實現(xiàn)了點云數(shù)據(jù)的分層表示。
下采樣采用最遠點采樣算法[18]。對于一個給定的點集{ p1,p2,…,pn},從中隨機選取一點pi,找到距離該點最遠的一個點pij放入新的集合。迭代上述過程,便能獲指定數(shù)目的采樣點集{ pi1,pi2,…,pij},并將該點集中的點作為當前點云數(shù)據(jù)的特征點。與隨機采樣相比,最遠點采樣算法獲得的點能夠更好地覆蓋整個點集[15]。
分組操作以提取的特征點{ pi1,pi2,…,pij}為球心、按照特定的半徑將不同區(qū)域的點進行分組,獲得一個新的分組集合{g1,g2,…,gj},gj表示由pij為球心特定半徑內(nèi)的所有點的集合,將該集合用于后續(xù)特征提取(見2.4節(jié))。
迭代上述下采樣與分組操作,實現(xiàn)了點云的分層表示,如圖3 所示。分組采樣層能夠有效地解決點云數(shù)據(jù)存在的非均勻采樣問題,使得網(wǎng)絡(luò)能夠?qū)W習(xí)到點云整體到局部的特征。
本節(jié)首先給出了特征提取對稱函數(shù)的公式及定理描述,通過該對稱函數(shù)解決點云數(shù)據(jù)存在的無序性問題(見1.1節(jié))。然后,對于2.3 節(jié)提出的分組采樣,后續(xù)給出了詳細的分層特征提取說明。
定義離散空間χ =(P,d)∈?N,其中點集P ??N,d 是距離度量。對于給定一個無序點集{ pi∈?N|i = 1,2,…,n },通過分組采樣獲得新的分組集合{g1,g2,…,gj},定義一組函數(shù)f:χ →?將一組點映射到向量:
定 理1 假 定f:χ →? 是 一 個 對 于Hausdorff 距離dH(?,?)的連續(xù)函數(shù),?ε >0,存在一個連續(xù)μ和一個對稱函數(shù)υ °max,使得?P ∈χ都有:
其中:x1,x2,…,xn是任意順序點集P 的完整點云序列;υ 是一個連續(xù)函數(shù);max 是一個向量最大值操作,即輸入n 個向量并返回一個元素最大值的新向量;符號“°”是映射乘法,也就是應(yīng)用了映射max后,再應(yīng)用映射υ。
上述定理1 表明,如果最大池層有足夠多的神經(jīng)元,f 可以被該網(wǎng)絡(luò)任意近似,即式(4)中M 足夠大。通過這種近似,無序的點云能夠被一個一般函數(shù)表示,從而解決點集的無序性問題。
此外,承接2.3 節(jié)提到特征分層提取。對分組后的點云數(shù)據(jù),本文通過對稱函數(shù)中的多層感知機進行特征提取,提取示意圖如圖3 所示。點集的特征由兩個特征向量組成:特征向量a 由Li層所有點特征提取匯總而成,該層所有點特征由Li-1層中每個分組特征獲得;特征向量b是直接處理Li-1層區(qū)域內(nèi)所有原始點而獲得的特征。對于點集稀疏區(qū)域,每個分組內(nèi)包含較少的點,容易導(dǎo)致采樣不足,使得第一個向量不如第二個向量可靠。因此,在訓(xùn)練時第二個向量學(xué)習(xí)到的權(quán)重會更高。另一方面,當對點集密集區(qū)域提取特征時,在分組內(nèi)提取特征具有更高的檢測分辨率,能夠獲取到點云更精細的特征信息,所以在這種情況下,第二向量學(xué)習(xí)到的權(quán)重會更高。訓(xùn)練時,網(wǎng)絡(luò)按上述方式不斷學(xué)習(xí)、調(diào)節(jié)權(quán)重,找到適合不同點云密度下提取特征的最優(yōu)權(quán)重,從而有效地解決在非均勻密度下采樣的問題。
圖3 分層特征提取示意圖Fig. 3 Schematic diagram of feature extraction of different layers
為了驗證本文提出的三維點云頭部姿態(tài)估計網(wǎng)絡(luò)HPENet的有效性,進行了一系列的實驗。本章首先介紹了用于實驗的公共數(shù)據(jù)集Biwi Kinect Head Pose[6](見3.1 節(jié));然后,測試了HPENet 在頭部姿態(tài)估計上的準確性,驗證了不同密度下的點云輸入對姿態(tài)預(yù)測魯棒性的影響,還測試了方法的時間消耗(見3.2節(jié))。
為了定量地評價頭部姿態(tài)估計的準確性,本文遵循文獻[9]的做法,采用評價指標S如下:
其中:α 為所有真實值與預(yù)測值之差的絕對值的均值;β 為所有真實值與預(yù)測值之差的絕對值的標準差。
在超參數(shù)的選取上,batch 的大小為32,輸入點云的點數(shù)為4 096,學(xué)習(xí)率為0.001,衰減率為0.9,衰減步長為20 000。實驗在Ubuntu16.04 操作系統(tǒng)下運行,CPU 為Intel Core-i7(3.40 GHz),內(nèi) 存 為16 GB,顯 卡 為NVIDIA GTX1080TI 11 GB。
Biwi Kinect Head Pose 數(shù)據(jù)集[6]采用Kinect 傳感器采集,具有15 000 多張頭部姿態(tài)圖像,包括深度圖和相應(yīng)的RGB圖,分辨率均為640×480。數(shù)據(jù)集記錄了20 個不同人物(6 名女性和14 名男性)的24 個序列,其中一些人被記錄了兩次。因為深度圖像的質(zhì)量較低,頭發(fā)、眼鏡等對數(shù)據(jù)造成了一定干擾,使之成為一個具有挑戰(zhàn)性的數(shù)據(jù)集。數(shù)據(jù)集給出了頭部姿態(tài)的真實值,并提供了人物的頭部中心位置和傳感器的內(nèi)置參數(shù)。為了與其他優(yōu)秀算法作對比,并保證對比結(jié)果的有效性,本文實驗遵循文獻[9]的做法,將數(shù)據(jù)集分為訓(xùn)練集和測試集。其中:測試集包括序列11 和12,約1 000 張圖片;訓(xùn)練集包含剩余的22個序列,約14 000張圖片。
從圖4 所示的損失函數(shù)訓(xùn)練變化曲線可看出:在訓(xùn)練開始階段損失值下降幅度很大,說明學(xué)習(xí)率合適梯度下降過程;在學(xué)習(xí)到一定階段后,損失曲線逐漸趨于平穩(wěn),說明網(wǎng)絡(luò)逐漸收斂。
圖4 損失函數(shù)訓(xùn)練變化曲線Fig. 4 Curve of loss function
圖5 給出了本文方法在測試時,每幀圖片的俯仰角、側(cè)傾角和偏航角的真實值和預(yù)測值的變化曲線。從圖5 可以看出,預(yù)測的頭部姿態(tài)角度和數(shù)據(jù)集提供的真實值極其接近,即本文方法能夠精確預(yù)測頭部姿態(tài)角度。此外,當曲線中的角度值增大時(如圖5(a)角度大于40°),預(yù)測的誤差略有增加。這是因為當頭部偏轉(zhuǎn)或俯仰角度增大時,所遮擋的頭部區(qū)域變大,該區(qū)域具有的特征變少,從而使得預(yù)測更加困難。
表1 列出了本文方法和其他優(yōu)秀算法在公共數(shù)據(jù)集Biwi Kinect Head Pose 上實驗的結(jié)果對比。表1中給出了方法的數(shù)據(jù)類型、俯仰角、側(cè)傾角和偏航角的性能指標以及平均性能,其中部分方法只提供了三個角度的誤差的均值。從表1 可以看出,與其他方法相比,本文方法具有更小的誤差,俯仰角、側(cè)傾角和偏航角的誤差均值分別為2.3°、1.5°、2.4°。同時,HPENet 的平均標準差為1.6°,小于其他方法,說明該方法預(yù)測結(jié)果趨于準確值且波動更小。
表2 列出了在1 024、2 048 和4 096 三種不同輸入點數(shù)下進行頭部姿態(tài)估計的實驗結(jié)果。從平均值來看,三種輸入點數(shù),平均的誤差值分別為2.4°、2.2°、2.1°,三者差異極小,即輸入點的數(shù)目變化對本文方法在頭部姿態(tài)估計上的結(jié)果影響不大。點數(shù)越多所包含幾何信息更多,點云分布更稠密。這也說明了本文方法在非均勻采樣密度下進行特征提取,具有較好的魯棒性。
圖5 姿態(tài)角度預(yù)測示意圖Fig. 5 Schematic diagram of prediction of pose angles
表1 不同方法在Biwi數(shù)據(jù)集上的誤差比較 單位:(°)Tab. 1 Comparison of errors achieved by different methods on Biwi dataset unit:(°)
表2 HPENet在Biwi數(shù)據(jù)集上輸入點數(shù)對誤差的影響單位:(°)Tab. 2 Influence of different number of input points on errors achieved by HPENet on Biwi dataset unit:(°)
為了更加直觀地體現(xiàn)本文方法的性能,給出了測試中兩個姿態(tài)角度較大的姿態(tài)預(yù)測示例,如圖6 所示。圖6(a)是測試輸入的截取后的頭部深度圖片,圖6(b)是頭部點云真實姿態(tài)圖,圖6(c)是頭部點云預(yù)測姿態(tài)圖。為了便于觀察姿態(tài)角度,圖6(b)、(c)中在鼻尖用圓柱體標出。由于角度較大,面部遮擋更加嚴重,使得預(yù)測更加困難。但從圖6 中可以看出真實姿態(tài)角度和網(wǎng)絡(luò)預(yù)測的姿態(tài)角度差距不大,說明HPENet對遮擋、姿態(tài)角度較大的圖片依然具有魯棒性。
圖6 姿態(tài)預(yù)測示例Fig. 6 Examples of head pose prediction
表3 列出了幾種方法在時間消耗上的比較。從表3 中可以看出,在同種數(shù)據(jù)集和實驗環(huán)境下,本文方法的時間消耗為8 ms/frame,遠低于其他對比方法。這是由于本文提出的網(wǎng)絡(luò)結(jié)構(gòu)相比于其他采用RGB 或深度圖作為輸入數(shù)據(jù)的網(wǎng)絡(luò)更加簡單;同時,本文方法直接處理點云數(shù)據(jù),避免了將點云轉(zhuǎn)化為多視角下的深度圖或三維網(wǎng)格所帶來的數(shù)據(jù)冗余和計算復(fù)雜度高的問題。
表3 時間消耗比較 單位:msTab. 3 Comparison of time cost unit:ms
為了解決頭部姿態(tài)估計問題,本文提出了一種新的深度學(xué)習(xí)網(wǎng)絡(luò)架構(gòu)HPENet,能夠直接處理點云數(shù)據(jù)。在公共數(shù)據(jù)集Biwi Kinect Head Pose 上的實驗結(jié)果表明,相對于目前大多采用傳統(tǒng)RGB 圖和深度圖片的方法,HPENet 具有更高的準確性。同時,本文方法結(jié)構(gòu)簡單、時間消耗低,能夠應(yīng)用在許多人臉相關(guān)任務(wù)中。后期我們將對網(wǎng)絡(luò)進一步優(yōu)化,以獲得更好的效果,并應(yīng)用于三維人臉檢測、識別等任務(wù)中。