人臉關鍵點定位算法在實際應用中的經驗總結

人臉關鍵點定位算法(Facial landmark detection)是指在2D人臉圖片上定位出一些具有特殊語意信息的點,例如鼻尖、眉毛、嘴角等,如圖1所示。人臉關鍵點定位算法並不是一項單一的任務,而是作爲衆多高級人臉分析任務的基礎,這些高級人臉任務主要有人臉識別、3D人臉重建、人臉表情遷移、人臉美化等。因此,人臉關鍵點定位的精度將於嚴重影響後續任務的精度。

圖1 人臉關鍵點定位圖片

目前,人臉關鍵點定位模型主要可以分爲基於手工特徵的傳統方法和基於深度學習的迴歸方法。傳統方法主要有AAMs (active appearance models)、CLMs (constrained local models)、ESR (explicit shape regression)、SDM (supervised descent method)等,這些方法主要是通過手動設計的特徵去擬合出人臉關鍵點的位置。近年來,隨着以卷積神經網絡 (Convolutional Neural Networks, CNNs)和循環神經網絡 (Recurrent Neural Networks, RNNs) 爲代表的深度學習的方法快速發展,人臉關鍵點定位算法也迅速轉向基於深度學習的方法。由於深度神經網絡強大的特徵提取能力,基於深度學習的人臉關鍵點定位算法在測評指標如NME (Normal Mean Error) 和FR (Failure Rate)上迅速超越傳統方法。

一般來說,基於深度學習的人臉關鍵點定位又可以分爲基於座標迴歸的方法和基於熱圖迴歸的方法。總的來說,基於座標迴歸的方法速度快、計算量小,但是精度不如基於熱圖迴歸的方法高;然而,基於熱圖迴歸的方法更側重於結果的精度,但是模型體積較大、速度較慢。對於實際應用場景來說,按照任務要求的不同(如速度、精度以及運算效率等),選擇不同類型的方法。接下來,文章將先對人臉關鍵點定位算法在實際使用中所面臨的問題進行簡要分析,然後按照不同類型的方法,對該領域的實踐經驗進行介紹。

一、 人臉關鍵點定位算法所面臨的一些挑戰

1.1輸入圖片具有很強的特異性

在實際使用場景中,如人臉美妝、人臉識別等,模型輸入的圖片本身具有極強的特異性,例如極端的光照環境、誇張的表情、大角度的姿態、圖片抖動所產生的模糊等。如圖2所示,對這些圖片進行精確地人臉關鍵點定位非常困難。

圖2 一些極端姿態的人臉圖片

1.2訓練數據的不平衡

目前,公開的人臉關鍵點定位數據庫都存在數據不平衡這一問題,既:正臉的圖片的總數要遠多於側臉的圖片總數,而大角度側臉的訓練圖片更少。使用這種數據集訓練出的人臉關鍵點定位算法,在評測數據集上可以獲得非常高得精度,但是在實際使用中,有可能因爲頭部的輕微偏轉,導致模型的精度嚴重下降。

1.3模型運行效率

目前,人臉關鍵點定位任務在學術界和工業界所最求的目標並不完全相同。在學術界中,科研人員更加關注模型最終輸出的結果在各種評測集上是否達到了最優,其次纔是模型的參數量和執行效率等問題;然而,在工業界中,工程師們在一定的誤差範圍內,追求模型更小的體積以及更快的運行效率。這一問題致使高精度的人臉關鍵點定位模型很難直接應用到實際的任務之中。

二、 人臉關鍵點定位算法經驗總結:

我們這一篇文章,主要將集中在算法在實際使用場景中的調優問題,將主要圍繞在壓縮模型體積的情況下,儘量減少定位精度的損失。下面將分別對基於座標迴歸的方法和基於熱圖迴歸的方法在實際項目中的一些經驗和總結分別進行描述和討論。

2.1基於座標迴歸的人臉關鍵點定位算法調優

基於座標迴歸的人臉關鍵點算法速度快,但是定位精度略差於基於熱圖迴歸的方法。這種方法比較適宜用於對實時性要求較高、但對定位精度要求相對不高的任務中(如人臉識別、情緒判斷、頭部姿態估計等)。基於座標迴歸的算法在我們的實際項目中,可以做到模型體積小於200KB,速度到達1500fps ,同時在精度上仍然可以達到要求。下面介紹常用的調優方法:

2.1.1設計輕量化的模型

在我們實際經驗中,使用精心設計和調參的小模型在一定的情況下,精度完全可以超過使用了特徵提取能力更強的大模型;常用的輕量化特徵提取網絡如ShuffleNet、MobileNet等,但是這些模型的體積對於邊緣計算設備(智能手機、機器人等)仍然較大,模型的參數量和計算量如表1所示。此外,這種爲圖像分類設計的網絡,直接應用到人臉關鍵點定位任務中並不是一種好的策略。爲此,我們設計了一種專門用來進行人臉關鍵點定位的一種輕量化模型,表2是模型的基本結構。其中ConvDW代表深度可分離卷積,ConvDW*表示在該層對輸入的Feature Map進行降採樣。

我們使用MSE Loss作爲優化函數,在300W數據集上進行訓練和測試,獲得結果如表3所示。從表中我們可以看出,使用我們專門設計的人臉關鍵點定位模型可以在極小的模型參數量和計算量中,獲得更好地結果。

2.1.2 使用恰當的損失函數

對於基於座標迴歸的人臉關鍵點定位算法,Loss函數也是一項至關重要的優化項。在Wing-CNN文章之前,大部分基於座標迴歸的算法都是使用MSE Loss作爲損失函數,但是MSE Loss非常容易受到異常值的影響,通俗的來講,MSE Loss有可能因爲幾個極端的異常數據而陷入局部極值中,導致模型收斂較差。因爲人臉關鍵點定位的標註數據本身就存在一定的誤差,因此標註數據中存在異常值(或錯誤值)的可能性比目標檢測、圖像分類等視覺任務更大。問了解決這一問題,Wing-CNN中提出使用Wing Loss來緩解模型對異常值的敏感程度。在表4中,我們對比了使用我們設計的小模型作爲BackBone分別使用MSE Loss和Wing Loss作爲損失函數在300W-Fullset上的測試結果。從表中,我們可以看出使用Wing Loss可以明顯的提升模型的結果精度。

2.1.2 使用多階段模型去提升人臉關鍵點定位性能

在實際應用中,如果需要獲得高精度的人臉關鍵點定位結果,通常使用基於熱圖迴歸的算法;但是,有一些特殊的任務如手機端的視頻人臉美妝軟件(該算法完全在手機端運行,不需要借網絡),就會對速度有較高的要求,同時也需要獲得非常精確地人臉關鍵點定位結果。此時,我們可以藉助多階段人臉關鍵點定位模型來完成。

訓練多階段人臉關鍵點定位模型,首先使用一個非常淺層的關鍵點定位模型(Model-I)去進行5點定位,之後通過5點對人臉圖片進行校正,然後再使用一個相對較大的模型(Model-II)進行正常的人臉關鍵點定位(如68點、106點等)。圖3表示多階段的人臉定位模型訓練的基本過程。

圖3 多階段人臉關鍵點訓練過程

在模型訓練階段,爲了節約計算量,Molde-I可以使用較小尺寸的輸入圖片(如64x64),使用更加激烈的數據增廣方法例如更大的旋轉角、更強的邊框擾動;在訓練Model-II過程中,輸入經過Model-I處理後轉正的圖片,此時的圖片的輸入尺寸、增廣方式都按照正常訓練方式進行。依據我們多次相關類型項目經驗,多階段定位模型可以獲得與基於熱圖迴歸方法相互匹敵的結果,並且模型的運算速度快、系統開銷少。因爲Model-I的模型非常小,而且輸入圖片的尺寸也非常小,所以基本不會對模型速度和運行開銷產生影響。

2.2 基於熱圖迴歸的人臉管家點定位算法模型調優

通常情況下,基於熱圖迴歸的人臉關鍵點模型算法受限於自身體積、運算量等制約,不會部署到對速度具有較高要求的移動端產品中。但是隨着短視頻、直播等新興行業的發展和邊緣計算設備運算能力的逐步提升,將高精度的人臉關鍵點定位算法在實際項目部署的需求逐漸增加。目前,我們是使用知識蒸餾的方法,可以完成精度高、實時性強的關鍵點定位模型在手機端的部署。我們對Hourglass進行精簡,精簡的方式主要是模型的深度和寬度兩個方面,然後使用熱圖迴歸的常用方法對完成Teacher Model和Student Model的訓練,在知識蒸餾過程中,不但需要對Student Model中每一個Block輸出的Feature Map進行監督學習,也需要讓Student Model對訓練數據進行學習。知識蒸餾過程中,使用MSE Loss作爲損失函數。

2.3 訓練數據方面的調優

2.3.1使用對抗生成網絡(GAN)進行數據增廣

根據實際的項目經驗可知,同一張人臉圖片在不同的光照背景、圖片質量的情況下,定位結果會產生一定的偏差,如圖4所示。這些細微的偏差會導致模型在最終的結果產生震盪,不但會對最終的精度產生影響,當算法應用到視頻中時,會是定位結果在相鄰幀之間產生嚴重的抖動。

圖4 圖片背景對關鍵點定位結果導致的影響

對於這一問題,我們主要是通過GAN來替換圖片的背景,完成訓練圖片的大規模增廣。圖5是我們在300W數據集上進行的數據增廣實驗結果。實際項目經驗顯示,使用GAN進行數據增廣訓練的人臉關鍵點定位模型無論是在定位精度還是在穩定性上都遠好於未使用數據增廣訓練的模型。

圖5 使用GAN進行數據增廣的結果

2.3.2 通過頭部姿態來進行數據增廣

對於常用的人臉關鍵點定位數據庫包括300W、AFLW、COFW以及WFLW等,這些數據庫中的正面人臉都遠多於側面的人臉圖片。爲了讓訓練數據中正臉和側臉圖片數量大致相等,我們可以通過給定的人臉關鍵點座標等來計算出人臉的朝向(patch、yaw、roll),通過對人臉朝向的角度區間進行分類,然後手動複製那些姿態較少的數據,使各個區間中人臉圖片的數量基本保持一致。與GAN背景轉換方法相比,這種方法不需要訓練對抗生成網絡,因此也更加常用。

在本篇文章中,我們首先介紹了人臉關鍵點定位模型在實際使用時所面臨的一些問題,然後分別從基於座標迴歸的方法、基於熱圖迴歸的方法以及數據增廣這三個角度,介紹了一些我們在項目中所總結的算法調優的經驗和方法。希望這些方法和總結可以促進人臉關鍵點定位技術的發展和進步。

作者介紹:

沙宇洋,中科院計算所工程師,北京郵電大學碩士,目前主要從事人臉識別以及無人駕駛等相關方向的研究和實際產品開發。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章