天天看點

人臉檢測——CascadeCNN

本文介紹的人臉檢測方法,來源于2015CVPR《A Convolutional Neural Network Cascade for Face Detection》。本篇文章的方法可以說是對經典的Viola jones方法的深度卷積網絡實作,并沒有讓人眼前一亮的地方,但依然有以下幾點可以學習。

(1)網絡級聯

下圖是該方法的整個流程示意圖,可以明顯看出是3階級聯(12-net、24-net、48-net)。

人臉檢測——CascadeCNN

級聯的工作原理和好處:

1、最初階段的網絡可以比較簡單,判别門檻值可以設得寬松一點,這樣就可以在保持較高召回率的同時排除掉大量的非人臉視窗;

2、最後階段網絡為了保證足夠的性能,是以一般設計的比較複雜,但由于隻需要處理前面剩下的視窗,是以可以保證足夠的效率;

3、 級聯的思想可以幫助我們去組合利用性能較差的分類器,同時又可以獲得一定的效率保證。

下圖展示了,3階段平均剩下的視窗數量及對應的召回率:

人臉檢測——CascadeCNN

(2)多尺度特征

下圖是3階網絡的具體網絡結構:

人臉檢測——CascadeCNN

由上圖可以看出,前2階的網絡都非常簡單,隻有第3階才比較複雜。這不是重點,重點是我們要從上圖中學習多尺度特征組合。

以第2階段的24-net為例,首先把上一階段剩下的視窗resize為24*24大小,然後送入網絡,得到全連接配接層的特征。同時,将之前12-net的全連接配接層特征取出與之拼接在一起。最後對組合後的特征進行softmax分類。

下圖展示了,使用和不使用多尺度特征的差異:

人臉檢測——CascadeCNN

由圖可見,采用多尺度特征可以相同條件下獲得相對較高的召回率,即提升了網絡的分類能力。

(3)校正網絡-将回歸轉化為分類問題

大家應該在整體流程示意圖中注意到了:每一個分類網絡的輸出都會經過一個對應的校正網絡之後,才會被送到下一階段。

該校正網絡是為了解決下面的定位不準的問題的:

人臉檢測——CascadeCNN

在上圖中,藍色框是(如12-net)分類網絡的輸出,紅色框是經過對應的12-calibration-net校正後的輸出。

對于矩形框的校正,我們隻需要3個參數,一個是水準平移量xn,一個是垂直平移量yn,還有一個是寬高縮放比例sn。即我們要将矩形框的控制坐标調整為:

人臉檢測——CascadeCNN

直覺上來看,這是要解決一個回歸問題,需要回歸出3個參數。但是連續的回歸問題是很難解決的,是以文章将此轉化為離散的分類問題。文章首先,将3個參數分别列出一些值:

人臉檢測——CascadeCNN

于是,我們的目标就是建立一個45類的分類器,畢竟神經網絡的強項在于分類。

但是,這個分類器的準确性仍然不是很穩定。是以,文章選擇得分比較高的幾類做平均,最後進行校正,即:

人臉檢測——CascadeCNN

(4)級聯的訓練方法

對于級聯問題,文章采用了特殊的訓練政策。

人臉檢測——CascadeCNN

1、按照一般的方法組織正負樣本訓練第一階段的12-net和12-calibration-net網絡;

2、 利用上述的1層網絡在AFLW資料集上作人臉檢測,在保證99%的召回率的基礎上确定判别門檻值T1。

3、将在AFLW上判為人臉的非人臉視窗作為負樣本,将所有真實人臉作為正樣本,訓練第二階段的24-net和24-calibration-net網絡;

4、重複2和3,完成最後階段的訓練

繼續閱讀