點擊上方「CVer」,選擇加"星標"或「置頂」
重磅乾貨,第一時間送達
作者:Jordan Belfort
https://zhuanlan.zhihu.com/p/112221896
本文已由原作者授權,不得擅自二次轉載
連結:https://arxiv.org/abs/1912.09231
本文總結了CVPR2020百度出品的人臉檢測論文HAMBox,該文章發現了一種有趣的現象,即負樣本anchor相比正樣本anchor而言,居然也有不錯的回歸能力,在inference時,負樣本anchor回歸得到的與gt的IoU大於0.5的框佔到所有與gt的IoU大於0.5的框中的89%!
以下解讀為自己與作者討論後的理解,如有錯漏,歡迎指出。
0. 效果Baidu VIS 新出品的火腿框人臉檢測器(HAMBox: Delving into Online High-quality Anchors Mining for Detecting Outer Faces),刷新了最新的SOTA,將WIDERFACE 驗證集hard子集的AP刷新到恐怖的93.3%,且基於HAMBox獲得了ICCV WIDER Challenge人臉檢測比賽冠軍。該論文被CVPR 2020接收。
1. 介紹1.1 論文詞彙縮寫
OuterFace: 異常人臉,由於人臉尺度過小或者人臉尺度與anchor尺度不匹配,造成訓練時匹配不到足夠多的anchor(小於閾值K),影響了這些人臉的召回。
HAMBox: 不是火腿框,哈哈,即Online High-quanlity Anchor Mining Strategy,即本文最重要的創新點之一。具體含義會在下文中介紹。
high-quality anchor: 如果某個anchor經過網絡回歸後的框與人臉框的ground truth的iou大於0.5,則稱其為高質量anchor。
matched anchor: 在訓練時,與目標人臉的IOU>=0.35的anchor。
unmatched anchor:在訓練時,與目標人臉的IOU<0.35的anchor。
matched high-quality anchors:指那些在訓練階段是matched anchor,且經過網絡回歸後是high-quality anchor的集合。
unmatched high-quality anchors: 指那些在訓練階段是unmatched anchor,且經過網絡回歸後是high-quality anchor的集合。
CPBB: Correctly Predicted Bounding Boxes,如果某個在訓練階段匹配到人臉的anchor經過回歸網絡後,回歸框與gt的iou>0.5,則稱其為CPBB,即matched high-quality anchor回歸後的bounding box。
1.2 主要insight
通過簡要分析論文中的一些圖解,說明作者提出HAMBox的insight。
作者總結出人臉識別中存在的misalignment現象,即每張臉匹配到的平均anchor數目(針對匹配到anchor的人臉而言,未匹配到anchor的人臉不計算)與可以匹配到anchor的人臉數目之間的矛盾,見下圖:
Fig1 人臉檢測中的misalignment現象個人認為圖a中在一定範圍內anchor尺度越大,每張人臉匹配到的anchor數目越多是由於數據分布導致,不能說明普適的檢測任務。
而圖b中則說明,雖然每個匹配到anchor的人臉所匹配到的anchor數目增加了,但是當尺度擴大到一定程度時,未匹配到anchor的人臉比例也增加了。說明單純增大anchor尺度是不可行的。因此,需要合理的anchor設計來提高異常臉(outer face)的匹配。
為了解決這種問題,S3FD提出了一種anchor補償策略(即通過降低匹配閾值來強行為outer face匹配足夠數目的anchor)。然而,通過實驗觀察到,這種補償方法其實引入了大量低質量的anchor,其實表現也不是很好,具體見下圖(b),原文中Fig2(b)。
Fig2 (b) S3FD與HAMBox的anchor質量對比
橄欖色的曲線表示隨著訓練的過程進展,使用S3FD anchor匹配策略回歸的bounding box與真實人臉框GT的平均iou的變化,紫色線表示作者提出的HAMBox方法,暫時按下不表。可以看出S3FD方法中補償匹配到的anchor質量不高,在經過網絡回歸後,與gt的iou平均只有0.4,而作者提出的方法平均iou高達0.8。
本文根據百度之前提出的SOTA方法PyramidBox來探索匹配到人臉的anchor在經過回歸後得到的bounding box的一些統計特徵,發現了一些有趣的現象。比如見下圖(a),原文中Fig2 (a),橫坐標是high-quality anchor(見1.1中的詞彙解釋)與gt的IOU,縱坐標是累計概率分布F(x),當x=0.35時,F(x) = 0.89表示在所有high-quality anchor中,iou < 0.35的部分佔據了89%。由於在訓練階段,anchor匹配的閾值設置為0.35,則說明在所有anchoring過regression之後,high-quality-anchor中只有11%的框是來源於匹配anchor(即訓練時anchor > 0.35, label為1),89%的高質量anchor竟然來源於負anchor!amazing!
Fig2(a) inference階段high-quanlity anchor與gt的iou的累計分布函數上圖證明了 unmatched anchor也有著很好回歸人臉框的潛力。然而,這些負anchor的label被分配為了背景,從而沒有得到合理的監督信號來學習。
基於圖a觀察到的現象,總結出現有anchor補償策略存在的問題:
補償到的anchor大部分是低質量的,可以根據上面Fig2(b)看出,補償anchor回歸後與gt的平均iou僅0.42.
許多在訓練階段的unmatched anchor對人臉框有較強的回歸定位能力,從上圖fig2(a)可以看出在inference階段89%的高質量anchor都是由 unmatched anchor回歸得到的。而從下圖fig2(c)中可以看出,在訓練階段,所有high-quanlity anchor中,有65%是由unmatched anchor 回歸得到的。
Fig2(c) 訓練階段所有high-quanlity anchor中由unmatched anchor回歸得到所佔的比例因此,S3FD的anchor補償策略有缺陷,忽略了unmatched anchor的回歸能力。為了證明unmatched anchor的回歸能力,作者統計了 matched high-quality anchors的表現,見下圖Fig2(d)。
Fig2(d) matched high-quanlity anchor的表現這張圖比較難理解,首先解釋下橫縱坐標和不同色塊的含義。
橫坐標表示不同matched anchor的數目,比如某人臉落在橫坐標2的柱狀圖中表示該人臉在訓練階段匹配到2個anchor。
縱坐標表示人臉個數,比如對於橫坐標2的紅色柱狀圖來說,匹配到2個anchor的人臉的總數為3257。
不同顏色柱體的定義見下:
紅色柱體表示匹配到anchor的人臉數目。
藍色柱體表示紅色柱體的人臉匹配的anchor經過回歸網絡後的框與對應人臉的gt的iou>0.5的總數目,即紅色柱體匹配到的anchor經過網絡後保留下來的high-quality anchor的數目。這裡cpbb表示high-quality anchor經過回歸後的bounding box。
綠色柱體表示藍色柱體經過nms後,剩餘的high-quality anchor的數目。
這裡確實有點繞,我對anchor=1舉例說明下,
紅色柱體為2492說明數據集中匹配到1個anchor的人臉有2492張。這裡很好理解。
然後,紅色柱體中2492張人臉匹配到的2492個anchor經過網絡的bounding box regression分支後得到的框,與對應人臉的iou>0.5的數目,減少到了1968個。因此在這一步,最多只有可能召回1968張人臉,有2492-1968=524張人臉由於原始匹配的框質量較差,難以通過回歸網絡來提升iou,因此無法召回。經過這步驟後,我們只剩下1968個CPBB,即2492個matched anchor經過回歸網絡後,剩下了1968個CPBB。
最後,1968張人臉對應的CPBB經過nms後,只剩下了343張臉,這裡暗藏的關係是1968-343=1625張人臉,是被unmatched anchor召回了,被負樣本的分數抑制了。這1625張人臉不可能是被matched anchor內部互相抑制掉的,因為如果被matched anchor抑制,則肯定會被 matched anchor召回。因此,nms消失的部分,只可能是被unmatched anchor作為負樣本給抑制掉了。這裡有點繞,但是從側面說明了unmatched anchor 對人臉框有著很強的回歸能力。
根據以上觀察,作者提出了HAMBox算法,即為outer face在線匹配更多的high-quality-anchor。簡而言之,該算法隨著訓練進行,逐漸為outer face挖掘high-quality-anchor,從而獲得更好的回歸效果。在挖掘高質量anchor之後,使用regression-aware focal loss來對新補償得到的high-quality anchor的分類分支loss進行加權。HAMBox與一般anchor補償策略的對比見下圖Fig3。
HAMBox在初始訓練階段不對outer face進行anchor補償,之後隨著訓練的進行,逐步挖掘unmatched high-quanlity anchor,從而回歸出與gt的iou更高的框(相比簡單的anchor補償策略而言)。
1.3 小結
這裡的思路有些亂,簡單總結下,作者的主要貢獻為:
發現unmatched anchor有很強的回歸能力。
提出了HAMBox這種anchor在線挖掘策略
提出了regression-aware focal loss來對補償anchor的 分類任務利用IOU實現動態加權重。
2. 算法主要包括anchor補償和focal loss的改進。
2.1 HAMBox anchor補償策略
分為兩個步驟,
將每張臉匹配到那些與它的iou大於某個閾值的anchor,對於outer face不進行補償。
在訓練的每次前向傳播之後,每個anchor通過回歸得到的坐標計算出回歸框,我們將這些回歸框記作 ,異常臉outer face記作 。最後,對於每個outer face,我們計算它與的IOU值,然後對每張outer face補償N個unmatched anchor。記左右的IOUs為 , 這些補償的N個anchor通過下面方式選擇:
(a)IOU要大於閾值T(在線正anchor匹配閾值)
(b)對(a)中得到的anchor進行排序,選擇IOU最大的top-K 個anchor做補償。K是一個超參數,表示每個outer face能matched的最多anchor數目。使用M表示在步驟1中已經匹配的anchor數目。如果N > K-M,則選取top(K-M)個unmatched anchor來補償。
T和K是通過實驗選擇的超參數。具體算法細節見下 Algorithm 1,該算法在訓練的每次前向傳播後執行一次. 作者通過實驗對比,選擇K=3, T=0.8可以取得最優效果。對比結果見下圖:
Table2 不同T和K值對比,說明閾值較大,outer-face匹配到anchor不多時,效果較好。Algorithm1具體見下:
/*
輸入:B,X,T,K,D,L,R,A
B 是一組回歸後的框,格式為(x0, y0, x1, y1)
X 是一組ground truth, 格式為(x0, y0, x1, y1)
T 是上述算法中在線anchor挖掘中定義的閾值
K 是每個outer face能匹配到的最多anchor數目
D 是一個字典,key是ground_truth, value是HAMBox第一步中
該gt能match到的anchor數,即matched_anchor的數目
L 是一個字典,key是anchor index, value是該anchor在HAMBox中最終分配的label
R 是一個字典,key是anchor index, value是該anchor經過普通anchor matching後的編碼後的坐標
A 是一個字典,key是anchor index, value是該anchor的坐標,格式為(x0, y0, x1, y1)
輸出:經過HAMBox後的R和L
*/
// 偽代碼見下
for x_i in x do
if D(x_i) >= K then
continue
end if
compensatedNumber = K - D(x_i)
onlineIoU = IoU(x_i, B),AnchorIdx
sortedOnlineIoU = sorted(onlineIoU, key = IoU, reverse = True)
for IoU, AnchorIdx in sortedOnlineIoU do
if(L(AnchorIdx) = 1) then
continue
endif
compensatedNumber -= 1
L(AnchorIdx) = 1
R(AnchorIdx) = encoded(A(AnchorIdx), x_i)
if compensatedNumber = 0 then
break
endif
endfor
endfor
return R, L該算法很簡單,不言自明。
2.2 Regression Aware Focal loss
一句話總結即,將IOU加到新補償的anchor的focal loss計算中。
且忽略同時滿足下面三個條件的anchor:
屬於high-quality-anchors
在anchor匹配的第一步驟時,label被分配為0
在anchor補償中,沒有被選中
新的focal loss為:
表示iou, com表示補償的anchor, norm表示普通樣本。
表示matched和unmatched low-quality anchor, 表示新補償的anchor。
上式的含義是對補償的anchor採用iou加權的focal loss,對於matched和unmatched low-quality anchor則使用普通的focal loss,注意對於落選的unmached high-quality anchor,這裡是忽略其loss的。
同時,也將補償的HAMBox anchor加入回歸loss,如下所示:
最終在widerface的結果見下:
Table 4中OAM表示online anchor mining, RAL表示regression-aware focal loss為本文最重要的創新點,可以看出其對AP提升明顯(hard 分別提升0.7%, 0.3%),疊加其他trick後(Deep Head, SSH, PyramidAnchor),該算法達到SOTA。
同樣的,在其他benchmark上也是sota,不再贅述。
3. 總結這篇文章利用了unmatched anchor來補償outer face,同時修改了focal loss,思路清奇簡單,效果驚人,與算法名稱相得益彰,果然是火腿框,有料!真香!
另外的思考,能否直接在anchor設計時,不簡單依賴於IOU,設計出更合理的anchor呢?
推薦閱讀
2020年AI算法崗求職群來了(含準備攻略、面試經驗、內推和學習資料等)
重磅!CVer-人臉檢測&識別 交流群已成立
掃碼添加CVer助手,可申請加入CVer-人臉檢測&識別 微信交流群,目前已滿600+人,旨在交流人臉檢測、識別、關鍵點檢測等人臉相關內容。
一定要備註:研究方向+地點+學校/公司+暱稱(如人臉檢測+上海+上交+卡卡),根據格式備註,可更快被通過且邀請進群
▲長按加群
▲長按關注我們
麻煩給我一個在看!