解決這個問題大概有兩種思路:1)盡可能保持住未遮擋區(qū)域的響應(yīng)值,2)把無遮擋區(qū)域降低的響應(yīng)值彌補回來;前者較難,后者則相對容易。一個簡單的做法是讓檢測器學習一個 Spatial-wise Attention,它應(yīng)在無遮擋區(qū)域有更高的響應(yīng),然后借助它以某種方式增強原始的特征圖。
那么,如何設(shè)計這個 Spatial-wise Attention。最簡單考慮,它應(yīng)當是一個 Segmentation Mask 或者 Saliency Map。基于 RetinaNet,F(xiàn)AN 選擇增加一個Segmentation 分支,對于學到的 Score Map,做一個 exp 把取值范圍從 [0, 1] 放縮到[1, e],然后乘以原有的特征圖。為簡單起見,Segmentation 分支只是疊加 2 個 Conv3x3,Loss 采用 Sigmoid Cross Entropy。
FAN 的分層 Attention
這里將面對的一個問題是,Segmentation 分支的 groundtruth 是什么,畢竟不存在精細的 Pixel-level 標注。由于人臉圖像近似橢圓,一個先驗信息是邊界框區(qū)域內(nèi)幾乎被人臉填滿,背景區(qū)域很小;常見的遮擋也不會改變「人臉占據(jù)邊界框絕大部分區(qū)域」這一先驗。基于這一先驗可以直接輸出一個以邊界框矩形區(qū)域為正樣本、其余區(qū)域為負樣本的 Mask,并將其視為一個「有 Noise 的 Segmentation Label」作為實際網(wǎng)絡(luò)的 groundtruth。我們也嘗試根據(jù)該矩形截取一個橢圓作為 Mask,但實驗結(jié)果表明基本沒有區(qū)別。
這樣的 groundtruth 真能達到效果嗎?通過可視化已學到的 Attention Map,發(fā)現(xiàn)它確實可以規(guī)避開部分遮擋區(qū)域,比如一個人拿著話筒講話,Attention Map 會高亮人臉區(qū)域,繞開話筒區(qū)域。我們相信,如果采用更復(fù)雜的手段去清洗 Segmentation Label,實際效果將有更多提高。
FAN 網(wǎng)絡(luò)結(jié)構(gòu)
FAN 在 WIDER Face 上曾經(jīng)保持了半年的 state-of-the-arts。由于僅僅驗證方法的可行性,F(xiàn)AN 沒有疊加任何 trick,只在原始的 RetinaNet 上調(diào)整錨點框,增加我們的 Spatial Attention,因此 FAN 還有很大的上升空間。
WIDER Face 驗證集 的 PR 曲線
FAN 示意圖
定位精度:2018 WIDER Challenge Face Detection
第三部分介紹一下曠視科技奪魁 2018 WIDER Face and Pedestrian Challenge 的解決方案。2018 WIDER Challenge 有 3 個 track,曠視參戰(zhàn)了其中的 Face Detection。更多信息請參見:ECCV 2018 | 曠視科技奪獲人工智能頂賽Wider Challenge人臉檢測冠軍。
2018 WIDER Challenge Face Detection 排名
Face Detection 使用 WIDER Face 數(shù)據(jù)集原始圖像,但是 Label 做了一定 Refine。據(jù)我們統(tǒng)計,Label 數(shù)量稍多于原數(shù)據(jù)集,導致在不對模型做任何更改的情況下,使用新Label 也會比原 Label 漲點(因此筆者建議為公平對比,今后引用 WIDER Face 的論文最好注明是使用了 WIDER Face Label 還是WIDER Challenge Label)。此外,WIDER Challenge 數(shù)據(jù)集不同于 WIDER Face 數(shù)據(jù)集的是,使用了相同于 MS COCO 的Metrics,這意味著對模型的回歸能力提出了更高的要求。
曠視奪冠的方法仍然基于 RetinaNet。通過對比常見 Backbone,我們給出了以下表格的結(jié)果。可以發(fā)現(xiàn),更強的 Backbone 并不意味著更好的 Detection能力。一些 Backbone 分類能力更強,但是提供的 Feature 或者分層 Feature并不夠好;感受野等對 Detection 至關(guān)重要的因素也不合適;對于二分類問題而言也存在過擬合現(xiàn)象。由于實驗周期等原因,我們最后簡單選擇了 ResNet 50 和 DenseNet 121 繼續(xù)后面的實驗。需要聲明的是,它們在很多情況下都不是最優(yōu) Backbone,我們有必要思考何種Backbone 提取的特征最適合做檢測。
不同 Backbone 的比較
我們在 Backbone 上應(yīng)用了 GAP trick,這在上篇知乎專欄(ycszen:語義分割江湖的那些事兒——從曠視說起)有所介紹。該 trick 同樣適用于 Detection。我們還使用了Deformable Conv,但其貢獻主要是擴大 ResNet 原本不高的感受野。
對于 Head 部分,我們首先將 Smooth L1 Loss 換成 IoU Loss,這是為照顧數(shù)據(jù)中占比較多的小臉,但實際分析一下可以發(fā)現(xiàn),在錨點框合適的情況下,IoU Loss 的提升會很微小。我們對 Head 的主要改動是做一個簡單的 Cascade。Cascade R-CNN[12] 是最早通過做 Cascade 提升模型 Regression能力的方法,我們希望將其移植到單步檢測器上。
Cascade R-CNN
可以發(fā)現(xiàn),具體做法部分借鑒了 SFace,即把前一個 Stage 的預(yù)訓練邊界框與 groundtruth 邊界框之間的 IoU 作為下一個 Stage 的 Classification Label;隨著 IoU 逐漸提升,每個 Stage 的 IoU threshold 也逐漸增大,這與 Cascade R-CNN 很類似。
曠視使用的 Single-Stage Cascade 方案
這個 Cascade 方案不難想到,也簡單易行,但是的確漲點,Inference 時也只需保留最后一個 Stage,不會增加 Inference 成本;這個方案也有自己的問題,最大的是每個Stage 在共用同一個 Feature Map,對此已有相關(guān)論文提出改進。
Single-Stage Cascade 的 Ablation Study
此外,我們還在 Data Augmentation、Ensemble 等方面做了改進,由于比較 Trivial,這里不再贅述。我們曾在 ECCV 2018 Workshop 展示過該方案,更多內(nèi)容請查閱 slides:
WIDER Face Challenge workshop.pptx
作者簡介
王劍鋒,北京航空航天大學軟件學院碩士,曠視科技研究院算法研究員,研究方向人臉檢測、通用物體檢測等;人臉檢測算法 SFace 和 FAN 一作;2018 年參加計算機視覺頂會 ECCV 挑戰(zhàn)賽 WIDER Challenge 獲得人臉檢測(Face Detection)冠軍。
2025-04-09 12:40
2025-04-08 08:51
2025-04-07 12:08
2025-04-07 12:07
2025-04-07 12:06
2025-04-07 09:52
2025-04-07 09:49
2025-04-07 09:43
2025-04-03 09:11
2025-04-03 08:56