歐琪 王劍雄 孫歌等
摘要:頭部姿勢估計是使用計算機(jī)視覺和模式識別技術(shù)來推斷數(shù)字圖像中人體頭部轉(zhuǎn)動方向的過程,文章提出的改進(jìn)后的基于殘差網(wǎng)絡(luò)的頭部姿態(tài)估計模型在人臉檢測模塊的VGG16網(wǎng)絡(luò)不同大小的卷積層后面加入了3個小檢測模塊,每個小檢測模塊都會進(jìn)行檢測和分類處理,間接實(shí)現(xiàn)了多尺度的人臉檢測;在歐拉角的計算過程中融入回歸和分類損失,利用交叉熵?fù)p失和均方差損失來計算模型估計的歐拉角,可以有效提高歐拉角的預(yù)測精度,從而提高頭部姿態(tài)估計的準(zhǔn)確率,使其在應(yīng)用中得到更加有效的結(jié)果。
關(guān)鍵詞:頭部姿態(tài)估計;歐拉角;殘差網(wǎng)絡(luò);交叉熵?fù)p失
中圖法分類號:TP391 文獻(xiàn)標(biāo)識碼:A
1 引言
近年來,計算機(jī)技術(shù)發(fā)展迅速,各種電子科技產(chǎn)品進(jìn)入人們的日常生活,如何合理開發(fā)和應(yīng)用計算機(jī)在各個領(lǐng)域的功能,成為當(dāng)前重要的研究工作之一。
在計算機(jī)領(lǐng)域,計算機(jī)視覺技術(shù)(Computer Vision,CV)發(fā)展迅猛且應(yīng)用廣泛,其中頭部姿態(tài)估計作為關(guān)鍵技術(shù)之一,也受到了廣泛的關(guān)注和研究[1] 。頭部姿勢可以傳達(dá)不同的信息,人的面部表情和頭部動作可以最直觀地表達(dá)一個人的想法或情緒。除了表達(dá)情緒和觀點(diǎn)外,面部方向、眼睛方向等也可以表達(dá)一個人當(dāng)前的注意力集中位置。
另外,頭部姿勢估計也在不同的生命科學(xué)領(lǐng)域中取得了重大突破,如醫(yī)療、無人駕駛或疲勞駕駛、身份識別等領(lǐng)域[2] 。本文提出的改進(jìn)的基于殘差網(wǎng)絡(luò)的頭部姿態(tài)估計模型,在牛津大學(xué)視覺幾何組(VGG)網(wǎng)絡(luò)上的人臉檢測模塊的不同大小的卷積層后面增加了3 個小檢測模塊,每個小檢測模塊將進(jìn)行檢測和分類處理。通過檢測不同大小的特征圖,間接實(shí)現(xiàn)多尺度人臉檢測;在歐拉角的計算過程中融入回歸和分類損失,利用交叉熵?fù)p失和均方差損失來計算模型估計的歐拉角,經(jīng)過實(shí)驗(yàn)結(jié)果分析,可以有效提高歐拉角的預(yù)測精度,從而提高頭部姿態(tài)估計的準(zhǔn)確率,使其在應(yīng)用中得到更加有效的結(jié)果。
2 VGG16 網(wǎng)絡(luò)與殘差網(wǎng)絡(luò)
2.1 VGG16 網(wǎng)絡(luò)
VGGNet 取得了2014 年ImageNet 圖像分類的好成績,其中VGG16 是VGGNet 中分類性能最好的網(wǎng)絡(luò)之一[3] 。為捕捉細(xì)節(jié)變化以獲得更好的非線性,減少參數(shù)數(shù)量,每個卷積層使用3×3 卷積核,使網(wǎng)絡(luò)結(jié)構(gòu)更加簡單,必要時3×3 卷積核的堆疊可以替代5×5 和7×7 等較大的卷積核。在5 個卷積段的尾部各連接一個最大池化層。這個池化層采用2×2 的池化核,可以減少卷積層參數(shù)誤差造成的估計平均值的偏移,更容易捕捉到圖像和梯度的變化,并有利于保留紋理等細(xì)節(jié)信息。
綜上所述,VGG16 網(wǎng)絡(luò)通過逐層抽象,能夠從低層到高層不斷學(xué)習(xí)特征,并且具有較強(qiáng)的非線性表達(dá)能力,能夠表達(dá)更豐富的特征,適合更復(fù)雜的輸入特征。另外,VGG16 網(wǎng)絡(luò)開始時有64 個3×3 的卷積核,隨著網(wǎng)絡(luò)的加深,卷積核的數(shù)量逐漸從64 個增加到128 個,256 個和512 個,從而使其具有更大的網(wǎng)絡(luò)寬度,這使網(wǎng)絡(luò)在每一層都能學(xué)習(xí)到更豐富的特征。
2.2 殘差網(wǎng)絡(luò)
殘差網(wǎng)絡(luò)(Residual Network,ResNet)[4] 是微軟亞洲研究院研究員何凱明等在2015 年繼AlexNet,GoogleNet,VGG 3 個經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)之后提出的具有影響力的網(wǎng)絡(luò)模型。
在深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程中,梯度分散或爆炸的問題使得模型訓(xùn)練難以收斂,但標(biāo)準(zhǔn)初始化和中間層正規(guī)化方法在一定程度上有效控制了這一問題,使深度神經(jīng)網(wǎng)絡(luò)能夠收斂。在模型訓(xùn)練過程中,即使在相同的訓(xùn)練水平下,退化網(wǎng)絡(luò)的錯誤率也要高于略淺層的網(wǎng)絡(luò)。隨著網(wǎng)絡(luò)深度的增加,模型會出現(xiàn)退化現(xiàn)象,這不是過擬合造成的,而是冗余網(wǎng)絡(luò)層的學(xué)習(xí)參數(shù)不是恒等映射的參數(shù)造成的。
通過對現(xiàn)有深度神經(jīng)網(wǎng)絡(luò)退化問題的了解,解決網(wǎng)絡(luò)模型不退化問題的根本方法是恒等映射。殘差網(wǎng)絡(luò)很好地解決了深度神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)退化問題,取得了較好的結(jié)果。本文的頭部姿態(tài)估計框架是基于ResNet50 來設(shè)計的,一共有50 層,采用了殘差結(jié)構(gòu),將檢測到的人臉裁剪下來,經(jīng)過一系列的縮放裁剪調(diào)整尺寸,放入殘差網(wǎng)絡(luò),最后網(wǎng)絡(luò)會輸入3 個方向的歐拉角,全程為端到端的實(shí)現(xiàn),十分便捷。
3 改進(jìn)的頭部姿態(tài)估計模型
3.1 人臉檢測
本文提出的人臉檢測模塊是基于VGG16 網(wǎng)絡(luò)進(jìn)行修改的,和多任務(wù)級聯(lián)網(wǎng)絡(luò)(Multi?task CascadedConvolutional Networks,MTCNN) 方法不同,本文只使用一張大小的圖像作為輸入,不需要分別對不同尺度的圖像進(jìn)行預(yù)測。具體實(shí)現(xiàn)方法是在VGG 網(wǎng)絡(luò)的不同大小的卷積層后面增加3 個小檢測模塊(M1,M2,M3),每個小檢測模塊會進(jìn)行一次檢測和分類。通過檢測不同大小的特征圖,間接實(shí)現(xiàn)多尺度人臉檢測。
圖1 為人臉檢測框架的示意圖。
根據(jù)圖1 所示,可以看到每個分支都會有1 個檢測模塊,為了獲得更大的感受,首先使用多重3×3 卷積代替7×7 卷積可以增加網(wǎng)絡(luò)深度,在一定條件下可以有效提高神經(jīng)網(wǎng)絡(luò)的效果。然后融合2 條路徑的特征圖,完成分類任務(wù)和回歸任務(wù)。最后,該模塊連接到VGG16 的3 個不同的卷積層,以對應(yīng)不同大小的特征圖,從而有效提高網(wǎng)絡(luò)模型效果。
3.2 歐拉角
在計算機(jī)視覺中,頭部姿態(tài)估計可以解釋為人體頭部相對于相機(jī)的方向。人體頭部的姿勢受限于3個自由度,分別為俯仰角、旋轉(zhuǎn)角和偏轉(zhuǎn)角,它們統(tǒng)稱為歐拉角[5] ,如圖2 所示。
傳統(tǒng)的頭部姿態(tài)估計算法首先檢測2D 人臉的關(guān)鍵點(diǎn),其次構(gòu)建3D 人臉匹配模型以獲得更全面的信息,然后計算3D 點(diǎn)與2D 點(diǎn)之間的變換關(guān)系,最后通過矩陣相關(guān)運(yùn)算獲得關(guān)鍵值歐拉角的角度。但是,傳統(tǒng)的頭部姿勢估計方法對面部關(guān)鍵點(diǎn)提取的準(zhǔn)確性要求較高,因此不適用于某些場景中的小臉,如教室場景下的人臉。
3.3 融入回歸和分類損失
本文提出的頭部姿態(tài)估計框架是基于ResNet50來設(shè)計的,一共有50 層,采用了殘差結(jié)構(gòu)。上文提出的人臉模塊得到的數(shù)據(jù)文件已經(jīng)保存了每個人臉的相關(guān)坐標(biāo),姿態(tài)估計模塊會依次讀取數(shù)據(jù)文件的每一列,通過縮放和裁剪來切割人臉區(qū)域,調(diào)整人臉的大小,進(jìn)入下一層網(wǎng)絡(luò)。最后,網(wǎng)絡(luò)會計算并輸出3 個方向的歐拉角。整個過程是端到端的實(shí)現(xiàn), 非常便捷。
本文建立的改進(jìn)后的頭部姿態(tài)估計模型為每個歐拉角設(shè)置了2 個損失函數(shù),以改進(jìn)歐拉角的計算。
首先可以根據(jù)角度區(qū)間對頭部的歐拉角進(jìn)行分類。
其次將分類結(jié)果轉(zhuǎn)換成度數(shù),將實(shí)際度數(shù)與標(biāo)注度數(shù)進(jìn)行比較,計算回歸損失。最后將回歸損失和分類損失相結(jié)合,得到最終損失。計算方法為:
其中,n 為批處理樣本數(shù),y 為真實(shí)值,y′為預(yù)測值。
當(dāng)模型開始訓(xùn)練時,會對一些數(shù)據(jù)進(jìn)行數(shù)據(jù)過濾,然后選取不同角度的圖片作為訓(xùn)練數(shù)據(jù)集。結(jié)合本文提出的回歸損失和分類損失相結(jié)合的計算方法,可以有效提高歐拉角的預(yù)測精度。
本文提出的改進(jìn)后的頭部姿態(tài)估計框架基于pointing04 數(shù)據(jù)集上所訓(xùn)練出來的模型,在分析人體頭部姿態(tài)估計的歐拉角中具有良好的性能,同時在其他的測試集上有著可擴(kuò)展性和魯棒性。實(shí)驗(yàn)結(jié)果如圖3 所示,在控制臺輸出了3 個方向的歐拉角。
4 結(jié)束語
頭部姿態(tài)估計在計算機(jī)視覺領(lǐng)域有著廣闊的應(yīng)用前景。例如,在一些輔助駕駛系統(tǒng)中,需要估計駕駛員的頭部姿態(tài)來確定駕駛員是否有危險的駕駛行為,或者在一些在線教學(xué)系統(tǒng)中,以同樣的方式來確定學(xué)生的學(xué)習(xí)狀態(tài),并且它在人臉矯正中起著重要的作用。在VR 虛擬現(xiàn)實(shí)等相關(guān)研究中,根據(jù)頭部姿態(tài)估計可以判斷出體驗(yàn)者的意圖從而有更好的體驗(yàn)效果。本文提出的改進(jìn)后的基于殘差網(wǎng)絡(luò)的頭部姿態(tài)估計模型在歐拉角的計算過程中融入回歸和分類損失,利用交叉熵?fù)p失和均方差損失來計算模型估計的歐拉角,經(jīng)過實(shí)驗(yàn)結(jié)果分析,可以有效提高歐拉角的預(yù)測精度,從而提高頭部姿態(tài)估計的準(zhǔn)確率,使其在應(yīng)用中得到更加有效的結(jié)果。
參考文獻(xiàn):
[1] 王鐵勝.計算機(jī)視覺技術(shù)的發(fā)展及應(yīng)用[J].信息系統(tǒng)工程,2022(4):63?66.
[2] 柯澤冉.三維人臉重建及其在頭部姿態(tài)估計中的應(yīng)用[D].武漢:華中師范大學(xué),2021.
[3] 齊永鋒,馬中玉.基于深度殘差網(wǎng)絡(luò)的多損失頭部姿態(tài)估計[J].計算機(jī)工程,2020,46(12):247?253.
[4] HE K M,ZHANG X Y,REN S Q.Deep Residual Learning forImage Recognition[C]∥2016 IEEE Conference on ComputerVision and Pattern Recognition (CVPR),2016:27?30.
[5] 劉成攀,吳斌,楊壯.基于聯(lián)合損失和恒等映射的動態(tài)人臉識別[J].傳感器與微系統(tǒng),2021,40(9):153?156.
作者簡介:
歐琪(1998—),碩士,研究方向:人工智能。
王劍雄(1975—),碩士,教授,研究方向:人工智能( 通信作者)。