1. 程式人生 > >人臉對齊:Wing Loss人臉關鍵點檢測演算法2018

人臉對齊:Wing Loss人臉關鍵點檢測演算法2018

Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks 
由薩里大學研究人員(第一至四作者)與江南大學研究人員(第五作者)共同研究,被CVPR2018收錄,最早於2017年11月在arXiv上發表(美[ˈɑ:rkaɪv]) : 
https://arxiv.org/abs/1711.06753v4

近幾年,人臉關鍵點檢測大多在“由粗到精”(coarse to fine)上研究,而這篇文章則另闢蹊徑。依作者所說,這是第一篇在人臉關鍵點檢測任務上對loss function進行討論分析的文章,文章在loss function上進行改進,為人臉關鍵點檢測任務提出“專用”的loss function——Wing loss,作者的出發點值得借鑑。

創新點

1.針對人臉關鍵點檢測提出新的loss function —— Wing Loss 
2.針對人臉姿態角度多樣而導致的檢測精度不高問題,提出一種基於姿態的資料均衡方法從而提升人臉姿態變化時的關鍵點檢測精度,這也是文章題目中“Robust”的體現

主要工作: 
除上述兩點外,第三點是採用 two-stage landmark localisation,其實就是級聯卷積神經網路的思想,更多人臉關鍵點檢測中的級聯思想可參見: 
級聯MobileNet-V2實現CelebA人臉關鍵點檢測 
深度學習人臉關鍵點檢測方法—綜述

我將從三個部分進行介紹這篇論文,分別是Wing loss資料均衡方法 和 Two-stage landmark localisation

,重點當然是Wing loss啦~~

Wing loss

命名:文中沒有提到為什麼命名為Wing loss,但是從 Wing loss的曲線圖看到,好像翅膀(Wing),或許因此得名吧 
圖1

Wing loss 公式如下: 
這裡寫圖片描述

這裡丟擲兩個問題: 

第一,這是一個分段函式,為什麼是分段函式? 
第二,當|x|<w|x|<w 時,主體是一個對數函式,另外還有兩個控制引數,分別是w和ε,為什麼是對數函式?為什麼要加控制引數? 

先解釋第二個問題,通常的人臉關鍵點檢測任務(迴歸任務)loss function都採用L2、L1和smooth L1 ,其中L2是使用最為廣泛的 
這三個loss function曲線如下圖所示:

這裡寫圖片描述

 

這裡寫圖片描述

講到這裡,Wing loss的由來就講完啦,但是最最關鍵的還是要調參。要找合適的 wϵw和ϵ ,作者做了一系列實驗,給出了推薦值,請實驗結果: 
這裡寫圖片描述

PBD(Pose-based Data Balancing)

本文除了提出一種新的loss function,還針對人臉關鍵點檢測任務中遇到的人臉姿態多樣化問題,提出一種基於姿態的資料均衡方法,來提升人臉關鍵點檢測精度。

在分類任務中,資料不均衡非常容易導致模型效能不佳,而在人臉關鍵點任務(迴歸任務)中,作者同樣認為,正臉太多,有旋轉的臉太少,從而導致模型對有旋轉的人臉的關鍵點檢測精度低。 因此,提出一種基於姿態的資料均衡方法——PDB(Pose-based Data Balancing)

PDB方法:首先將 training shapes進行對齊,將對齊後的training shapes進行PCA,用shape eigenvector將original shapes進行投影至一維空間,用來控制姿態變化。整個訓練集投影后的係數通過一個直方圖來展示,如下圖所示: 
這裡寫圖片描述

有了這個直方圖,就可以看到哪些姿態的人臉影象多,哪些少,然後通過複製那些佔比較少的樣本,使得所有樣本均衡,這就是PDB方法。實驗結果表明PDB方法可以提升人臉關鍵點檢測精度: 
這裡寫圖片描述

Two-stage landmark localisation(Pose-based Data Balancing)

為了進一步提升精度,作者採用了級聯思想,在文中稱之為 Two-stage landmark localisation

level-1 採用的是CNN-6,level-2採用的是CNN-7, CNN-7與CNN-6不同之處在於:

  1. input比CNN-6大一倍,為128*128*3
  2. 多了一組操作——卷積、池化
  3. 第一個卷積層的卷積核個數為64(CNN-6為32)

level-1輸出的landmark有兩個作用:

  1. 移除人臉角度;
  2. 矯正bounding box 為level-2 提供更好的輸入

CNN-6 模型如下: 
這裡寫圖片描述

小結

通過閱讀該文章可知,在做人臉關鍵點時,可以注意以下幾點:

  1. 由於人臉關鍵點檢測是特殊的迴歸任務,因而要注意loss function是否對每一個點都“友好”,選用不同的loss function嘗試實驗,或許有新發現

  2. 資料不均衡問題不僅困擾分類任務,在人臉關鍵點檢測任務中,不同姿態的人臉樣本不均衡,同樣會影響模型獲得更高的精度,因此可嘗試使用某一種指標,去衡量訓練樣本當中,人臉姿態的分佈情況,然後對應的做資料均衡(該法資料資料增強)

  3. 級聯,利用上一級的output,對iamge進行矯正,使下一級獲得更好的input