CVPR2016_WIDER FACE
來自專欄人臉檢測6 人贊了文章
本筆記記錄CVPR2016論文wider face,也是現階段人臉檢測最權威的數據集,論文同時提出了人臉檢測演算法Multiscale Cascade CNN;wider face數據集由港中文、商湯科技、中科院深圳先進所聯合發布,鏈接:http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/,包含訓練 / 驗證 / 測試集,性能評估工具,排行榜(benchmark leader boards),參考論文清單等;
名詞定義:
1 MS C-CNN:multi-scale 2-stage cascade CNN,本文提出的針對多尺度人臉的檢測網路;
個人認為論文有三個spotlight:
1 提出人臉檢測數據集wider face,對比現有benchmark數據集,在數據量、標定類型、場景多樣性、人臉尺度、遮擋、姿態方面都提出了很高的挑戰;
2 提出wider face上sota人臉檢測演算法Multiscale Cascade CNN,對比四個benchmark演算法,性能優勢明顯;
3 提出將wider face訓練集用於模型訓練,驗證集測試集用於評估,發現性能提升明顯(如5.2小節),以後也成為各類演算法評估的一個標準:在wider face訓練集上做訓練,驗證集測試集上做評估;
Abstract
1 現階段人臉檢測演算法庫與真實場景中的人臉複雜度還存在差距,我們提出了人臉檢測數據集wider face,以期縮小這種差距;
2 wider face在數據量、標籤量、人臉多樣性(尺度、遮擋、姿態等)上遠超現有數據集,給人臉檢測提出了很大的挑戰;
3 wider face訓練集用於模型訓練,驗證集測試集用於評估,性能提升明顯;
4 復現了四種人臉檢測演算法,作為wider face的benchmark,同時提出Multiscale Cascade CNN,在wider face上是sota,能處理人臉的大尺度變化問題;
5 對一些誤檢、漏檢樣例進行了分析和思考;
1. Introduction
人臉檢測目標很簡單:對一張圖像,告知是否存在人臉,如果存在,返回圖像中所有人臉的位置;V-J演算法雖然已經很牛掰,但面對fig 1中的尺度、遮擋、光照、表情變化、化妝、姿態變化等情形,人臉檢測任務仍然道阻且長;
人臉檢測演算法庫和檢測演算法本身是相互促進的,有了更大規模、與真實場景更接近的演算法庫,才能激發我們設計更好的演算法,解決人臉檢測中的各類挑戰,但當前已有人臉檢測演算法庫都普遍數據規模太小,場景過於單一,無法覆蓋真實場景中的情形;
基於以上情形,本文做出了三個貢獻:
1 提出了wider face數據集,32203張人臉圖像,393703個標註人臉,數據量比當前資料庫高出10倍,且各類場景十分複雜,如fig1;為了深入分析各類誤檢,我們對每個人臉bbox還標註了多屬性:遮擋、姿態、事件等,可以全方位多角度的評估演算法的性能;
3 提出了Multiscale Cascade CNN演算法,使用2-stage、分而治之(divide and conquer)的策略來處理人臉大尺度變化,具體地,我們訓練了若干針對不同尺度輸入的CNN,每個CNN僅需處理特定尺度範圍內的人臉目標即可;---- 算是比較早的探索用不同網路(或分支)專門處理不同尺度目標的演算法了,後面的SSH,ScaleFace、FAN都使用了類似的方法;我的理解就是每個單獨的網路(或分子)都可以被認為是單獨處理某項子任務(特定尺度範圍內)的專家系統,如果一個網路無法覆蓋到所有尺度,那麼多個專家系統,就有點三個臭皮匠,頂個諸葛亮的意思;
3 復現了四種有代表性的人臉檢測演算法(源碼 / 開源庫),作為wider face的benchmark;並分析了在不同參數設置下,這些演算法在wider face的各類誤檢、漏檢案例;
2. Related Work
Brief review of recent face detection methods
人臉檢測演算法可以分為四類:
1 cascade based:V-J:haar feaures + Adaboost classifier + cascade structure + 用於加速haar特徵計算的圖像積分圖;---- integral image to compute Haar-like features in constant time;
2 part based:DPM:使用Latent SVM建模人臉各個部件(器官),及各個部件間的聯繫,對比cascade 方法,在遮擋情形下更加魯棒;
3 channel feature based:主要是基於ACF,結合梯度直方圖、積分直方圖、顏色通道信息等特徵 + boosting classifier + cascade structure用於人臉檢測;
4 neural network based:那就太多了,不一一列舉了;
Existing datasets
wider face與現有人臉檢測數據集對比如table 1;
1 AFW:從Flickr上收集,205張圖像,473個標註人臉,每個標註人臉包含一個矩形bbox、6個landmark,姿態角度等;
2 FDDB:從Yahoo news上收集,2845張圖像,5171個標註人臉,缺點有二:1 都是知名人士的人臉,與真實場景存在偏差(真實場景中沒那麼高頻地集中出現名人,且名人照片拍照水平高,圖像質量高,真實場景圖像質量差異性更大;有些團隊還到網上收集對應名人的樣本以擴充數據集訓練,然後去刷分);2 FDDB使用橢圓框標註,而非矩形bbox,這就導致需要訓練一個矩形bbox到橢圓框的回歸器,增加了額外操作;
3 PASCAL FACE:從pascal voc中包含人類別的圖像中收集,851張圖像,1341個標註人臉;
以上三個數據集,都只能用作評估,因數據量太少,無法應用於模型訓練;
4 AFLW:21997張圖像,25993個標註人臉,包含一個bbox和21個landmark信息,有16k張圖像可以用做訓練;
5 IJB-A:24327張圖像,49759個標註人臉,可用於人臉檢測 + 識別;
6 MALF:5250張圖像,11931個標註人臉,是一個支持細粒度評估的人臉檢測數據集,各種細粒度屬性:遮擋、姿態、表情等;
以上六個數據集,因為數據量本身比較少,場景多樣性不夠,導致現有演算法在這些數據集上都基本快刷到飽和了,wider face就應運而生,讓大家有了個可以刷的新數據集;
3. WIDER FACE Dataset
3.1. Overview
wider face是當前最大規模的人臉檢測數據集,來源於wider數據集;32203張人臉圖像,393703個標註人臉,各類尺度變化、還提供了遮擋、姿態、事件等多標籤;
wider face可以劃分為60類事件,每類事件中的圖像按照:訓練 / 驗證 / 測試:40% / 10% / 50%的比例劃分,共包含兩種訓練 / 測試方案:
1 Scenario-Ext:使用外部數據訓練,不使用wider face訓練集,僅在wider face測試集上評估性能;
2 Scenario-Int:使用wider face訓練 / 驗證集做訓練,在wider face測試集上評估性能;
PS:從官網可知,Scenario-Int參與演算法更多,不增加外部數據的buff,也更加公平對比;
使用pascal voc的評估
評估方案與pascal voc一致,同樣基於mAP;與MALF、CoCo一致,提供訓練 / 驗證集的gt bbox標籤,不提供測試集的gt bbox標籤,
3.2. Data Collection
Collection methodology
wider face是wider數據集的子集,wider數據集圖像收集方式以下三步:
1 從LSCOM的1000個事件類型中定義事件類型,選取和人臉相關的事件;
2 使用google / bing等搜索引擎,每類收集1000 ~ 3000張圖像數據;
3 對步驟2中每類數據做人工清洗,剔除不包含人臉的照片,剔除相似場景圖像,以增加場景多樣性;
最終wider face一共收集32203張圖像;
Annotation policy
如fig 2,我們對wider face中每一個可識別人臉都標定bbox,每個bbox都需要盡量包含前額、下巴、臉頰(遮擋另考慮,請勿抬杠)等,如果人臉被遮擋了,根據人臉尺度估計遮擋部位的大致位置,並做正常標註(with an estimation on the scale of occlusion,如fig 2中藍色框);與pascal voc類似,當由於低解析度、小尺度(高度10 pix以下)導致某個人臉特別難以辨認,我們會對該人臉bbox設置一個「ingore」 flag(可用可不用,比如在pascal voc裡面,我就使用了所有bbox,忽略了這個flag);除了bbox位置框外,我們進一步對每個人臉標註了多個屬性:姿態(典型 / 非典型:typical / atypical)、遮擋(部分遮擋 / 嚴重遮擋:partial / heavy)等;
每個標註框都使用單人標註、雙人交叉驗證的策略;
3.3. Properties of WIDER FACE
我們使用proposals生成方法(generic object proposal approaches),來評估wider face的多維度標籤屬性;通過proposal生成數目 VS. 對應人臉檢出率的對比分析,可以對wider face的困難程度和潛在檢測性能有一個初步分析;
具體地址,我們使用EdgeBox用於生成proposals,因其效率和準確度都不錯;
fig 3表示在不同proposals生成數量的情況下,各個場景人臉檢出率,檢出率越低,難度越大;
Overall
fig 3(a)表明wider face上檢出率較低,人臉檢測難度遠超其他數據集;同時基於EdgeBox的檢出率,將wider face設定為Easy、Medium、Hard三個級別,難度逐級遞增,且數據逐級包含;在8000個proposals時,三個級別檢出率(其實就是人臉召回率)分別為92%、76%、34%;---- 我怎麼記得是按照bbox尺度劃分Easy、Medium、Hard三個級別的?論文里卻告訴我是根據EdgeBox的檢出率?
Scale
fig 3(b),依照人臉尺度(bbox高度 pix)劃分為三個子集:小尺度(10 ~ 50 pix),中尺度(50 ~ 300 pix),大尺度(300 ~),在8000個proposals時,中、大尺度目標可以獲得90%+的檢出率,膽小尺度人臉上,即使是10000個proposals時,召回率不超過30%;
Occlusion
fig 3(c),隨遮擋嚴重程度,檢測性能逐步下降,在8000個proposals時,部分遮擋、嚴重遮擋檢出率低於50%;
wider face對遮擋劃分三個等級:無遮擋、部分遮擋、嚴重遮擋;(no / partial / heavy occlusion);
具體標註為:每個人臉標註兩個bbox:一個全人臉區域標註Sa,一個可視人臉區域標註Ss,遮擋部分佔比So就很容易計算:So = (Sa - Ss) / Sa;
部分遮擋:So:1% ~ 30%;
嚴重遮擋:So:30% ~;
Pose
姿勢分兩類:典型 / 非典型(typical / atypical);
非典型姿勢有兩類:1 俯仰角大於30度;2 水平翻轉角大於90度;
fig 3(d),非典型姿勢檢出難度頗大;
Event
fig 4表示在尺度這個維度,proposals數量固定為10000,不同事件下的平均人臉檢出率(按升序排列);基於排序也可以對事件做easy / medium / hard(41 ~ 60,21 ~ 40,1 ~ 20 classes)的劃分;
wider face包含了60類事件,每個事件對應不同場景,可以在不同維度(scale / occlusion / pose)進行評估,對每個維度都可以根據事件類型計算檢出率,並按檢出率排序,如fig 4;
Effective training source
本小節主要介紹使用wider face作為訓練集的優勢,table 1中,FDDB、AFW、PASCAL FACE都是作為測試集,本身並不提供訓練數據,因此人臉檢測演算法一般都使用ALFW的訓練集訓練,但ALFW設計的初衷是用於人臉landmark定位;此外,ALFW還有兩個問題:
1 ALFW幾乎不包含小尺度、低解析度、遮擋的人臉,人臉多樣性比較差;
2 ALFW背景比較乾淨,背景複雜度不夠;
wider face就厲害了:所有可識別人臉都標註(bbox高10 pix以上),因為基於事件收集的數據,樣本的多樣性也很夠,包含了各類複雜的場景;5.2小節也說明了使用wider face作為訓練集效果棒棒噠;
4. Multi-scale Detection Cascade
本小節介紹為處理wider face中人臉大尺度變化而設計的網路:multi-scale 2-stage cascade CNN,採用分而治之的策略;具體操作:訓練若干人臉檢測器,每個檢測器只檢測特定尺度範圍內的人臉(train a set of face detectors, each of which only deals with faces in a relatively small range of scales,對應fig 5就是每行proposal network -> response map -> proposals -> detecttion network -> detection result一條龍);
這樣每個人臉檢測器就是2-stage操作:
stage-1:通過FCN網路生成multi-scale proposals;---- 這個操作和cascade cnn和mtcnn是很類似的,當然了,cascade cnn是通過圖像金字塔 + 滑窗生成proposals的,mtcnn是通過fcn生成feature map響應圖生成proposals的;傳送門:https://zhuanlan.zhihu.com/p/38339191 + 評論部分;
stage-2:常規操作,類似RPN的多任務,對stage-1的candidate做face / non-face的二分類,同時預測face的bbox;
具體流程如fig 5,缺點:文中沒提,但很明顯了,fig 5中需要4個2-stage的multi-scale模型,訓練很麻煩,而且耗時也估計不小,文中也沒提;
Multi-scale proposal
在proposal network中,為人臉分類 + 尺度分類訓練若干FCN(joint train a set of FCN for face classification and scale classification),如table 2;根據圖像patch尺度將其劃分為四個類(每行代表一類,each row represents a category),在每類中,又繼續劃分為三個子類,這三類根據圖像patch中人臉尺度劃分(對應三列);
每個網路(table 2中每行,共4個網路)使用對應圖像patch尺度的最高尺度範圍做訓練(Each network is trained with image patches with the size of their upper bound scale),舉個栗子:PN1、PN2的圖像patch訓練尺度為30 × 30、120 × 120,那麼圖像patch中人臉尺度就在10 x 10 ~ 30 x 30、30 x 30 ~ 120 × 120範圍內;
尺度標籤:區域中心位置的人臉圖像patch為正樣本(align a face at the center of an image patch as positive sample),對圖像patch中每個人臉尺度細化標籤到每列,舉個栗子:18 x 18人臉,就會被標記至PN1 - class 2(assign a scale class label based on the predefined scale subclasses in each group);
負樣本:從訓練圖像中隨機crop,但必須保證與正樣本的IoU小於0.5;
負樣本的尺度類別標籤設置為 - 1,訓練的時候直接忽略;
批註:尺度分類標籤的作用,按我的認知簡單描述下,如果理解有錯,歡迎指正;首先我們可以發現MS C-CNN是沒有使用anchor的,且沒有使用圖像金字塔,那麼單尺度圖像輸入MS C-CNN,對同時過PN1 ~ PN4,以PN1為例,經過PN1生成響應圖,那麼在響應圖上如何生成proposals?cascade cnn、mtcnn都有圖像金字塔操作,設置最小檢出尺度12 pix,再在圖像金字塔上依次操作;那麼PN1都沒有預定義檢出尺度,那麼就需要依賴尺度分類標籤了:圖像過PN1,生成response map,響應圖上高響應的點就對應10 ~ 30 pix尺度,尺度範圍依然很大,那麼就通過尺度分類標籤,把尺度進一步劃分為class 1 - 3中的一個,然後在賦予該尺度範圍內的最大尺度即可;例如,如果響應圖上某個位置包含人臉,且尺度分類被分為PN1 - class 2了,那麼該位置就有一個20 x 20 pix的proposal;
公式不方便截圖,所以我就上全段落了,比較容易理解,文中以N2為例,所有訓練數據集中圖像patch尺度都為120 × 120,但patch中人臉的尺度範圍為30 x 30 ~ 120 × 120,就可以進一步劃分yi-s的尺度標籤,總loss就是兩個離散分類的交叉熵損失:一個二分類face / non-face,一個三分類尺度class 1 - 3;
Face detection
stage-2對stage-1檢出的proposals做進一步分類篩選和bbox回歸,對每個尺度範圍,通過聯合人臉分類 + bbox回歸的多任務來refine這些proposals,此外,stage-2與stage-1使用相同的網路結構,有相同的輸入尺度;---- 相同的輸入尺度:fig 5中可以看出DN1輸出尺度是30 x 30 pix,也即雖然stage-1檢測的人臉尺度可能是18 x 18,但輸入stage-2的圖像patch相當於做了擴充,擴充至30 x 30 pix作為stage-2的輸入;
人臉分類標籤:正樣本:stage-1 proposal與gt bbox IoU > 0.5;否則負樣本;
bbox回歸,proposal與其最近的gt bbox回歸即可;
負樣本不需要做bbox回歸,那麼bbox回歸的標籤就給了[?1,?1,?1,?1];
Loss:與fast rcnn類似,多任務:分類loss + 回歸loss;人臉分類loss:face / non-face二分類交叉熵損失;bbox回歸loss:不使用fast rcnn的Smooth L1 loss(相對距離絕對值loss),使用歐氏距離loss,相當於相對距離平方loss;
5. Experimental Results
5.1. Benchmarks
第二節中介紹人臉檢測演算法分為四類,本小節選擇四種代表性演算法作為benchmark評估: VJ、ACF 、DPM、Faceness;使用Scenario-Ext方式訓練:使用外部數據訓練,不使用wider face訓練集,僅在wider face測試集上評估性能(used 「as is」 without re-training them on WIDER FACE);使用pascal voc評估標準,使用線性變換將每個演算法的結果轉換為wider face標註格式;
Overall
整體檢測難度如fig 6 (a.1) - (a.3),Faceness性能最好,在hard set上所有演算法AP都沒有超過30%;
Scale
依照人臉bbox高度pix劃分:小尺度(10 ~ 50 pix),中尺度(50 ~ 300 pix),大尺度(300 ~);
只在非遮擋人臉(un-occluded faces only)上評估,結果如fig 6 (b.1) - (b.3),在小尺度數據集上AP未超過12%,說明當前演算法處理小尺度人臉難度頗大;
Occlusion
wider face對遮擋劃分三個等級:無遮擋、部分遮擋、嚴重遮擋;(no / partial / heavy occlusion);
部分遮擋:So:1% ~ 30%;
嚴重遮擋:So:30% ~;
只在bbox高度大於30 pix的人臉上評估,如fig 6 (c.1) - (c.3),在嚴重遮擋數據集上AP未超過14.4%;
Pose
姿勢分兩類:典型 / 非典型(typical / atypical);
非典型姿勢有兩類:1 俯仰角大於30度;2 水平翻轉角大於90度;
只在bbox高度大於30 pix的人臉 && 非遮擋人臉上做評估,結果如fig 6 (d.1) - (d.2),性能最好的Faceness在非典型人臉上AP也不超過20%;
Summary
整體上,四個benchmark演算法在wider face上性能都很一般,同時也有很大提升空間;
5.2. WIDER FACE as an Effective Training Source
本小節評估使用wider face訓練集做模型訓練是否會帶來性能的提升,訓練方式:Scenario-Int,bbox高度大於30 pix的人臉用於訓練;重新訓練的模型表示為:ACF-WIDER、Faceness-WIDER,在wider face測試集和FDDB上評估性能;
WIDER FACE
如fig 7 (a) ~ (c),使用wider face作為訓練集重新訓練的ACF-WIDER、Faceness-WIDER比對應baseline性能都要好;
FDDB
如fig 7 (d),結果與wider face測試集上一致,基於wider face訓練集重新訓練後,模型性能能有所提升;
Event
table 3上使用bbox高度大於30 pix的人臉用於評估,將ACF-WIDER、Faceness-WIDER、ACF、Faceness等四個演算法對wider face上所有60個類別分別進行評估,可以發現60個類中,56個類的性能得到了提升,其中Faceness-WIDER在30個類上有性能提升,ACF-WIDER在26個類上有性能提升,Faceness在4個類上有性能提升;
5.3. Evaluation of Multiscale Detection Cascade
本節評估MS C-CNN的性能;
Two-stage CNN:對比MS C-CNN,stage-1使用一個CNN處理所有尺度的人臉,測試階段,使用圖像金字塔操作,各層圖像輸入stage-1生成多尺度人臉proposals,stage-2與MS C-CNN中stage-2一致;
結果如fig 8,可以發現MS C-CNN在wider face medium / hard集合上性能遠超另外三個演算法,說明MS C-CNN處理多尺度是很厲害的;---- having multiple networks specialized on different scale range is shown effective in comparison to using a single network to handle multiple scales,就是說單尺度模型無法處理所有尺度的人臉目標;----- MS C-CNN這種每個網路分別處理不同尺度範圍的設計,就是本文提出的分而治之(divide and conquer)的思想;
6. Conclusion
1 提出人臉檢測數據集wider face,對比現有benchmark數據集,在數據量、標定類型、場景多樣性、人臉尺度、遮擋、姿態方面都提出了很高的挑戰;
2 復現了四種人臉檢測演算法,作為wider face的benchmark,同時提出Multiscale Cascade CNN,在wider face上是sota,能處理人臉的大尺度變化問題;
3 提出將wider face訓練集用於模型訓練,驗證集測試集用於評估,發現性能提升明顯(如5.2小節),以後也成為各類演算法評估的一個標準:在wider face訓練集上做訓練,驗證集測試集上做評估;
論文參考
1 CVPR2016_Multiscale Cascade CNN_WIDER FACE: A Face Detection Benchmark
推薦閱讀:
※英特爾最新推出的雲端AI晶元將於2019年面世
※機器人搶銀行飯碗時代已來,全面失業潮來臨我們能做什麼?
※人工智慧學習系列(1)
※重磅 | 肖仰華:知識圖譜與認知智能
※不使用殘差連接,ICML新研究靠初始化訓練上萬層標準CNN
TAG:計算機視覺 | 深度學習DeepLearning | 人工智慧 |