MTCNN人臉檢測識別筆記


 

論文:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks
論文鏈接:https://arxiv.org/abs/1604.02878
官方代碼鏈接:https://github.com/kpzhang93/MTCNN_face_detection_alignment
其他代碼實現(MXNet):https://github.com/pangyupo/mxnet_mtcnn_face_detection

一 模型及流程概覽

       使用mtcnn神經網絡進行人臉檢測是目前比較主流的方式,相較於傳統的人臉檢測方法,mtcnn更能夠適用各種自然條件下復雜的人臉場景。mtcnn是兩年前發表的成果,在原作者實現的時候先后有兩個版本:V1和V2。V1就是用matlab實現的論文《Joint Face Detection and Alignment using Multi-task Cascaded  Convolutional Neural Networks》,V2在V1的stage3后又添加了一個stage4,以實現更精確的回歸。

       訓練前,對圖像做了multi scale的resize,構成了圖像金字塔,然后這些不同scale的圖像作為3個stage的輸入進行訓練,目的是為了可以檢測不同scale的人臉。

  將圖像進行多級scale操作(除了第一次resize,每次resize操作使得待檢測圖片的面積變為之前的一半),如果最小邊長小於12,則停止scale操作;對於720p的圖片來說,一共會進行11次scale: [0.6, 0.4242640687119285, 0.3, 0.21213203435596426, 0.15, 0.10606601717798213, 0.075, 0.053033008588991064, 0.0375, 0.026516504294495532, 0.01875];然后將11個不同尺度的圖片送入P-Net;

 

MTCNN由三個子模型組成,由粗到細(coarse-to-fine)生成結果:

P(Proposal)-Net:淺層的全卷積神經網絡CNN快速產生候選窗體和邊界回歸向量,利用NMS方法去除重疊窗體。在訓練階段,頂部有3條支路用來分別做人臉分類、人臉框的回歸和人臉關鍵點定位;在推理階段,輸出只有N個bounding box的4個坐標信息和score,當然這4個坐標信息已經用回歸支路的輸出進行修正了,score可以看做是人臉的概率,具體可以看代碼。

R(Refine)-Net:通過更復雜的全連接CNN精煉候選窗體,利用邊界框向量微調候選窗體,再利用NMS去除重疊窗體,丟棄大量的重疊窗體。輸入是P-Net中得到的大量bounding box並都被resize成24*24尺寸。同樣在推理階段,這一步的輸出只有M個bounding box的4個坐標信息和score,4個坐標信息也用回歸支路的輸出進行修正了。

O(Output)-Net:網絡結構比R-Net多一層卷積,功能與R-Net作用一樣,只是在去除重疊候選窗口的同時,顯示五個人臉關鍵點定位。輸入大小調整為48*48,輸出包含P個bounding box的4個坐標信息、score和關鍵點信息。

 

二、損失函數

1. face classification

判定是否包含face的二分類問題,采用交叉熵損失函數

 

2.bounding box regression

回歸檢測人臉包圍盒,使用L2 loss

 

3.facial landmark localization

 

4. 權值平衡

不同的階段對應的損失函數組合不一樣,權重也不一樣,因此定義了公式4用來控制對不同的輸入計算不同的損失。可以在出,在P-Net和R-Net中,關鍵點的損失權重(α)要小於O-Net部分,這是因為前面2個stage重點在於過濾掉非人臉的bbox。β存在的意義是比如非人臉輸入,就只需要計算分類損失,而不需要計算回歸和關鍵點的損失。

 

三 模型細節

  • PNet

圖片尺寸:12*12*3

卷積層一 : [in_channel(3), shape(3), shape(3), out_channel(10)]      激活PReLU  MaxPool

卷積層二 : [in_channel(10), shape(3), shape(3), out_channel(16)]    激活PReLU  MaxPool

卷積層三 : [in_channel(16), shape(3), shape(3), out_channel(32)]    激活PReLU 

卷積層四_一 : [in_channel(32), shape(1), shape(1), out_channel(2)]    conv4-1  激活Softmax 到 prob1層 對應人臉概率的得分

卷積層四_二 : [in_channel(32), shape(1), shape(1), out_channel(4)]    conv4-2

 

卷積層三為 1x1卷積核得到PNet輸出。PNet層輸出分為3部分:
1). face classification:圖像中包含人臉的概率
2). bounding box:輸出矩形框位置信息
3). facial landmark localization:5個關鍵點位置。


rnet: 24x24x3, onet:48x48x3

 

三、人臉對齊的一些筆記

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM