MTCNN工作原理
論文地址:https://kpzhang93.github.io/MTCNN_face_detection_alignment/paper/spl.pdf
MTCNN是什么
MTCNN,Multi-task convolutional neural network(多任務卷積神經網絡),將人臉區域檢測與人臉關鍵點檢測放在了一起,它的主題框架類似于cascade。總體可分為P-Net、R-Net、和O-Net三層網絡結構。
它是2016年中國科學院深圳研究院提出的用于人臉檢測任務的多任務神經網絡模型,該模型主要采用了三個級聯的網絡,采用候選框加分類器的思想,進行快速高效的人臉檢測。這三個級聯的網絡分別是快速生成候選窗口的P-Net、進行高精度候選窗口過濾選擇的R-Net和生成最終邊界框與人臉關鍵點的O-Net。和很多處理圖像問題的卷積神經網絡模型,該模型也用到了圖像金字塔、邊框回歸、非最大值抑制等技術。
MTCNN實現流程
構建圖像金字塔
首先將圖像進行不同尺度的變換,構建圖像金字塔,以適應不同大小的人臉的進行檢測。
P-Net
全稱為Proposal Network,其基本的構造是一個全卷積網絡。對上一步構建完成的圖像金字塔,通過一個FCN進行初步特征提取與標定邊框,并進行Bounding-Box Regression調整窗口與NMS進行大部分窗口的過濾。
P-Net是一個人臉區域的區域建議網絡,該網絡的將特征輸入結果三個卷積層之后,通過一個人臉分類器判斷該區域是否是人臉,同時使用邊框回歸和一個面部關鍵點的定位器來進行人臉區域的初步提議,該部分最終將輸出很多張可能存在人臉的人臉區域,并將這些區域輸入R-Net進行進一步處理。
這一部分的基本思想是使用較為淺層、較為簡單的CNN快速生成人臉候選窗口。
R-Net
全稱為Refine Network,其基本的構造是一個卷積神經網絡,相對于第一層的P-Net來說,增加了一個全連接層,因此對于輸入數據的篩選會更加嚴格。在圖片經過P-Net后,會留下許多預測窗口,我們將所有的預測窗口送入R-Net,這個網絡會濾除大量效果比較差的候選框,最后對選定的候選框進行Bounding-Box Regression和NMS進一步優化預測結果。
因為P-Net的輸出只是具有一定可信度的可能的人臉區域,在這個網絡中,將對輸入進行細化選擇,并且舍去大部分的錯誤輸入,并再次使用邊框回歸和面部關鍵點定位器進行人臉區域的邊框回歸和關鍵點定位,最后將輸出較為可信的人臉區域,供O-Net使用。對比與P-Net使用全卷積輸出的1x1x32的特征,R-Net使用在最后一個卷積層之后使用了一個128的全連接層,保留了更多的圖像特征,準確度性能也優于P-Net。
R-Net的思想是使用一個相對于P-Net更復雜的網絡結構來對P-Net生成的可能是人臉區域區域窗口進行進一步選擇和調整,從而達到高精度過濾和人臉區域優化的效果。
O-Net
全稱為Output Network,基本結構是一個較為復雜的卷積神經網絡,相對于R-Net來說多了一個卷積層。O-Net的效果與R-Net的區別在于這一層結構會通過更多的監督來識別面部的區域,而且會對人的面部特征點進行回歸,最終輸出五個人臉面部特征點。
是一個更復雜的卷積網絡,該網絡的輸入特征更多,在網絡結構的最后同樣是一個更大的256的全連接層,保留了更多的圖像特征,同時再進行人臉判別、人臉區域邊框回歸和人臉特征定位,最終輸出人臉區域的左上角坐標和右下角坐標與人臉區域的五個特征點。O-Net擁有特征更多的輸入和更復雜的網絡結構,也具有更好的性能,這一層的輸出作為最終的網絡模型輸出。
O-Net的思想和R-Net類似,使用更復雜的網絡對模型性能進行優化。
集成架構及系統思想
MTCNN為了兼顧性能和準確率,避免滑動窗口加分類器等傳統思路帶來的巨大的性能消耗,先使用小模型生成有一定可能性的目標區域候選框,然后在使用更復雜的模型進行細分類和更高精度的區域框回歸,并且讓這一步遞歸執行,以此思想構成三層網絡,分別為P-Net、R-Net、O-Net,實現快速高效的人臉檢測。在輸入層使用圖像金字塔進行初始圖像的尺度變換,并使用P-Net生成大量的候選目標區域框,之后使用R-Net對這些目標區域框進行第一次精選和邊框回歸,排除大部分的負例,然后再用更復雜的、精度更高的網絡O-Net對剩余的目標區域框進行判別和區域邊框回歸。
下面是整個系統的工作流圖
技術細節
FCN(全卷積網絡)
全卷積網絡就是去除了傳統卷積網絡的全連接層,然后對其進行反卷積對最后一個卷積層(或者其他合適的卷積層)的feature map進行上采樣,使其恢復到原有圖像的尺寸(或者其他),并對反卷積圖像的每個像素點都可以進行一個類別的預測,同時保留了原有圖像的空間信息。
同時,在反卷積對圖像進行操作的過程中,也可以通過提取其他卷積層的反卷積結果對最終圖像進行預測,合適的選擇會使得結果更好、更精細。
IoU
對于某個圖像的子目標圖像和對這個子目標圖像進行標定的預測框,把最終標定的預測框與真實子圖像的自然框(通常需要人工標定)的某種相關性叫做IOU(Intersection over Union),經常使用的標準為兩個框的交叉面積與合并面積之和。
Bounding-box regression
解決的問題:
當IOU小于某個值時,一種做法是直接將其對應的預測結果丟棄,而Bounding-Box regression的目的是對此預測窗口進行微調,使其接近真實值。
具體邏輯:
在圖像檢測里面,子窗口一般使用四維向量(x,y,w,h)表示,代表著子窗口中心所對應的母圖像坐標與自身寬高,目標是在前一步預測窗口對于真實窗口偏差過大的情況下,使得預測窗口經過某種變換得到更接近與真實值的窗口。
在實際使用之中,變換的輸入輸出按照具體算法給出的已經經過變換的結果和最終適合的結果的變換,可以理解為一個損失函數的線性回歸。
NMS(非極大值抑制)
顧名思義,非極大值抑制就是抑制不是極大值的元素。在目標檢測領域里面,可以使用該方法快速去掉重合度很高且標定相對不準確的預測框,但是這種方法對于重合的目標檢測不友好。
Soft-NMS
對于優化重合目標檢測的一種改進方法。核心在于在進行NMS的時候不直接刪除被抑制的對象,而是降低其置信度。處理之后在最后統一一個置信度進行統一刪除。
PRelu
在MTCNN中,卷積網絡采用的激活函數是PRelu,帶有參數的帶有參數的Relu,相對于Relu濾除負值的做法,PRule對負值進行了添加參數而不是直接濾除,這種做法會給算法帶來更多的計算量和更多的過擬合的可能性,但是由于保留了更多的信息,也可能是訓練結果擬合性能更好。
我的思考
對于Soft-NMS來說,在進行非極大值抑制的時候,可以結合實際應用場景將部分重合的窗口的置信度與其重合度進行線性或者非線性變換來進行更富有邏輯意義的濾除,而不是簡單的降低置信度之后進行統一濾除。
在進行卷積的時候,是否能夠使用不同大小的卷積核使得卷積網絡更加敏捷,同時保留、突出的特征更多,從而進一步提高算法的精度與效率。
參考文獻
總結
- 上一篇: python3.0 数据类型、万恶的编码
- 下一篇: getLocationOnScreen不