1. 程式人生 > >人臉檢測之PCN漸進式人臉檢測

人臉檢測之PCN漸進式人臉檢測

論文為山世光老師組2018 cvpr的作品。

人臉3D變換基礎:

平面內旋轉(左右歪頭問題)roll,本人重點討論的問題

平面外左右旋轉(正臉,側臉問題)yaw

平面外俯仰(仰頭,低頭問題)pitch 

方向相關人臉檢測的思路:

(a) 使用資料增強的方法,增加各種角度的人臉進行訓練,該思路大大的依賴於樣本的多樣性,同時為了讓網路能同時學到這麼多的資訊,也需要一個較大的網路結構。

(b) 使用分治的策略,訓練不同角度的人臉分類器,然後做整合,缺點就是人臉的角度存在360,要訓練這麼多分類器,時間複雜度和模型複雜度都太大。

(c) 邊檢測人臉,邊計算出人臉的角度,再根據角度對人臉進行旋轉,然後只訓練一個正臉的分類器既可,缺點就是,角度要麼是個

360度的分類或者回歸問題,容錯空間太大,正如下圖所示,直接預測會存在誤差較大的可能。

本文基於第(c)點進行改進。使用由粗到精的思路(coarse to fine)

文章使用了3個漸進校準網路(PCN)來由粗到細的預測人臉角度值。

PCN-1進行人臉0度和-180度的2分類任務,將人臉從-180度——180度矯正為-90度——90度。

PCN-2進行人臉0度,90度,-90度的3分類任務,將人臉從-90度——90度矯正為-45度——45度。

PCN-3直接進行人臉角度迴歸,得出旋轉角度。

最終人臉的角度就是PCN-1角度+ PCN-2角度+ PCN-3角度


其中3PCN校準網路的詳細結構如下圖,主要還是借鑑的MTCNN的結構,不同點就是

(1) MTCNN中的5個關鍵點的迴歸換為人臉方向角度的分類和迴歸

(2) MTCNN中第一個網路P-Net的輸入為12*12*3,這裡的第一個網路PCN-1輸入為24*24*3

整體總結:

文章使用由粗到細的思想進行人臉角度的預測,並且利用該角度值進行人臉角度的矯正,這樣相比於直接訓練各個角度人臉的網路,使用先進行人臉矯正再進行只有正臉的人臉網路訓練就可以大大的提高召回率。

但是從工程上來看,總感覺同時出人臉角度值和人臉框不如同時出人臉關鍵點和人臉框更實用,因為有了關鍵點就可以算出角度了。

從創新性來看,也感覺略有不足。因為,假設如果第一個網路可以分出正臉和倒臉,那麼經過旋轉矯正後,人臉分類的置信度分數會更高,但是本質沒有改變,因為第一個網路已經可以分類倒臉了。假如第一個網路不能分出正臉和倒臉,那麼預測的角度值也沒用。

References