天天看點

人臉關鍵點檢測3——DCNN[通俗易懂]

大家好,又見面了,我是你們的朋友全棧君。

######《Deep Convolutional Network Cascade for Facial Point Detection》

2013年,通過3級卷積神經網絡來估計人臉關鍵點(5點),屬于級聯回歸方法。

級聯的卷積網絡結構:

人臉關鍵點檢測3——DCNN[通俗易懂]

Level1,采用了3個CNN,輸入區域分别為整張臉(F1),眼睛和鼻子(EN1),鼻子和嘴(EM1)。F1輸入尺寸為3939,輸出5個關鍵點的坐标;EN1輸入尺寸為3139,輸出是3個關鍵點的坐标;NM1輸入尺寸為3139,輸出是3個關鍵點。Level-1的輸出是由三個CNN輸出取平均得到,來較少變動。

Level-2,由10個CNN構成,輸入尺寸均為1515,每兩個組成一對,一對CNN對一個關鍵點進行預測,預測結果同樣是采取平均。

Level-3與Level-2一樣,由10個CNN構成,輸入尺寸均為15*15,每兩個組成一對。Level-2和Level-3是對Level-1得到的粗定位進行微調,得到精細的關鍵點定位。

Level-1之是以比Level-2和Level-3的輸入要大,是因為作者認為,由于人臉檢測器的原因,邊界框的相對位置可能會在大範圍内變化,再加上面部姿态的變化,最終導緻輸入圖像的多樣性,是以在Level-1應該需要有足夠大的輸入尺寸。Level-1與Level-2和Level-3還有一點不同之處在于,Level-1采用的是局部權值共享(Locally Sharing Weights),作者認為傳統的全局權值共享是考慮到,某一特征可能在圖像中任何位置出現,是以采用全局權值共享。然而,對于類似人臉這樣具有固定空間結構的圖像而言,全局權值共享就不奏效了。因為眼睛就是在上面,鼻子就是在中間,嘴巴就是在下面的。作者通過實驗證明了局部權值共享給網絡帶來性能提升。

網絡結構:

人臉關鍵點檢測3——DCNN[通俗易懂]
人臉關鍵點檢測3——DCNN[通俗易懂]

注:Level1中F1采用S0,EN1和NM1采用S2;Level2和Level3全部采用S2。

多級回歸:

我們發現幾種有效的方法結合多重卷積網絡。第一個是多級回歸。臉部bounding box是僅有的先驗知識。一個面部點對bounding box的相對位置可能分部在一個很大的範圍,這是由于臉部檢測器的不穩定性和姿态的多樣性。是以第一級的輸入區域應該是足夠大來覆寫所有可能的預測。但大的輸入區域是主要的不準确原因,因為不相關的區域可能退化網絡最後的輸出。第一級的網絡輸出為接下來的檢測提供了一個強大的先驗知識。真實的臉部點僞裝分布在第一級預測的一個小領域内。是以第二級的檢測可以在一個小範圍内完成。但沒有上下文資訊,局部區域的表現是不可靠的。為了避免發散,我們不能級聯太多層,或者過多信任接下來的層。這些網絡隻能在一個小範圍内調整初始預測。

為了更好的提高檢測精度和可靠性,我們提出了每一級都有多個網絡共同地預測每一個點。這些網絡的不同在于輸入區域。最後的預測可以用公式表達如下:

人臉關鍵點檢測3——DCNN[通俗易懂]

對n-級級聯,在i級有li個預測。第一級的預測是絕對位置,接下來的級的預測是調整。

訓練:

第一級,訓練和邊界相關的小塊,通過小的變換和旋轉增強資料。在接下來的級中,我們訓練以ground truth 位置随機變換得到的位置為中心的小塊,第二級在水準和豎直最大的shift為0.05,第三級為0.02,這個距離是以bounding box的大小為基準。參數通過随機初始化和随機梯度下降法得到。

測試:

人臉關鍵點檢測3——DCNN[通俗易懂]

DCNN采用級聯回歸的思想,從粗到精的逐漸得到精确的關鍵點位置,不僅設計了三級級聯的卷積神經網絡,還引入局部權值共享機制,進而提升網絡的定位性能。最終在資料集BioID和LFPW上均獲得當時最優結果。速度方面,采用3.3GHz的CPU,每0.12秒檢測一張圖檔的5個關鍵點。

注:博衆家之所長,叢集英之荟萃。

釋出者:全棧程式員棧長,轉載請注明出處:https://javaforall.cn/141868.html原文連結:https://javaforall.cn