face detection[Face R-CNN]



face r-cnn是騰訊ai實驗室的作品,而且登錄過騰訊ai實驗室官網,發現果然碩果累累,不得不佩服。

1 引言

人臉檢測雖然相對之前有了不小的進步,可是還是因為真實世界中人臉圖像的明顯變化導致仍然極具挑戰。

圖1中的人臉就同時包含了遮擋,光照,尺度,姿態和表情。
而隨着近來faster rcnn的流行,也有不少人直接基於此去訓練適合人臉檢測任務的。可是faster rcnn原生態的模型還是有許多不足的,比如

  • softmax loss函數:該函數傾向於區分特征之間的類間可分性,不能獲取類內的緊湊性。

而前人的工作已經證明了對於CNN特征,不管是類間可分性,還是類內緊湊性都十分重要。為了減少類內變化並且拉大類間距離,作者在Faster R-CNN框架的原有loss函數上增加了一個新的loss函數叫做center loss。通過增加center loss,類內變化可以有效的減小,相對的讓學到的特征辨別力增強。
為了進一步提升檢測的准確度,這里采用了在線硬樣本挖掘(online hard example mining, OHEM)多尺度訓練策略

2 結構

為了延續faster rcnn的輝煌,作者:

  • 在該架構上增加了一個新的多任務loss函數去扶助訓練有無人臉的二值分類器;
  • 用在線硬樣本挖掘算法生成硬樣本以供后續處理;
  • 使用多尺度訓練策略去幫助提升檢測性能。

    如圖所示該網絡結構包含一個ConvNet,一個RPN,和一個Fast RCNN模塊:
  • ConvNet:是一個卷積層和最大池化層的堆疊,用來生成卷積feature map;
  • RPN:該模塊生成一系列的矩形區域候選框,這些候選框大概率都包含了人臉。是一個全卷積網絡,構建在卷積feature map上。該RPN的loss層包含一個二值分類層和一個邊界框回歸層;
  • Fast R-CNN:生成的區域候選框會被送入Fast RCNN模塊,並作為ROI區域。ROI層處理這些ROIs去提取固定長度的特征向量。最終輸出到兩個分開的全連接層用於分類和回歸。

face rcnn與經典的faster rcnn的差別不在RPN部分,而是在對應的fast r-cnn中,作者基於一個新提出的center loss,設計了一個新的多任務loss函數。如下面所述。

3 Loss 函數

3.1 center loss

center loss函數被證明在人臉識別任務中有很好的效果,center loss的基本思想是鼓勵網絡學習辨識性特征,以此來最小化類內變化,同時擴大類間變化。center loss的公式:

這里\(x\)表示輸入的特征向量,\(c_{y_i}\)表示第\(y_i\)個類中心。這些類中心是在每次的mini-batch迭代時更新的,所以它可以很容易的通過SGD訓練。對於人臉檢測任務,只有2個中心:有人臉和沒有人臉。我們的目的是最小化類內變化。
center loss支持與softmax loss聯合最優化。而且center loss可以很大程度上減少類內變化,同時softmax loss在最大化類間變化上有些優勢。所以就很自然的將center loss和softmax結合起來去共同推進特征的辨識性。

3.2 多任務loss

對於RPN階段,采用的是多任務loss,該loss是基於結合box-分類loss和box-回歸loss:

  • 分類loss:關於是前景還是背景的二分類的softmax loss;
  • 回歸loss:這里采用的是平滑L1范式。

對於fast r-cnn階段,我們基於之前提到的center loss設計了一個多任務loss。我們使用center loss和softmax loss結合來作為分類任務的loss;然后用平滑L1 loss作為邊界框回歸的任務。整個loss函數形式如下:

這里\(p\)是預測當前候選框是人臉的概率。\(p^*\)是ground-truth,如果為1則表示是正樣本,為0則表示負樣本。t是一個向量,對應着預測邊界框的4個參數化坐標,\(t_*\)是對應的ground-truth。這里平滑L1 用於回歸。超參數\(\lambda,\mu\)用來可能告知三個loss之間的平衡。

3.3 在線硬樣本挖掘

在線硬樣本挖掘(online hard example mining, OHEM)是一個簡單但是十分有效的引導技術。關鍵的想法是收集硬樣本,即那些預測不正確的,將這些樣本輸送給網絡以增強分辨性。因為loss可以表示當前網絡擬合的程度,所以可以通過他們的loss將生成的候選框進行排序,然后只提取前N個最差的樣本作為硬樣本。

標准的OHEM會遇到數據不平衡的問題,因為選擇的硬樣本可能其中負樣本的量很可能壓倒性的超過正樣本的量(或者反過來)。並且注意到,當使用center loss的時候,保持正和負的訓練樣本的平衡對於訓練階段來說十分重要。最后,我們在正樣本和負樣本上分別獨立使用OHEM,並在每個mini-batch中將正負樣本的比例保持1:1.
在訓練的時候,OHEM與SGD交替的執行。對於一次SGD迭代,OHEM是通過前向一次當前的網絡實現的。然后將選擇的硬樣本在下一次迭代中使用。

3.4 多尺度訓練

作者設計了一個多尺度訓練方法:在訓練過程中,將原始圖片縮放到不同尺寸,這樣學到的模型就能更適應小分辨率的人臉;在預測階段,也進行對應的多尺度預測,然后將不同尺度下預測的邊界框在結合到最終的輸出中。

4 實現

4.1 實現細節

我們使用在基於ImageNet上預訓練好的VGG19,在RPN階段,錨是具有多個尺度和長寬比例的:

  • 與ground-truth的IOU超過0.7的視為正樣本;
  • 與ground-truth的IOU低於0.3的視為負樣本。

在fast rcnn階段:

  • 將IOU超過0.5的為正樣本;
  • IOU在0.1到0.5之間的視為負樣本。

在RPN的候選框上需要執行NMS,在其閾值為0.7,一共生成2k個候選框,這些候選框隨后通過OHEM方法選擇硬樣本用於給fast rcnn做訓練。其中RPN的batch-size為256;fast rcnn的batch-size為128.

在預測階段,NMS的閾值為0.3。

參考文獻:

  • [1] [CMS-RCNN] C. Zhu, Y. Zheng, K. Luu, and M. Savvides. CMS-RCNN: Contextual multi-scale region-based cnn for unconstrained face detection. arXiv preprint arXiv:1606.05413, 2014.
  • [2] H. Jiang and E. Learned-Miller. Face detection with the Faster R-CNN. arXiv preprint arXiv:1606.03473, 2016.
  • [3] S. Wan, Z. Chen, T. Zhang, B. Zhang, and K. Wong. Bootstrapping face detection with hard negative examples. arXiv preprint arXiv:1608.02236, 2016.
  • [4] X. Sun, P. Wu, and S. Hoi. Face Detection using Deep Learning: An Improved Faster RCNN Approach. arXiv preprint arXiv:1701.08289, 2016.
  • [5] A. Shrivastava, A. Gupta, and R. Girshick. Training Region-based Object Detectors with Online Hard Example Mining. In IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM