天天看點

人臉關鍵點标注工具_人臉定位算法的實際應用總結

文章整理:加米谷大資料

人臉關鍵點定位算法 (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 背景轉換方法相比,這種方法不需要訓練對抗生成網絡,是以也更加常用。

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