原文地址:https://blog.csdn.net/shuzfan/article/details/52668935
本次介紹一篇速度還不錯的人臉檢測文章:
《2016 Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks》.
源代碼作者剛剛公佈,效果相當不錯(只有測試代碼):
https://kpzhang93.github.io/MTCNN_face_detection_alignment/index.html?from=timeline&isappinstalled=1
另外一位同學實現的MTCNN基於MXNET的訓練代碼,工作比較完整,參考價值比較大: https://github.com/Seanlinx/mtcnn
—————— Pipeline——————
上面是該方法的流程圖,可以看出也是三階級聯,和我之前的一篇博文CascadeCNN很像。
stage1: 在構建圖像金字塔的基礎上,利用fully convolutional network來進行檢測,同時利用boundingbox regression 和 NMS來進行修正。(注意:這裏的全卷積網絡與R-CNN裏面帶反捲積的網絡是不一樣的,這裏只是指只有卷積層,可以接受任意尺寸的輸入,靠網絡stride來自動完成滑窗)
stage2: 將通過stage1的所有窗口輸入作進一步判斷,同時也要做boundingbox regression 和 NMS。
stage3: 和stage2相似,只不過增加了更強的約束:5個人臉關鍵點。
————— Network —————
Stage1: Proposal Net
Stage2: Refine Net
Stage3: Output Net
由上可以看出,其網絡結構較CascadeCNN略深但每層參數較少,所以該方法性能較好同時速度和CascadeCNN也相差無幾。
補充:
(1) 文中訓練使用了Online Hard sample mining策略,即在一個batch中只選擇loss佔前70%的樣本進行BP;
(2) 不同階段,classifier、boundingbox regression 和 landmarks detection在計算Loss時的權重是不一樣的;
(3) 訓練數據共4類,比例3:1:1:2,分別是negative,IOU<0.3; positive,IOU>0.65; part face,0.4
—————— Result ——————
在FDDB上的表現:
速度表現,CPU約15FPS