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 |