- https://zhuanlan.zhihu.com/p/73546427
- https://blog.csdn.net/wwwhp/article/details/88361422
- https://arxiv.org/pdf/1902.10859.pdf
- https://github.com/polarisZhao/PFLD-pytorch
1. 前言
PFLD全稱A Practical Facial Landmark Detector是一個精度高,速度快,模型小的人臉關鍵點檢測模型。在移動端達到了超實時的性能(模型大小2.1Mb,在Qualcomm ARM 845 處理器上達到140fps),作者分別來自武漢大學,天津大學,騰訊AI Lab,美國天普大學,有較大的實用意義。
2. 挑戰
人臉關鍵點檢測作為人臉相關應用中的一個基礎任務面臨了很多挑戰,包括檢測精度,處理速度,模型大小這些因素都要考慮到,並且在現實場景中很難獲取到質量非常高的人臉,所以人臉關鍵點檢測主要面臨下面幾個挑戰:
- 局部變化:現實場景中人臉的表情,廣告,以及遮擋情況都有較大的變化,如Figure1所示
- 全局變化:姿態和成像質量是影響圖像中人臉的表征的兩個主要因素,人臉全局結構的錯誤估計將直接導致定位不准
- 數據不平衡:不平衡的數據使得算法模型無法正確表示數據的特征
- 模型的性能:由於手機和嵌入式設備計算性能和內存資源的限制,必須要求檢測模型的size小處理速度快
Figure 1
3. 創新點
總的來說,本文設計的PFLD在復雜情況下也可以保持高精度。針對全局變化,PFLD采用輔助網絡來估計人臉樣本的集合信息。針對數據不平衡,設計新的損失函數,加大對難樣本的懲罰力度。使用multi-scale fc層擴展感受野精確定位人臉的特征點。使用Mobilenet Block構建網絡的Backbone提升模型的推理速度及減少模型的計算量。
4. PFLD網絡結構
PFLD的網絡結構如下圖所示:
Figure2 PFLD的整體結構
其中黃色虛線圈起來的部分表示主分支網絡,用於預測關鍵的位置。綠色虛線圈起來的是head pose輔助網絡。這樣在訓練關鍵點回歸的同時預測人臉姿態,從而修改損失函數,使得模型更加關注那些稀有以及姿態角度過大的樣本,從而提高預測的精度。
可以看到在主分支網絡中,PFLD並沒有采用VGG16,ResNet50等大模型。但為了增強模型的表達能力,對MobilenetV2的輸出特征進行了結構上的修改,如Figure2中主分支網絡的右邊所示。PFLD融合了3個尺度的特征來增加模型的表達能力。
4.1 損失函數設計
我們知道一般的回歸損失是MSE或者Smooth L1 Loss,但它們都難以應對數據不均衡的情況,以MSE Loss為例,損失函數可以寫成:
公式1
其中表示人臉樣本的數量,表示每張人臉預設的需要檢測的特征點數目,在本文表示L2距離,表示不同類型樣本的不同權重。
而RetinaNet中提出的Focal Loss可以較好的應對二分類中的數據不均衡情況,受到這一啟發,作者設計了下面的損失函數來緩解數據不均衡的情況:
PFLD loss
- 代表權重。
- ,, ()分別表示GT和Prediction在yaw、pitch、roll三種角度之間的偏差,角度越大值越小,權重越大。其中pitch代表上下翻轉,yaw代表水平翻轉,roll代表平面內旋轉,都表示人臉的一種姿態。
- 表示不同的類別的人臉: 正臉、側臉、抬頭、低頭、表情以及遮擋情況,根據樣本類別分數進行調整,論文中使用的分數樣本數的導數計算的。
- 由主分支網絡計算得到,由輔助網絡計算得到,然后由Loss來建立聯系。
4.2 輔助網絡的細節
PFLD在訓練過程中引入了一個輔助網絡用以監督PFLD網絡模型的訓練,如Figure2中綠色虛線里的部分。該子網絡僅在訓練的階段起作用,在推理階段不起作用。
該子網絡對每一個輸入的人臉樣本進行三維歐拉角估計,它的Ground Truth由訓練數據中的關鍵點信息進行估計,雖然估計不太精確,但是作為區分數據分布的依據已經足夠了,因為這個輔助網絡的目的是監督和輔助關鍵點檢測主分支。另外需要注意的一點是,這個輔助網絡的輸入不是訓練數據,而是PFLD主分支網絡的中間輸出(第4個Block)。
4.3 主分支網絡和輔助網絡的詳細配置
主分支網絡和輔助網絡的詳細配置表如下:
主分支網絡的配置
輔助網絡的配置
5. 實驗結果
下面的Figure3展示了在300W數據集上PFLD和其它一些經典算法的CED曲線對比:
在300W數據集上PFLD和其它一些經典算法的CED曲線對比
下面的Table3展示了PFLD在各個平台上的性能表現:
Table3
下面的Table4展示了不同的評價標准和不同的數據子集的評價指標:
Table4
Table5還展示了FPLD在AFLW數據集上的表現:
FPLD在AFLW數據集上的表現
最后Figure4還展示了一些在具有挑戰性的樣本上的表現:
Figure4
6. 總結
總的來說FPLD是一個idea非常好並且實用價值比較大的人臉關鍵點檢測算法,無論是人臉姿態估計子網絡的引入還是針對數據不平衡重新設計損失函數都是值得借鑒的。
7. 參考文章
- https://zhuanlan.zhihu.com/p/73546427
- https://blog.csdn.net/wwwhp/article/details/88361422
- https://arxiv.org/pdf/1902.10859.pdf
- https://github.com/polarisZhao/PFLD-pytorch
另外,今天為大家送3本 北京大學出版社提供的《Git 從入門到精通》,封面如下:
書籍封面
點擊下面的留言板留言你使用的最多的Git命令,集贊最多的三名讀者將分別獲得一本正版書籍。
歡迎關注GiantPandaCV, 在這里你將看到獨家的深度學習分享,堅持原創,每天分享我們學習到的新鮮知識。( • ̀ω•́ )✧
有對文章相關的問題,或者想要加入交流群,歡迎添加BBuf微信:
為了方便讀者獲取資料以及我們公眾號的作者發布一些Github工程的更新,我們成立了一個QQ群,二維碼如下,感興趣可以加入。