人臉關鍵點:MTCNN-Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks

創新點:
1. 首次將級聯和多任務結合起來,之前有單純級聯的DCNN,單純多任務的TCDCN
2. 提出 a new online hard sample mining strategy,沒接觸過hard sample mining ,知道的同學介紹介紹唄~

2016年,Zhang等人提出一種多任務級聯卷積神經網絡(MTCNN, Multi-task Cascaded Convolutional Networks)用以同時處理人臉檢測和人臉關鍵點定位問題。作者認爲人臉檢測和人臉關鍵點檢測兩個任務之間往往存在着潛在的聯繫,然而大多數方法都未將兩個任務有效的結合起來,本文爲了充分利用兩任務之間潛在的聯繫,提出一種多任務級聯的人臉檢測框架,將人臉檢測和人臉關鍵點檢測同時進行。
MTCNN包含三個級聯的多任務卷積神經網絡,分別是Proposal Network (P-Net)、Refine Network (R-Net)、Output Network (O-Net),每個多任務卷積神經網絡均有三個學習任務,分別是人臉分類、邊框迴歸和關鍵點定位。網絡結構如圖所示:
這裏寫圖片描述
這裏寫圖片描述

MTCNN實現人臉檢測和關鍵點定位分爲三個階段。首先由P-Net獲得了人臉區域的候選窗口和邊界框的迴歸向量,並用該邊界框做迴歸,對候選窗口進行校準,然後通過非極大值抑制(NMS)來合併高度重疊的候選框。然後將P-Net得出的候選框作爲輸入,輸入到R-Net,R-Net同樣通過邊界框迴歸和NMS來去掉那些false-positive區域,得到更爲準確的候選框;最後,利用O-Net輸出5個關鍵點的位置。
在具體訓練過程中,作者就多任務學習的損失函數計算方式進行相應改進。在多任務學習中,當不同類型的訓練圖像輸入到網絡時,有些任務時是不進行學習的,因此相應的損失應爲0。例如,當訓練圖像爲背景(Non-face)時,邊界框和關鍵點的loss應爲0,文中提供計算公式自動確定loss的選取,公式爲這裏寫圖片描述
其中, αj 表示任務的重要程度,在P-Net和R-Net中αdet=1,αbox=0.5,αlandmark=0.5 , ,在R-Net中,由於要對關鍵點進行檢測,所以相應的增大任務的重要性,αdet=1,αbox=0.5,αlandmark=1 。 作爲樣本類型指示器。
爲了提升網絡性能,需要挑選出困難樣本(Hard Sample),傳統方法是通過研究訓練好的模型進行挑選,而本文提出一種能在訓練過程中進行挑選困難的在線挑選方法。方法爲,在mini-batch中,對每個樣本的損失進行排序,挑選前70%較大的損失對應的樣本作爲困難樣本,同時在反向傳播時,忽略那30%的樣本,因爲那30%樣本對更新作用不大。
實驗結果表明,MTCNN在人臉檢測數據集FDDB 和WIDER FACE以及人臉關鍵點定位數據集LFPW均獲得當時最佳成績。在運行時間方面,採用2.60GHz的CPU可以達到16fps,採用Nvidia Titan Black可達99fps。

代碼實現:
Matlab:https://github.com/kpzhang93/MTCNN_face_detection_alignment
Caffe:https://github.com/dlunion/mtcnn
Python:https://github.com/DuinoDu/mtcnn

胡思亂想:
1. 文章提到 the detection accuracy is limited by the initial detection windows produced by a weak face detector. , 不僅在這篇文章提到,在DCNN裏也提到這個問題。可以猜想,級聯的一大作用就是解決人臉邊框“不穩定”的問題。採用了級聯,相當於針對本任務定製了一個人臉邊框檢測器,於是乎輸入給真正做關鍵點檢測的網絡時,輸入數據的差異性更小了一點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章