face r-cnn是騰訊ai實驗室的做品,並且登陸過騰訊ai實驗室官網,發現果真碩果累累,不得不佩服。html
人臉檢測雖然相對以前有了不小的進步,但是仍是由於真實世界中人臉圖像的明顯變化致使仍然極具挑戰。
算法
- softmax loss函數:該函數傾向於區分特徵之間的類間可分性,不能獲取類內的緊湊性。
而前人的工做已經證實了對於CNN特徵,不論是類間可分性,仍是類內緊湊性都十分重要。爲了減小類內變化而且拉大類間距離,做者在Faster R-CNN框架的原有loss函數上增長了一個新的loss函數叫作center loss。經過增長center loss,類內變化能夠有效的減少,相對的讓學到的特徵辨別力加強。
爲了進一步提高檢測的準確度,這裏採用了在線硬樣本挖掘(online hard example mining, OHEM)和多尺度訓練策略。網絡
爲了延續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
center loss函數被證實在人臉識別任務中有很好的效果,center loss的基本思想是鼓勵網絡學習辨識性特徵,以此來最小化類內變化,同時擴大類間變化。center 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函數形式以下:
函數
在線硬樣本挖掘(online hard example mining, OHEM)是一個簡單可是十分有效的引導技術。關鍵的想法是收集硬樣本,即那些預測不正確的,將這些樣本輸送給網絡以加強分辨性。由於loss能夠表示當前網絡擬合的程度,因此能夠經過他們的loss將生成的候選框進行排序,而後只提取前N個最差的樣本做爲硬樣本。性能
標準的OHEM會遇到數據不平衡的問題,由於選擇的硬樣本可能其中負樣本的量極可能壓倒性的超過正樣本的量(或者反過來)。而且注意到,當使用center loss的時候,保持正和負的訓練樣本的平衡對於訓練階段來講十分重要。最後,咱們在正樣本和負樣本上分別獨立使用OHEM,並在每一個mini-batch中將正負樣本的比例保持1:1.
在訓練的時候,OHEM與SGD交替的執行。對於一次SGD迭代,OHEM是經過前向一次當前的網絡實現的。而後將選擇的硬樣本在下一次迭代中使用。學習
做者設計了一個多尺度訓練方法:在訓練過程當中,將原始圖片縮放到不一樣尺寸,這樣學到的模型就能更適應小分辨率的人臉;在預測階段,也進行對應的多尺度預測,而後將不一樣尺度下預測的邊界框在結合到最終的輸出中。
咱們使用在基於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。
參考文獻: