MTCNN 流程
經過三個網絡 P-Net,R-Net,O-Net
對於P-Net:
P-Net是一個全卷積層,不涉及到全連接層,所以我們的輸入圖像的尺寸可以是不固定的。
對於P-Net來說,我們的輸入圖像是圖像金字塔,也就是說對於一張圖片,根據不同的factor進行圖像的縮小。這里的尺寸不固定的意思是說,我們可以使用圖像金字塔中的不同圖像作為輸入。
在P-Net網絡中,我們首席那會設置最小的人臉檢測尺寸,minsize=20(這里)[https://www.cnblogs.com/shine-lee/p/10066049.html]。人臉尺寸小於這個的,我們是不考慮的。
P-Net網絡是1212大小的框來檢測是否具有人臉。這個時候如果我們假設輸入圖像尺寸為100120,這樣我們能夠接受的最小的人臉圖像尺寸就是2020,最大就是100100.
如果想要把最小的20*20縮小到可以被P-Net來識別,我們就需要設定第一個縮小因子為12/20=0.6。同時我們設定圖像金字塔相鄰層縮放比例一致為0.7,這樣大概就是
[0.6,0.42419999999999997,0.29990939999999994,0.2120359458,0.14990941368059996,0.10598595547218417,0.0749320705188342,0.05297697385681578,0.03745472051676876]。
在這個過程中,我們需要保證圖像最小邊長度的大於12.
P-Net返回兩個結果,一個是分類結果,是否含有人臉。一個是回歸結果,返回四個偏移量。在推斷階段,兩個結果同時生成,我們首先對分類結果進行處理,對於大於threshold的值(
這個是我們認為規定的,認為大於這個值的才認為含有人臉),然后我們使用NMS進行候選框的排除(在每個縮放比例的條件下生成的候選框我們都會進行NMS),隨后我們把所有縮放比例之下生成的額候選框進行一個NMS,隨后我們結合offsets對篩選之后的篩選框進行調整。
R-Net
我們把從P-Net中獲得的候選框進行resize到24*24. 然后我們進行卷積核全連接,對每一個候選框進行分類和回歸。首先對候選框進行NMS,然后結合回歸結果進行回歸調整。
O-net
將R-Net的候選框進行resize到48*48,返回三個結果:關鍵點位置,回歸結果,分類結果
人臉檢測--MTCNN從頭到尾的詳解 - 丘學文的文章 - 知乎 這篇文章對於推理過程講解的很好
https://zhuanlan.zhihu.com/p/58825924