天天看點

人臉特征點檢測——Tweaked CNN(TCNN)

《Facial Landmark Detection with Tweaked Convolutional Neural Networks》

論文連結:https://talhassner.github.io/home/publication/2017_TPAMI_2

開源參考項目:

                       https://github.com/cooparation/VanillaCNN_faceLandmark

                       https://github.com/flyingzhao/mxnet_VanillaCNN

綜合原文連結:https://blog.csdn.net/qq_28618765/article/details/78044098

概述

     如我前面所說,人臉特征點檢測是一個回歸問題,這個問題需要關注兩個方面:一是人臉特征表示,二是回歸方法。這次解析的論文是使用深度學習的方法來做特征點檢測,它的方法也不會脫離這個架構的。

這篇論文的臉部标記點檢測訓練使用的網絡是Vanilla CNN,我們先來了解一下Vanilla CNN的設計。

Vanilla CNN

其實這篇論文的網絡結構和前面的TCDCN網絡結構是一樣的,就不一一細說了。

TCDCN: 

人臉特征點檢測——Tweaked CNN(TCNN)

Vanilla CNN: 

人臉特征點檢測——Tweaked CNN(TCNN)

          其中紅色弧标記的地方就是TCNN進行改進的地方。和TCDCN不一樣的地方在于:去掉多任務學習而且使用彩色圖像。損失函數也不一樣,這裡使用的損失函數使用了兩眼間距離進行标準化:

它使用的激活函數是雙曲正切函數,并且在經過雙曲正切函數之後進行了絕對值整流處理;最後損失函數使用雙目距離進行标準化:

人臉特征點檢測——Tweaked CNN(TCNN)

至此,本文中使用Vanilla CNN人臉特征點檢測結束了。

網絡特征分析

      随後作者對這個模型提出了一些思考,由此引出了下面的TCNN。這個問題就是,網絡到底學習到了什麼樣特征?

       作者對網絡不同層的特征進行使用GMM進行聚類分析,發現網絡進行的是層次的,由粗到精(hierarchical, coarse to fine)的特征定位,越深的網絡特征越能反應出特征點的位置。

      作者對FC5的輸入進行了分析,也就是網絡示意圖中紅色圓圈部分,将這些特征使用了GMM聚成64類,并顯示出每一個聚類中心(相同類别臉的平均):

人臉特征點檢測——Tweaked CNN(TCNN)

顯然,這些特征展示出了人臉的不同姿勢,還可以看出不同的人臉屬性,比如表情和性别,作者認為這是因為人臉特征點的位置常常和人臉的屬性相關聯。

The Tweaked CNN model

為了提高精度,在最後的網絡層次中進行了微調:每一層僅使用類似的中間層網絡特征代表的圖像來進行訓練;因為相似的特征代表相似的特征點,這被認為可以讓網絡能在特定的姿勢和表情中有針對性一點。

為了防止過拟合,也為了能提高上述調整的效率,用來一個Alignment-sensitive data augmentation的方法來解決訓練不足資料的問題。

1、Tweaking by fine-tuning

如下圖所示便是TCNN的網絡結構:

人臉特征點檢測——Tweaked CNN(TCNN)

       在全連接配接層之前,網絡結構和Vanilla CNN是一緻的,也就是說,在剛開始的時候,訓練Vanilla CNN來進行臉部标記點回歸。在訓練完成之後,便從前面訓練的結果中抽離出特征,将其作為FC5的輸入。微調最後一層FC5,使用具有相似特征的圖檔訓練對應的回歸器。

        對網絡不同層的特征使用GMM進行聚類分析,發現網絡進行的是層次的,由粗到精(hierarchical,coarse to fine)的特征定位,越深的網絡特征越能反應出特征點的位置,将這些特征使用GMM聚合成K個類,并顯示每一個聚類中心(相同類别臉的平均)。接下來微調權重,對于每一個聚類,隻使用其圖像集進行微調。這裡還是用了early stopping來微調每一個子網;它的作用就是,在50個周期裡,如果驗證損失沒有提升的話,就停止微調該簇。

2、Alignment-sensitive data augmentation

         當資料集不同的時候,一般為防止過拟合,都會通過增加資料量來減少誤差。最流行的方法包括有過采樣,實質上就是通過裁剪不同偏移量的輸入圖檔來增加訓練資料,有的也通過鏡像圖檔獲得。但是如果應用到這裡的話卻不能成功,因為每個調整好的微調網絡是在來自一個相同的簇的代表上進行訓練的。過采樣和鏡像都會引入不對其的圖檔到每一個簇中,會增加标記點位置的變異性進而破壞了我們微調的目标。

繼續閱讀