一、MTCNN的原理 搭建人臉識別系統的第一步是 人臉檢測 ,也就是在圖片中找到人臉的位置。在這個過程中,系統的輸入是一張可能含有人臉的圖片,輸出是人臉位置的矩形框,如下圖所示。一般來說,人臉檢測應該可以正確檢測出圖片中存在的所有人臉,不能用遺漏,也不能有錯檢。 獲得包含人臉的矩形框后,第二步要做的就是 人臉對齊(Face Alignment) 。原始圖片中人臉的姿態、位置可能較大的區別,為了之後統一處理,要把人臉"擺正"。為此,需要檢測人臉中的 關鍵點(Landmark) ,如眼睛的位置、鼻子的位置、嘴巴的位置、臉的輪廓點等。根據這些關鍵點可以使用 仿射變換 將人臉統一校準,以盡量消除姿勢不同帶來的誤差,人臉對齊的過程如下圖所示。 這裏介紹一種基於深度卷積神經網絡的人臉檢測和人臉對齊方法----MTCNN,它是基於卷積神經網絡的一種高精度的實時人臉檢測和對齊技術。MT是英文單詞Multi-task的縮寫,意思就是這種方法可以同時完成人臉檢測的人臉對齊兩項任務。相比於傳統方法,MTCNN的性能更好,可以更精確的定位人臉,此外,MTCNN也可以做到實時的檢測。 MTCNN由三個神經網絡組成,分別是 P-Net、R-Net、O-Net 。在使用這些網絡之前,首先要將原始圖片縮放到不同尺度,形成一個"圖像金字塔",如下圖所示。 接着會對每個尺度的圖片通過神經網絡計算一遍。這樣做的原因在於:原始圖片中的人臉存在不同的尺度,如有的人臉比較大,有的人臉比較小。對於比較小的人臉,可以在放大后的圖片上檢測;對於比較大的人臉,可以在縮小后的圖片上進行檢測。這樣,就可以在統一的尺度下檢測人臉了。 現在再來討論第一個網絡P-Net的結構,如下圖所示 P-Net的輸入是一個寬和高皆為12像素,同時是3通道的RGB圖像,該網絡要判斷這個12x12的圖像中是否含有人臉,並且給出人臉框和關鍵點的位置。因此對應的 輸出應該由3部分 組成: (1)第一個部分要判斷該圖像 是否是人臉 (上圖中的face classification),輸出向量的形狀為1x1x2,也就是兩個值,分別為該圖像是人臉的概率,以及該圖像不是人臉的概率。這兩個值加起來應該嚴...