face detection[Face R-CNN]


face r-cnn是騰訊ai實驗室的做品,並且登陸過騰訊ai實驗室官網,發現果真碩果累累,不得不佩服。html

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函數。以下面所述。app

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:ide

  • 分類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
相關文章
相關標籤/搜索