1. 程式人生 > >Multi-Task CNN

Multi-Task CNN

  • 同時實習人臉檢測與人臉對齊;
  • 級聯結構,三階段卷積網路,由粗到細的預測人臉候選框和關鍵點位置

資料預處理

對影象進行多尺度的resize,構成影象金字塔,頂端金字塔最小應該大於12 * 12。這樣網路的輸入尺寸雖然固定,但是可以處理不同尺寸的人臉。

訓練集構建

由於網路同時執行人臉檢測和對齊,因此在這裡我們在訓練過程中使用四種不同的資料型別:

  1. Positives:與ground truth face的IOU高於閾值0.65,
  2. Negatives: 與ground truth face的IOU低於閾值0.3
  3. partfaces: 與ground truth face的IOU處於0.4和0.65之間
  4. landmarkface: 擁有landmark的標籤的人臉

在人臉分類任務中使用使用positives & negatives; 在候選框bbox預測任務中使用positives & partface;  在人臉landmark預測任務中使用landmarkfaces
    

Proposal Network (P-Net)

得到5個通道的特徵圖:第一個通道代表置信度:凡是大於0.7的留下來然後。反算回去:IDX(特徵圖的索引)*步長=進入P網路圖的尺寸,然後除以原圖的比例,得到建議框(為正方形),另外四個通道為位置的偏移:XX * / W = X關(偏移)得到原框X.然後通過非大值抑制,將多餘的框去掉。

  1. 藉助FCN思想,每個12*12*3的bbox候選框作為輸入,PNet只能檢測12*12內人臉,所以應對影象按比例縮放;將每個金字塔的圖片輸入到P網路
  2. 在訓練時,有3條支路輸出為人臉分類,邊框迴歸,關鍵點定位;而在測試時,輸出只有N個邊框的4個座標資訊和score(人臉分類置信度)
  3. 輸出候選框和相對應的邊界框迴歸向量(K*9,K就是bbox的數量,9包含4個座標點資訊(利用迴歸支路進行修改),1個置信度score和4個用來調整前面4個座標點的偏移資訊).
  4. 利用迴歸向量修改邊框,然後NMS去除重疊輸出為N*5,N為最終bbox個數.

Refine Network (R-Net)

由於得到的原框大小可能為長方形,所以需要PIL等工具在原圖上接一個正方形,然後在等比例縮放,得到的24×24的人臉不會變形。然後重新確定位置的偏移,得到新的框,再做NMS

  1. 以P-Net預測的bbox資訊為基礎,對原始圖片切片並resize尺寸,即將bbox pading 為24*24,增加為4維,最終輸入(N,3,24,24)
  2. 經過人臉概率濾除,迴歸資訊利用,NMS得到最終輸出M*5,即M個4個座標點資訊(利用迴歸支路進行修改)和score組合

O-Net

  1. 與R-Net類似,但增加landmark位置資訊的迴歸,輸入N*3*48*48,
  2. output[0]N*10表示5個關鍵點的x,y資訊.ouput[1]表示最終若干個bbox的4個座標資訊和置信度分數

訓練過程

三個任務:

face/non-face classification

此為二分類問題,對於每個輸入x_{i},我們採用交叉熵損失函式:

L_{i}^{det} = -(y_{i}^{det} log(p_{i}) + (1-y_{i}^{det})(1- log(p_{i})))

這裡p_{i}是網路預測樣本為人臉的概率,y^{det} \in \left \{ 0,1 \right \}表示真實人臉標籤資料

bounding box regression

對於每個候選視窗,我們預測它與最近的真實標籤之間的偏移(左上、寬度、高度),為迴歸任務,採用歐幾里得損失函式(L2範數損失函式):

L_{i}^{box} = \left \| \widehat{y}_{i}^{box} - y_{i}^{box}\right \|_{2}^{2}

這裡\widehat{y}_{i}^{box} \in \mathbb{R}^{4}為網路輸出的邊框迴歸

landmark localization

如同邊框迴歸,關鍵點定位也是迴歸問題,最小化損失函式

L_{i}^{landmark} = \left \| \widehat{y}_{i}^{landmark} - y_{i}^{landmark}\right \|_{2}^{2}

多工訓練

通過損失函式分配實現:根據不同的輸入計算上述三種損失值

\min \sum_{i=1}^{N} \sum_{j\in\left \{ det,box,landmark \right \}}\alpha _{j}\beta _{i}^{j}L_{i}^{j}

這裡N是樣本數,\alpha _{j}表示任務重要性,P-Net,R-Net(\alpha _{det} = 1,\alpha_{box}=0.5,\alpha_{landmark}=0.5),O-Net(\alpha _{det} = 1,\alpha_{box}=0.5,\alpha_{landmark}=1)。P-Net and R-Net的landmark任務重要性小於O-Net,說明前兩個stage重在濾除非人臉bbox 

\beta _{i}^{j} \in \left \{ 0,1 \right \}為樣本探測器,非人臉情況下,只需計算交叉熵損失。

此外,在每個mini-batch中,對前向傳播中所有樣本的損失進行排序,選擇前70%,作為hard sample,然後只將硬樣本的梯度用於反向傳播.