CVPR2017_LLE-CNNs_MAFA

CVPR2017_LLE-CNNs_MAFA

來自專欄人臉檢測5 人贊了文章

本次記錄人臉檢測中使用到生成對抗思想的系列文章:

1 arxiv2017_Masquer Hunter;

2 CVPR2017_LLE-CNNs;----- 貌似並沒有用到GANs。。。慚愧了。。。

3 CVPR2018_Finding Tiny Faces in the Wild with Generative Adversarial Network;

我對GANs的理解非常淺薄,會有很多不甚理解的地方,望海涵;

本筆記記錄該系列的第二篇文章:CVPR2017_LLE-CNNs,中科院信息工程研究所和北航聯合作品,不過我讀下來發現LLE-CNNs壓根就沒有使用到生成對抗思想,更沒有使用到GANs。。。很慚愧,做了次標題黨,不過既然都錯了,那就將錯就錯,不改了吧,也督促我今後學習論文仔細點,見諒;

這篇文章有兩個spotlight:

1 提出了遮擋人臉檢測數據集MAFA

2 提出了遮擋人臉檢測演算法LLE-CNNs

LLE-CNNs個人認為的不足之處:

1 實驗做得並不充分,文中僅將LLE-CNNs與6個sota的人臉檢測演算法在MAFA做了測評,並沒有在其他通用人臉檢測數據集如fddb、wider face上評估;因為LLE-CNNs是專門針對遮擋人臉設計的,其他6個sota卻是通用人臉檢測演算法,僅在MAFA上評估得到LLE-CNNs優於6個sota的結論並不公平,最起碼也應該評估下它們在fddb、wider face上的性能,才能得出有說服性的結論;

2 文章並沒有提到耗時的評估,不過個人感覺不算很大,但也沒提到end2end這個關鍵詞,可以看到LLE-CNNs三個module其實還是獨立分開的,特別是Embedding module,是線下獨立於另外兩個模塊生成的,沒法做到end2end的全局優化;

名詞定義:

LLE-CNNs:locally linear embedding - CNNs,基於CNN特徵的局部線性映射,作用:對遮擋人臉上提取的特徵做一個特徵空間的映射(先可以認為是一個黑盒子),使經過映射轉換後的新人臉特徵,能補償被遮擋區域的人臉特徵,抑制遮擋人臉區域的雜訊特徵,這樣就能更精確地檢測遮擋人臉;本文提出的人臉檢測演算法流程圖可以參照fig 5;

Abstract

1 遮擋人臉的檢測非常具有挑戰性,原因有二:

1.1 缺乏一個專門用作遮擋人臉演算法性能評估的數據集;---- fddb、wider face都屬於通用人臉檢測數據集;

1.2 被遮擋的人臉缺乏足夠的面部信息(facial cues)用於人臉檢測;

2 本文做了兩件事:

2.1 提出了遮擋人臉檢測數據集MAFA,30811張圖像,35806個遮擋人臉,圖像中的人臉有各種朝向和遮擋程度,且每張圖像中最少有一個人臉被遮擋;---- 專門評估各類演算法對遮擋人臉檢測性能;

2.2 提出了遮擋人臉檢測演算法LLE-CNNs,包含三個模塊:

2.2.1 Proposal module:用兩個疊層的預訓練CNN模型提人臉proposal(extract candidate facial regions from the input image) + 將proposal內的人臉提高維特徵(high dimensional descriptors);

註:其實思路很簡單:

(1) 輸入圖像,利用mtcnn中的p-net提人臉proposals;

(2) 對每個proposals子圖像,過一遍VGG-Face提4096維的人臉特徵;---- 主要是MAFA上每張圖像人臉不多,如果如wider face上一樣多的話,就面臨著類似RCNN中多個proposals過CNN提特徵的耗時問題了;當然了,也可以如SPPNet、Fast RCNN一樣使用Spatial pyramid pooing、RoI Pooling操作解決;不過這都是後話;

2.2.2 Embedding module:將4096維特徵使用LLE轉為相似描述子(similarity-based descriptor),轉換過程中需要使用到字典(dictionaries,也可以理解為碼本),該字典通過由正常人臉、遮擋人臉、非人臉組成的數據集訓練得來(dictionaries are trained on a large pool of synthesized normal faces, masked faces and non-faces);----- 有個單詞:synthesized:合成的,具體到文中,就是把MAFA、ALFW中的人臉bbox、bg等crop出來;

作者認為經此操作,因遮擋缺失的人臉信息可以得到補償(missing facial cues can be recovered),遮擋區域的非人臉雜訊信息也能得到過濾(noisy cues introduced by diversified masks can be alleviated);

2.2.3 Verification module:類似Fast RCNN中的2nd-stage操作,只包含fc層,將Embedding模塊提取的similarity-based descriptor輸入,聯合分類 + bbox回歸的multi-task,用於進一步篩選人臉candidates + refine bbox;

3 在MAFA上的實驗結果也說明,LLE-CNNs性能棒棒噠,比現有6個sota性能最少超了15.6%,算是碾壓模式了;

1. Introduction

人臉檢測雖被深入研究,取得了不錯的性能,在一些領域也實際落地使用,但遮擋場景下的人臉檢測,卻依舊挑戰重重;

如fig 1,遮擋人臉面臨不同的朝向、遮擋程度各異、遮擋方式各異的問題,現有常規人臉檢測演算法在這種遮擋人臉場景下性能急劇下降,作者認為原因有二:

1 缺乏一個專門用作遮擋人臉演算法性能評估的數據集,無法深入探究各種遮擋場景下被遮擋人臉的內在屬性,得到的模型也無法高效地評估其性能;

2 人臉區域被遮擋的話,該被遮擋區域就無法為檢測器提供有效的特徵信息,而且遮擋區域提供的特徵信息因為根本不是人臉,還會引入雜訊,干擾檢測器的檢測;

那麼現在train / test數據量不夠,提取的特徵還有雜訊,遮擋人臉的檢測就挑戰性頗大了;

本文就專註於這兩個問題,並提供了兩個解決方案:

1 提出了遮擋人臉檢測數據集MAFA,30811張圖像,35806個遮擋人臉,圖像中的人臉有各種朝向和遮擋程度,且每張圖像中最少有一個人臉被遮擋,且每個遮擋人臉還包含6個屬性:locations of faces(就是bbox)、eyes、masks、face orientation、occlusion degree、mask type,都做了人工標定,並9個人做交叉校驗;在高度遮擋的人臉中,大部分人臉屬性都會被遮擋區域淹沒,且遮擋區域形式各異,類內差異性極大;

2 提出了遮擋人臉檢測演算法LLE-CNNs,因遮擋缺失的人臉信息可以得到補償,遮擋區域的非人臉雜訊信息也能得到過濾,包含三個模塊:

2.1 Proposal module:用兩個疊層的預訓練CNN模型提人臉proposal + 對proposal內的人臉使用VGG-Face提4096d的高維特徵;

註:其實思路很簡單:

(1) 輸入圖像,利用mtcnn中的p-net提人臉proposals;

(2) 對每個proposals子圖像,過一遍VGG-Face提4096維的人臉特徵;---- 主要是MAFA上每張圖像人臉不多,如果如wider face上一樣多的話,就面臨著類似RCNN中多個proposals過CNN提特徵的耗時問題了;當然了,也可以如SPPNet、Fast RCNN一樣使用Spatial pyramid pooing、RoI Pooling操作解決;不過這都是後話;

2.2 Embedding module:因為遮擋人臉上提取的人臉特徵將不完整 or 包含遮擋雜訊信息,本模塊將4096維特徵使用LLE轉為相似描述子(similarity-based descriptor),轉換過程中需要使用到字典(dictionaries,也可以理解為碼本),字典內包含有代表性的face / non-face特徵;

該字典通過由正常人臉、遮擋人臉、非人臉組成的數據集訓練得來;----- 有個單詞:synthesized:合成的,具體到文中,就是把MAFA、ALFW中的人臉bbox、bg等crop出來;

作者認為經此操作,因遮擋缺失的人臉信息可以得到補償遮擋區域的非人臉雜訊信息也能得到過濾,人臉區域就可以基於有代表性的正常 / 非正常人臉特徵得到該人臉特徵的相似性得分(candidate region can be characterized by the similarity scores to representative normal faces and nonfaces);

2.3 Verification module:類似Fast RCNN中的2nd-stage操作,只包含fc層,將Embedding模塊提取的similarity-based descriptor輸入,聯合分類 + bbox回歸的multi-task,用於進一步篩選人臉candidates + refine bbox;

本文貢獻有三:

1 提出了遮擋人臉檢測數據集MAFA,在針對遮擋人臉的這個維度上,可以作為額外的訓練數據源,用於探究新的人臉檢測方法;

2 提出了遮擋人臉檢測演算法LLE-CNNs,比現有6個sota性能最少超了15.6%,各種碾壓;

3 對遮擋人臉檢測做了深入分析,分析其挑戰、進一步提升的改進點,對將來的人臉檢測演算法有啟發性意義;

2. Related Work

分兩個維度介紹:人臉檢測數據集、人臉檢測演算法;

2.1. Datasets for Face Detection

早先人臉檢測數據集主要採集於固定 / 限定場景下的圖像,但MALF、IJB-A、CelebA、WIDER FACE等就從互聯網上的真實場景下採集數據了,而且標定信息也更豐富多樣,如FDDB只標註了每個人臉的位置信息,OFD-UCI、MALF、WIDER FACE就提供了更多屬性的標註,如positions、landmarks、gender、poses等;

現有的人臉檢測數據集不僅標註維度更豐富,而且數據量更大,場景更真實,CelebA比FDDB在數量級上大71倍,WIDER FACE比FDDB在數量級上大76倍,這些數據集可以為各類人臉檢測演算法提供更真實、更有挑戰的評估平台,並且基於CNN的人臉檢測演算法也受益於如此海量的訓練數據集;

附各類人臉檢測數據集,來源於wider face:

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就應運而生,讓大家有了個可以刷的新數據集;

2.2. Models for Face detection

現有人臉檢測演算法可以分為以下三類:

1 Boosting-based category

V-J:haar特徵 + adaboost訓練 + cascade疊層分類器,積分圖加速,實時檢測人臉;弊端:手工設計特徵,無法end2end;正臉檢測效果好,側臉、傾斜角臉檢測效果一般;

SURF:在train / test中使用surf特徵訓練multi-view face detector;

NPD:基於尺度不變性 + Normalized Pixel Difference,一個簡單的soft-cascade即可完成高質量的人臉檢測;

boosting-based方法速度都很快,但性能稍微差一點;

2 DPM-based category

ZR:使用tree structured model用於人臉檢測,可以同時預測人臉姿態和定位landmarks;

HH:從AFLW的26000個人臉中訓練DPM-based人臉檢測器,在ALW上AP:97.14%;

HPM:使用hierarchical DPM同時檢測人臉 + keypoint定位;

DPM-based方法性能都優於boosting-based方法,但因為使用了DPM,計算量都普遍比較大,速度就相對慢一點了;

3 CNN-based category

CNN-based檢測器直接從數據中學到人臉特徵,並基於滑窗機制檢測人臉(當然了,不是所有人臉檢測演算法都是使用滑窗方式的);

Cascade CNN:疊層的CNN機制檢測人臉;

multi-view face detector:通過在20w正樣本 + 2000w負樣本上finetune AlexNet,得到multi-view face detector檢測人臉;

Faceness:將整個人臉分解成多個人臉器官(5個CNN模型:hair、eyes、nose、mouth、beard),在每個器官上分別訓練一個attribute-aware CNN,再融合score map,對遮擋人臉、大姿態變化人臉檢測效果良好;缺點:需要額外標定人臉屬性;

CMS-RCNN:上下文相關的多尺度,基於region的人臉檢測;

CNNs + 3D face model:end2end的multi-task框架檢測人臉;

Grid Loss:將Grid Loss層引入CNN,獨立地在feature map上的每個sub-block上最小化誤差,那麼每個sub-part都將擁有自己的判別性,用於遮擋人臉的檢測;

STN:基於cascade CNN,用於自然場景下大姿態變化的人臉檢測;

Hyperface:同時完成人臉檢測,landmark定位,姿態評估、性別識別等muliti-tasl任務,文中證明了各個子任務間協同工作,可以促進每個子任務性能的提升;

總結起來說呢,就是雖然人臉檢測數據集和檢測演算法有很多,但目前還沒有專門針對遮擋人臉檢測這個子任務的深入研究,本文就提出了遮擋人臉檢測數據集MAFA + 遮擋人臉檢測演算法LLE-CNNs,以期拋磚引玉,促進該任務研究的繁榮;

3. MAFA: A Dataset of Masked Faces

首先介紹MAFA數據集的採集、標註流程、標註的各個標籤定義等,然後介紹MAFA上各個維度上的統計信息;

3.1. Dataset Construction

從Google、Bing、Flickr上使用關鍵字:face、mask、occlusion、cover採集300k張包含人臉的圖像,圖像最小尺度:邊長要超過80 pixel,剔除沒有遮擋人臉的圖像;最終獲得30811張圖像,每張圖像最少包含一個遮擋人臉;每張圖像9名標註人員標註(有錢啊~),其中2個人標註人臉bbox,1個人做交叉驗證;一共需為每個人臉標註6個屬性:3個位置類型的標註、3個人臉屬性的標註:

1 Location of faces正方形bbox標註,忽略長度小於32 pixel的bbox + 模糊、極度變形、無法識別眼睛的bbox;這些被忽略的bbox即使被檢出,也不會被認為是true positives、false alarms;

2 Locations of eyes:每個人臉上眼睛的中心點坐標需要標註;

3 Locations of masks:所有遮擋的mask / glasses都會做長方形標註;

4 Face orientation:為每個人臉定義5個朝向:left、front、right、left-front、right-front,通過3名標註人員做投票確定最終結果;

5 Occlusion degree:如fig 2,將人臉劃分為4個主要區域:eyes、nose、mouth、chin,基於這4個區域被遮擋的情況,劃分為3個級別的遮擋:

1 Weak Occlusion:1 ~ 2個區域被遮擋;

2 Medium Occlusion:3個區域被遮擋;

3 Heavy Occlusion:4個區域被遮擋;

6 Mask type:分為4種遮擋類型:

1 Simple Mask:人為地純色遮擋 ---- man-made objects with pure color,翻譯成:人為的,略微有點不恰當,可以理解成:人為有意地遮擋;

2 Complex Mask:人為地複雜紋理或logo的遮擋;

3 Human Body: 被手、頭髮等人體部件的遮擋;

4 Hybrid Mask:1 ~ 3中同時存在的2個以上情況的遮擋;或1 ~ 3中存在1個情況的遮擋 + 眼睛被眼鏡遮擋;

fig 3是MAFA中一張圖像標定的例子,可以發現有3個locations(face、eyes、masks),三個屬性(orientation、occlusion degree、mask type);因為有5個orientations、3個occlusion degrees、4個mask types,MAFA中人臉將呈現出60種遮擋形式,還是非常棒棒噠的;

3.2. Dataset Statistics

標註後的MAFA包含35806個遮擋人臉,最小尺度32 x 32 pixel;

從fig 4(a)中可以發現,[64, 256]尺度範圍人臉佔比最大,平均人臉尺度143 x 143 pixel;

fig 4(b)-(d)中分別統計了MAFA各個維度的人臉屬性,大部分人臉都是front、medium occlusion,遮擋種類也比較豐富;

總體上來說呢,就是MAFA數據量大、多樣性豐富,挑戰性十足,作為benchmark毫無壓力,大家都來使用,提升作者paper的引用量;

4. LLE-CNNs for Masked Face Detection

作者認為遮擋人臉檢測主要是兩個挑戰:

1 因遮擋造成的不完整人臉特徵(incomplete facial cues);

2 因遮擋造成的雜訊特徵(inaccurate features from mask regions);

舉個栗子:一個被遮擋了mouth、chin、nose的left-frontal人臉,大部分facial landmarks是不可見的,基於此遮擋人臉區域生成的特徵自然是引入了mask區域的雜訊,因此重建缺失的人臉特徵 + 抑制雜訊特徵就顯得非常重要;

文中提出KNN-CNNs用於遮擋人臉的檢測,如fig 5:

1 Proposal module:提取人臉proposals + 提取包含mask雜訊的4096維人臉特徵V1;

2 Embedding module:從合成的face / non-face特徵池中檢索與V1最近鄰的特徵,來refine特徵V1,生成特徵向量V2;

3 Verification module:類似Fast RCNN的2nd stage,輸入V2,聯合分類 + bbox回歸;

Proposal Module

用兩個cascading預訓練CNN模型提人臉proposal + 對proposal內的人臉使用VGG-Face提4096d的高維特徵;

其實思路很簡單:

(1) 輸入圖像,利用mtcnn中的p-net(3 conv + 1 softmax)提人臉proposals;因為遮擋人臉比較難以檢出,通過設定較低的閾值啦生成大量的proposals;

(2) 對每個proposals子圖像,過一遍VGG-Face(fc7層)提4096維的人臉特徵,再做正則化操作;---- 主要是MAFA上每張圖像人臉不多,如果如wider face上一樣多的話,就面臨著類似RCNN中多個proposals過CNN提特徵的耗時問題了;當然了,也可以如SPPNet、Fast RCNN一樣使用Spatial pyramid pooing、RoI Pooling操作解決;不過這都是後話;

因為圖像中存在遮擋的人臉,因此通過VGG-Face提取到的特徵,不僅包含人臉特徵,也包含mask區域引入的雜訊信息;

Embedding Module

本論文最重要的一節,看看怎麼做的;

embedding模塊作用:對proposals模塊提取的特徵xi,重建因遮擋缺失的人臉特徵,抑制遮擋區域引入的雜訊特徵;最直觀的解決方案就是:建立一個額外的數據集(包含各類face / non-face提取的特徵),從中找到與xi最相似的特徵vs,並用這些特徵vs來refine xi;文藝點說就是:將proposals所對應的特徵xi映射至由各類有代表性face / non-face提取的特徵所生成的特徵子空間中;

定義D+、D-:包含有代表性normal faces / non-faces特徵的兩個字典;那麼新生成的特徵vi,就可以由xi + LLE(locally linear embedding)操作轉換:

Di:從Di中得到的與xi最近鄰向量組成的子字典(sub-dictionary,nearest neighbors of xi in the columns of Di);

因為確定子字典Di的最優尺度(optimal size of the sub-dictionary)有點困難,因此文中採用了fast approximation of LLE的方式:

D = [D+ D?]:包含faces / non-faces特徵的更大數量級的字典,D的尺度固定,優化起來也容易很多;接下來的問題就是如何確定D+、D-了;

作者引入了三個人臉數據集中的數據:AFLW + CelebA的正常人臉圖像 + MAFA訓練集中25876張遮擋人臉圖像;再對這些圖像使用proposals模塊同樣的操作(對應fig 5中synthesis模塊),獲取各種人臉proposals,並劃分為四個子集:

FN+:normal faces,數據來源於AFLW + CelebA;F0;

FN-:non-faces,數據來源於AFLW + CelebA

FM+:masked faces,數據來源於MAFA訓練集;F1;

FM-:non-faces,數據來源於MAFA訓練集;F2;

因為圖像中人臉存在遮擋的緣故,可能提取的proposals並不準確,不一定都準確地包含了人臉gt,進一步擴充了FN+、FM+中的數據:就是將proposals模塊生成的proposals按25%、50%、75%比例crop出rectangular windows,並擴充至FN+、FM+;

經此操作,normal faces和masked faces數據集的數據擴充了4倍(為毛我覺得是3倍),最後再對擴充後的每個face proposal使用VGG-Face提特徵;

文中假設D+、D-中數據(提取後的人臉特徵,descriptors)分別來源於FN+、FN-;那麼D+包含了FM+中遮擋人臉稀疏編碼的最小誤差與FM-中非人臉編碼的最大誤差minimum error in sparsely encoding the masked faces in FM+ and the maximum error in encoding the non-faces in FM-),D-與之剛好相反;

也即,D+是通過求解公式(3)獲得:

x0、x1、x2:F0、F1、F2的4096維特徵;

Di+:D+的第i個特徵

α1、α2:基於D+,編碼x1、x1中使用到的稀疏因子向量(sparse coefficient vectors)

有了||α1||0 = ||α2||0 = 1和α1 >= 0、α2 >= 0的約束條件,稀疏編碼的過程等價於尋找最近鄰的D+(sparse coding process is equivalent to finding the nearest neighbor D+);

作者認為以上優化問題不同於經典的稀疏編碼問題:因為有了Di+ ∈ {x0 | F0 ∈ FN+}的約束,那麼就比經典的稀疏編碼優化問題更複雜;---- 反正經典的稀疏編碼優化我也搞不清楚怎麼弄得。。。

作者從 {x0 | F0 ∈ FN+}開始,採用一種貪婪演算法來高效地生成D+;

首先計算每個proposals F0 ∈ FN+的cost,註:這個proposals當且僅當被用於編碼FM+中所有masked faces和FM-中所有non-faces時才被用於計算cost(compute the total cost of each proposal F0 ∈ FN+ if it is solely used in encoding all masked faces and non-faces in FM+ and FM-):

通過計算{?(F0) | F0 ∈ FN+},按?(F0)做降序排序,可以得到normal face proposals的降序列表,那麼top-ranked proposals就對應著編碼masked faces最強表達力,和描述nonfaces的最弱表達力(best capability in encoding masked faces and worst capability in describing nonfaces);

那麼最終生成D+的方式為:迭代地選擇top-ranked list中的top-K proposals(文中設置K = 100)進入P,並將其對應的特徵向量將加入D+;

初始化設置P(0) = {},在t - th次迭代中,基於P(t - 1)和新生成的top K proposals生成P(t),那麼P(t)中proposals所對應的特徵向量,用於更新D+,D+再用於計算公式(3)中的objective score;

此外,當P(t)中的proposal n對應的特徵向量未被用於稀疏編碼時,P(t)中的proposal n將會被剔除,也即:

α1n、α2n: α1、α2的n-th個元素;

通過迭代合併新生成的proposals,編碼masked faces和non-faces,並捨棄unused faces,就可以高效地生成字典:該字典可以逐步地最小化編碼masked faces和non-faces的cost(gradually minimize the lost in encoding masked faces and non-faces);

迭代的終止條件:目標得分不再下降 or 達到了預定義的迭代次數(T = 50);

那麼字典D+就得到了有代表性的normal faces特徵,D-生成的方式與之類似,不再贅述;

總結:

整個LLE過程我略微有點迷糊,等將來有空了再仔細研究吧;

Verification Module

類似Fast RCNN中的2nd-stage操作,只包含fc層,將Embedding模塊提取的similarity-based descriptor輸入,聯合分類 + bbox回歸的multi-task;

通過公式(2)和字典D+、D-,將Proposals模塊提取的包含遮擋雜訊信息的人臉proposal特徵,轉為similarity-based vector,再輸入至只包含fc層的verification模塊,來同時完成分類(face / non-face的二分類) + bbox回歸任務(人臉的refineed location + scale);

5. Experiments

本小節先將LLE-CNNs與6個sota的人臉檢測演算法在MAFA評估一把,主要目的是為了看看這些演算法在MAFA上的性能,good / bad case分別是什麼情況,並探索如果想進一步提升對遮擋人臉的檢測性能,各種可以採取的方案;

5.1. Experimental Settings

實驗中選擇了6個sota的人臉檢測演算法與LLE-CNNs做橫向對比:

1 boosting-based:SURF、NPD;

2 DPM-based:ZR、HH、HPM;

3 CNN-based:mtcnn,文中簡稱MT;

文中將MAFA隨機分為兩個split:

train:25876張圖像,29452個標註人臉;

test:4935張圖像,6354個標註人臉;

實驗中評估LLE-CNNs和6個sota在MAFA測試集上的性能,性能如table 1,檢測結果如fig 6,作者指出大部分檢測器在高遮擋 + 偏轉臉(table 1中的Left、Right)的檢測上性能都不好;

這裡有一點需要說明:boosting-based、DPM-based應該是不需要在MAFA上重新訓練,就拿來即可用的,mtcnn可以在MAFA重新訓練一波,或finetune一下再做評估,但實驗中並沒有提及mtcnn是否在MAFA上重新訓練過,如果沒有做重新訓練,那麼mtcnn性能比不上LLE-CNNs就是很正常的了;

5.2. Comparisons with Sota Models

從table 1中可知,LLE-CNNs在MAFA測試集上對其他6個sota都是完勝,LLE-CNNs可以達到AP:76.4%,與之最近的mtcnn,AP:60.8%,並且在orientation、degree of occlusion、mask type共12個條件上都是性能領先;說明了兩點:1 LLE-CNNs真牛逼;2 MAFA真難搞定,進一步說明了建立一個遮擋人臉檢測數據集的重要性,不僅可以作為benchmark,還可以啟發新的演算法;

從table 1中還可以發現,所有演算法對高遮擋的人臉檢測性能都不怎麼好(LLE-CNNs,heavy:22.5%),此外對偏轉人臉的檢測性能也很糟糕(LLE-CNNs,left :17.2%;right:14.3%);

有代表性的檢測結果如fig 6,文中發現特徵提取的魯棒性影響到最終人臉檢測的準確性,LLE-CNNs通過Proposals(VGGFace) + Embedding兩個模塊,可以去除遮擋人臉區域的雜訊,以最有代表性的正常人臉作為參考,得到最有價值的人臉特徵;這樣後續的Verification模塊就可以基於優化後的特徵進一步分類人臉 + bbox調整;

boosting-based方法直接在遮擋的人臉區域上提取heuristic local features,沒有進一步修正這些包含遮擋區域雜訊的人臉特徵,自然檢准率就無法超過LLE-CNNs;

作者認為在遮擋人臉檢測中,擁有魯棒的人臉特徵是第一要義;

NPD:使用尺度不變的特徵(NPD:normalized pixel difference)完成人臉檢測,但AP只有19.6%,因為在遮擋人臉區域該特徵並不是魯棒;

ZR、HH、HPM:這三個DPM-based效果也一般,三者都使用local HoG提特徵,DPM-based方法可以從全局視角上獲得魯棒的人臉拓撲信息,因此在遮擋人臉場景下,其性能是優於NPD的;

MT:基於CNN的人臉特徵來源於圖像本身,儘管特徵會受到遮擋區域雜訊特徵的干擾,但mtcnn性能也優於boosting + DPM-based方法;

作者的結論就是,有了魯棒的特徵,遮擋人臉的檢測就成功了一半,那麼現在MAFA數據集也有了,我們就可以基於該數據集,探索最適合遮擋人臉檢測的特徵了;

6. Conclusion

1 自然場景下的人臉檢測、特別是遮擋人臉的檢測,挑戰性依然很大;

2 本文提出了遮擋人臉檢測數據集MAFA + 遮擋人臉檢測演算法LLE-CNNs,MAFA對現有人臉檢測演算法挑戰性十足,但本文提出的LLE-CNNs還是sota;作者認為基於數據驅動的方法(data-driven framework,意思就是專門搞個特定情形的數據集)是提取高質量人臉特徵、解決遮擋人臉檢測的一種可行性方案;

3 作者認為MAFA在針對遮擋人臉的這個維度上,可以作為額外的訓練數據源,用於探究新的人臉檢測方法;

4 MAFA對每個人臉還標定了多個屬性,如mask type、occlusion degree,在LLE-CNNs中暫未使用,但在將來的研究中作者將進一步探索;

論文參考

CVPR2017_LLE-CNNs_MAFA_Detecting Masked Faces in the Wild with LLE-CNNs


推薦閱讀:

TAG:計算機視覺 | 人工智慧 | 深度學習DeepLearning |