MTCNN實現流程

MTCNN實現流程

文章https://arxiv.org/pdf/1604.02878.pdf

code:

1、mxnet上的實現:https://github.com/Seanlinx/mtcnn

2、tensorflow上的實現:https://github.com/AITTSMD/MTCNN-Tensorflow

3、pytorch上的實現: https://github.com/TropComplique/mtcnn-pytorch

4、caffe上的實現: https://github.com/CongWeilin/mtcnn-caffe

Tips: 個人建議在看這篇文章的時候,對照着pytorch的實現代碼理解,尤其是裏面的 try_mtcnn_step_by_step.ipynb 非常有助於理解整個文章的流程。

流程圖

在這裏插入圖片描述

網絡結構圖

在這裏插入圖片描述

P-Net即Proposal net用於初始候選框提取

R-Net即refinement net用於進一步精簡第一步的候選框

O-Net即output net用於輸出最終的人臉框和5個landmark點

注意:P-net是個全卷積神經網絡,因此可以輸入不同大小的圖像

具體流程(inference階段)

  • 1、對於給定的輸入圖像,進行scale操作,得到若干個不同scale的輸入圖像,這一步的目的是能夠針對不同大小人臉進行候選框的檢測

  • 2-1、將不同scale的圖像輸入到P-Net中,注意,P-Net中的12123的輸入只是一個示意圖,代表對於圖像中的1212的區域,經過P-Net的卷積後,就變成了一個11,而因爲輸入的圖像大小不同,因此輸出的大小也不同,假設輸出的大小爲wh,則輸出的每個點都對應於原圖中的一個1212的大小的區域。

  • 2-2、設定閾值,根據face classification的結果,選出可能含有目標框的點

  • 2-3、將這些在不同尺度下可能是目標框的點映射到原始沒有經過scale的圖中,得到了很多候選區域。

  • 2-4、使用nms算法對目標框進行篩選,並且根據P-Net中輸出的offset(對應bounding box regression)對候選框進行微調,校準。

  • 3、將上一步得到所有候選框提取出來,並resize到24*24的大小,輸入至R-Net中,並根據face classification的值,進一步對候選進行篩選,類似於2-4中的操作,對目標框位置進行篩選校準

  • 4、類似於第3步的操作,進一步對目標框進行篩選,並得到最終的輸出結果,並且根據Facial landmark的輸出得到5個landmark。

注意,上述步驟中不同與上圖的部分是,在P-Net和R-Net中,都沒有輸出Facial landmark localization,只在最終的O-Net中輸出了。

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