論文地址RefineFace: Refinement Neural Network for High Performance Face Detection。
一、概況
RefineFace是基於人臉檢測器RetinaNet改進的,論文的主要貢獻有以下幾點:
- 設計了STR模塊,在high level層粗略地調整anchors的定位和尺寸,爲接下來的迴歸提供更好的初始值。
- 設計了STC模塊,過濾掉low level層大部分簡單的負樣本,以減少分類器的搜索空間。
- 引入了SML模塊,更好的從背景中區分不同尺度的人臉。
- 提出了FSM模塊,使分類任務學習到更有區分性的特徵。
- 構造了RFE模塊,爲檢測極端姿態下的人臉提供不同的感受野。
- 在AFW、PASCAL face、FDDB、MAFA和WIDER FACE數據集上取得state-of-the-art的性能表現。
RefineFace採用的有6-level的特徵金字塔結構的ResNet作爲backbone,從這四個residual blocks提取的特徵圖即是上圖中的C2,C3,C4,C5,而C6和C7則是直接從兩個接在C5之後下采樣的3 x 3卷積層提取。P2,P3,P4,P5特徵圖是從C2,C3,C4,C5引出的旁路分支中提取,P6,P7從P5之後接兩個下采樣的3 x 3卷積層提取的。
- STR:由C5,C6,C7,P5,P6和P7進行two-step的迴歸。
- STC:由C2,C3,C4,P2,P3和P4進行two-step的分類。
- SML:分類損失添加了scale-aware margin來更好的區分背景中不同尺度的人臉。
- FSM:包含一個RoIAlign層,4個3 x 3的卷積層和一個全局平均池化層,採用focal loss,以使backbone分類任務學習到更有區分性的特徵。
- RFE:豐富了用於預測分類和定位目標特徵的感受野。
二、STR
STR模塊的損失函數是
其中,是一個mini-batch中anchor的索引,是anchor 的ground truth類別標籤,anchor 的ground truth的anchor size,是anchor 經過第一步優化的座標,是第二步中的bounding box的座標,和分別是第一步和第二步positive anchors數量,是two-step迴歸選擇的樣本集合,代表的是第二步中的樣本集合。是smooth loss,表示條件爲真的輸出爲1,因此表示忽略負anchors的迴歸損失。
三、STC
STC模塊的損失函數是
其中,和分別是第一步和第二步預測的anchor 屬於人臉的置信度,和分別是第一步和第二步中positive anchors的數量,是two-step分類選擇的樣本集合,和的意義和STR中的相同。二分類損失是人臉和背景兩個類別的sigmoid focal loss。
四、SML
爲了進一步提高分類能力,借鑑了人臉識別中的margin-based loss function
其中,是還沒有經過sigmoid輸出之前的預測值,是加在上的margin,是預測可能性。在此之後被用於分類損失,可以使決策邊界更加有區分性。
但是人臉識別中使用的是固定的margin,在人臉檢測任務中並不適用,因爲人臉的尺度變化很大,爲解決這個問題,論文提出scale-aware margin loss,SML,根據每個樣本的尺度動態調整margin,
其中,是縮放margin的超參數,和分別是樣本的寬和高。大的人臉因爲決策邊界區分性好而不需要較大的margin,相反,小的人臉決策邊界模糊因此需要較大的margin來增強分類能力。
五、FSM
single-shot檢測器學習到的特徵由於misalignment不夠有區分性。
爲解決這一問題,論文設計了feature supervision module, FSM,讓single-shot的backbone 網絡學習更有區分性的特徵。FSM接在backbone網絡之後,使用從anchor box提取的對齊的特徵來分類anchors。
FSM只作用於二分類,作爲一個輔助網絡,它的loss很小,並且不會過分佔用人臉檢測器的訓練。在推理階段並不使用FSM,因此不會帶來額外的負載。
六、RFE
大部分人臉數據集人臉的比例都是1:1左右,但是WIDER FACE數據集中有相當一部分的數據人臉比例超過2或者小於0.5,這時候單一的方形感受野就難以表達了,爲解決這一問題,論文提出Receptive Field Enhancement,RFE,在進行預測類別和位置之前使感受野多樣化。
七、訓練和推理
7.1 數據增強
- 光學扭曲
- 在[1,2]這個區間隨機選擇一個縮放因子,用mean-padding方法擴充圖像
- 裁剪兩個方形patches,隨機選擇其中一個用於訓練。一個patch的大小等於原圖像的短邊,另一個patch的大小是在區間[0.5,1.0]隨機選擇一個數乘以原圖像的短邊
- 將選擇進行訓練的patch進行隨機翻轉,然後resize到1024 x 1024,得到最終的訓練樣本
7.2 Anchor設計
在每個檢測層的每一個位置上有兩個尺度的anchors,和,其中是該檢測層的下采樣因子。以及1.25的長寬比。可以覆蓋輸入圖像的8-362個像素。
7.3 樣本匹配
與ground truth的IoU大於的爲人臉,小於的爲背景,在和直接的忽略。
STR和STC的第一步,,。
STR和STC的第二步,,。
FSM,,。
7.4 Loss Function
7.5 優化
Backbone網絡使用在ImageNet上預訓練好的模型,其他新添加的卷積層使用“xavier”方法初始化。優化器使用SGD,momentum 0.9,weight decay 0.0001,batch size 32。學習率策略是在前5個epochs學習率從逐漸上升至,然後在第120個epochs和130個epochs學習率分別除以10和100。
7.6 推理
在推理階段STC threshold 過濾掉大部分負樣本,經過STR調整anchors位置和尺度之後,保留threshold大於0.05的5000個檢測結果,然後使用NMS保留下大於0.4的750個置信度最高的檢測作爲最後的結果。
八、實驗
實驗中使用的backbone network是ResNet-50。
可以看出各個部分都對最終的AP有貢獻。
SML模塊超參數對AP的影響。
速度精確度對比。