FaceBoxes: 高精度的CPU實時人臉檢測器

論文題目:《FaceBoxes: A CPU Real-time Face Detector with High Accuracy》python

論文連接:https://arxiv.org/pdf/1708.05234.pdfapi

年份:2017網絡

論文做者:Shifeng Zhang等人框架

做者單位:中國科學院自動化研究所等工具

公衆號CVpython同步發佈優化

1. 論文要解決什麼問題?

要保持高精度,還要在CPU上達到實時?還真有點難,可是Shifeng Zhang等人針對這個問題,提出了人臉檢測模型FaceBoxes,表現SOTA。lua

2. FaceBoxes如何解決問題?

FaceBoxes框架如圖1所示,主要包括Rapidly Digested Convolutional Layers (RDCL)和Multiple Scale Convolutional Layers (MSCL)模塊,還有anchor密集策略。blog

img

2.1 RDCL

RDCL的目的是爲了快速下采樣,讓模型可以在CPU上面能達到實時。RDCL採用的方法是縮小空間大小,選擇合適的卷積核大小和減小輸出通道。排序

  • 縮小空間大小:Conv1, Pool1, Conv2 and Pool2 的步長分別是4, 2, 2和 2, 空間大小快速下降了32倍。
  • 合適的卷積核大小:前幾層的一些核應該是比較小,以便加速,可是也應該足夠大,以減輕空間大小減少而帶有的信息丟失(爲何能夠減小信息丟失s)。Conv1, Conv2的核大小爲7x7, 5x5,全部池化層的核大小爲3x3。
  • 減小輸出通道:使用C.ReLU減小輸出通道,操做如圖2(a)所示。由於C.ReLU做者統計發現底層卷積時卷積核存在負相關,也就是說假設咱們原本使用10個卷積核,可是如今只須要用5個卷積核,另外5個卷積核的結果能夠經過負相關獲得。結果代表使用C.ReLU加速的同時也沒損失精度。

img

2.2 MSCL

MSCL是爲了獲得更好地檢測不一樣尺度的人臉。圖片

  • 深度:在MSCL模塊中,隨着網絡的加深,便獲得不一樣大小的特徵映射(多尺度特徵)。在不一樣大小特徵映射中設置不一樣大小的anchor,有利於檢測不一樣大小的人臉。
  • 寬度:Inception由多個不一樣核大小的卷積分支組成。在這些分支中,不一樣的網絡寬度,也有不一樣大小的特徵映射。經過Inception,感覺野也豐富了一波,有利用檢測不一樣大小的人臉。

MSCL在多個上尺度進行迴歸和分類,在不一樣尺度下檢測不一樣大小的人臉,可以大大提升檢測的召回率。

2.3 Anchor密度策略

Inception3的anchor大小爲32,64和128,而Conv3_2和Con4_2的anchor大小分別爲256,512。anchor的平鋪間隔等於anchor對應層的步長大小。例如,Con3_2的步長是64個像素點,anchor大小爲256x256,這代表在輸入圖片上,每隔64個像素就會有一個256x256的anchor。關於anchor的平鋪密度文中是這樣定義的:
$$
A_{density}=A_{scale}/A_{interval}
$$
其中$A_{density}$和$A_{interval}$分別爲anchor的尺度和平鋪間隔。默認的平鋪間隔(等於步長)默分別認爲32,32,32,64和128。因此Inception的平鋪密度分別爲1,2,4,而Con3_2和Con4_2的平鋪密度分別爲4,4。

能夠看出來,不一樣尺度的anchor之間存在平鋪密度不平衡的問題,致使小尺度的人臉召回率比較低,所以,爲了改善小anchor的平鋪密度,做者提出了anchor密度策略。爲了使anchor密集n倍,做者均勻地將$A_{number}=n^2$個anchor鋪在感覺野的中心附近,而不是鋪在中心,如圖3所示。將32x32的anchor密集4倍,64x64的anchor密集兩倍,以保證不一樣尺度的anchor有相同的密度。

image-20201121200018610

2.4 訓練

數據擴增

  • 顏色扭曲
  • 隨機採樣
  • 尺度變換
  • 水平翻轉
  • Face Boxes過濾:通過數據擴增的圖片中,若是face boxes的中心還在圖片上,則保留重疊部分,而後把高或者寬<20的過濾掉(這個操做不是很懂了,爲何把小目標過濾掉?)

匹配策略:訓練期間,須要肯定哪些anchor對應臉部的bounding box,咱們首先用最佳jaccard重疊將每一張臉匹配到anchor,而後將anchor匹配到jaccard重疊大於閾值的任何一張臉。

Loss function: 對於分類,採用softmax loss,而回歸則採用smooth L1 損失。

Hard negative mining:anchor 匹配後,發現不少anchor是負的,這會引入嚴重的正負樣本不平衡。爲了快速優化和穩定訓練,做者對loss進行排序而後選擇最小的,這樣子使得負樣本和正樣本的比例最大3:1。

3 實驗結果如何?

Runtime

image-20201121212045119

Evaluation on benchmark

在FDDB上SOTA。

4.對咱們有什麼指導意義?

  • 要在CPU上達到實時,考慮一開始就對特徵進行快速下采樣。
  • 在淺的卷積層考慮使用CReLU,能夠減小計算量。
  • MSCL告訴咱們,檢測各類不一樣大小的物體,考慮從深度和寬度上豐富感覺野。
  • anchor密度策略告訴咱們考慮anchor密度以提升召回率。

本文由博客羣發一文多發等運營工具平臺 OpenWrite 發佈

相關文章
相關標籤/搜索