論文閱讀:FaceBoxes: A CPU Real-time Face Detector with High Accuracy


文章: 《FaceBoxes: A CPU Real-time Face Detector with High Accuracy》

Introduction

2個挑戰:

1)在雜亂背景下人臉視角大的變化需要人臉檢測器精准的解決復雜人臉和非人臉的分類問題。

2)較大的搜索空間和人臉尺寸進一步增加了時間效率的需要。

 

傳統方法效率高但在人臉大的視角變化下精度不夠,基於CNN的方法精度高但速度很慢。

受到Faster R-CNN的RPN以及SSD中多尺度機制的啟發,便有了這篇可以在CPU上實時跑的FaceBoxes。

FaceBoxes

(1)RDCL:Rapidly Digested Convolutional Layers,加速計算

  • 縮小輸入的空間大小:為了快速減小輸入的空間尺度大小,在卷積核池化上使用了一系列的大的stride,在Conv1,Pool1,Conv2,Pool2上stride分別是4,2,2,2,RDCL的stride一共是32,意味着輸入的尺度大小被快速減小了32倍。
  • 選擇合適的kernel size:一個網絡開始的一些層的kernel size應該比較小以用來加速,同時也應該足夠大用以減輕空間大小減小帶來的信息損失。Conv1,Conv2和所有的Pool分別選取7*7,5*5,3*3的kernel size。
  • 減少輸出通道數:使用C.ReLU來減少輸出通道數。

 

(2)MSCL:Multiple Scale Convolutional Layers,豐富感受野,使不同層的anchor離散化以處理多尺度人臉

  將RPN作為一個人臉檢測器,不能獲取很好的性能有以下兩個原因:

  1. RPN中的anchor只和最后一個卷積層相關,其中的特征和分辨率在處理人臉變化上太弱。
  2. anchor相應的層使用一系列不同的尺度來檢測人臉,但只有單一的感受野,不能匹配不同尺度的人臉。

  為解決這個問題,對MSCL從以下兩個角度去設計:

    •   Multi-scale design along the dimension of network depth.如下圖,anchor在多尺度的feature map上面取,類似SSD。

       

    • Multi-scale design along the dimension of network width.使用inception模塊,內部使用不同大小的卷積核,可以捕獲到更多的尺度信息。

 

(3)Anchor densification strategy:

 Inception的anchor尺度為32*32,64*64,128*128,Conv3_2、Conv4_2的尺度分別為256*256和512*512。

anchor的間隔和相應的層的stride相等。比如Conv3_2的stride是64、anchor大小為256*256,表示對應輸入圖片每64像素大小有一個256*256的anchor。anchor密度為:

    Adensity = Ascale/Ainterval

Ascale 表示anchor的尺度,Ainterval 表示anchor間隔。默認間隔分別設置為32,32,32,64.根據公式,對應的密度分別為1,2,4,4,4.顯然在不同尺度上anchor的密度不均衡。相比大的anchor(128-512),小的anchor(32和64)過於稀疏,將會導致在小臉檢測中低的召回率。

為解決不均衡問題,此處提出新的anchor策略。為了加大一種anchor的密度,在一個感受野的中心均勻的堆疊n個anchor(本來是1個)用來預測。

文章里對32*32的anchor做了4倍,對64*64的anchor做了2倍,這樣就可以保證不同尺度的anchor有相同的密度。

訓練

Training dataset: WIDER FACE的子集,12880個圖片。

Data augmentation:

  • Color distorition:根據《Some Improvements on Deep Convolutional Neural Network Based Image Classification》
  • Random cropping: 從原圖中隨機裁剪5個方塊patch:一個最大方塊,其他的分別在范圍[0.3,1]之於原圖尺寸。
  • Scale transformation:將隨機裁剪后的方塊patch給resize到1024*1024.
  • Horizontal flipping: 0.5的概率翻轉。
  • Face-box filter: 如果face box的中心在處理后的圖片上,則保持其重疊,然后將高或寬小於20像素的face box過濾出來。

Matching strategy:

在訓練時需要判斷哪個anchor是和哪個face bounding box相關的。首先使用jaccard overlap將每個臉和anchor對應起來,然后對anchor和任意臉jaccard overlap高於閾值(0.35)的匹配起來。

Loss function:

和Faster R-CNN中的RPN用同樣的loss,一個2分類的softmax loss用來做分類,smooth L1用來做回歸。

Hard negative mining:

在anchor匹配后,大多數anchor都是負樣本,導致正樣本和負樣本嚴重不均衡。為了更快更穩定的訓練,將他們按照loss值排序並選取最高的幾個,保證正樣本和負樣本的比例最高不超過3:1.

Other implementation details:

Xavier隨機初始化。優化器SGD,momentum:0.9,weight decay:5e-4,batch size:32,迭代最大次數:120k,初始80k迭代learning rate:1e-3,80-100k迭代用1e-4,,100-120k迭代用1e-5,使用caffe實現。

Experiments

Model analysis

FDDB相比AFW和PASCAL face較為困難,因此這里在FDDB上作分析。

Ablative Setting:

1)去掉anchor densification strategy.

2)把MSCL替換為三層卷積,其大小都為3*3,輸出數都和MSCL中前三個Inception的保持一致.同時,把anchor只和最后一層卷積關聯。

3)把RDCL中的C.ReLU替換為ReLU。

 

結論:

Anchor densification strategy is crucial.

MSCL is better.

RDCL is efficient and accuracy-preserving.

實驗結果:

AFW:

PASCAL face:

FDDB:

 


免責聲明!

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



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