人臉檢測是目前所有目標(biāo)檢測子方向中被研究的最充分的問題之一熔恢,它在安防監(jiān)控磕秤,人證比對乳乌,人機(jī)交互,社交和娛樂等方面有很強(qiáng)的應(yīng)用價(jià)值市咆,也是整個(gè)人臉識(shí)別算法的第一步汉操。
問題描述
人臉檢測的目標(biāo)是找出圖像中所有的人臉對應(yīng)的位置,算法的輸出是人臉外接矩形在圖像中的坐標(biāo)蒙兰,可能還包括姿態(tài)如傾斜角度等信息磷瘤。下面是一張圖像的人臉檢測結(jié)果:
雖然人臉的結(jié)構(gòu)是確定的,由眉毛搜变、眼睛采缚、鼻子和嘴等部位組成,近似是一個(gè)剛體挠他,但由于姿態(tài)和表情的變化扳抽,不同人的外觀差異,光照殖侵,遮擋的影響贸呢,準(zhǔn)確的檢測處于各種條件下的人臉是一件相對困難的事情。
人臉檢測算法要解決以下幾個(gè)核心問題:
人臉可能出現(xiàn)在圖像中的任何一個(gè)位置
人臉可能有不同的大小
人臉在圖像中可能有不同的視角和姿態(tài)
人臉可能部分被遮擋
評價(jià)一個(gè)人臉檢測算法好壞的指標(biāo)是檢測率和誤報(bào)率拢军。我們將檢測率定義為:
誤報(bào)率定義為:
算法要在檢測率和誤報(bào)率之間做平衡贮尉,理想的情況是有高檢測率,低誤報(bào)率朴沿。
經(jīng)典的人臉檢測算法流程是這樣的:用大量的人臉和非人臉樣本圖像進(jìn)行訓(xùn)練猜谚,得到一個(gè)解決2類分類問題的分類器,也稱為人臉檢測模板赌渣。這個(gè)分類器接受固定大小的輸入圖片魏铅,判斷這個(gè)輸入圖片是否為人臉,即解決是和否的問題坚芜。人臉二分類器的原理如下圖所示:
由于人臉可能出現(xiàn)在圖像的任何位置览芳,在檢測時(shí)用固定大小的窗口對圖像從上到下、從左到右掃描鸿竖,判斷窗口里的子圖像是否為人臉沧竟,這稱為滑動(dòng)窗口技術(shù)(sliding window)。為了檢測不同大小的人臉缚忧,還需要對圖像進(jìn)行放大或者縮小構(gòu)造圖像金字塔悟泵,對每張縮放后的圖像都用上面的方法進(jìn)行掃描。由于采用了滑動(dòng)窗口掃描技術(shù)闪水,并且要對圖像進(jìn)行反復(fù)縮放然后掃描糕非,因此整個(gè)檢測過程會(huì)非常耗時(shí)。
由于一個(gè)人臉附件可能會(huì)檢測出多個(gè)候選位置框,還需要將檢測結(jié)果進(jìn)行合并去重朽肥,這稱為非極大值抑制(NMS)禁筏。多尺度滑動(dòng)窗口技術(shù)的原理如下圖所示:
以512x512大小的圖像為例,假設(shè)分類器窗口為24x24衡招,滑動(dòng)窗口的步長為1篱昔,則總共需要掃描的窗口數(shù)為:
即要檢測一張圖片需要掃描大于120萬個(gè)窗口!J继凇旱爆!計(jì)算量驚人,因此有必要采取某種措施提高效率窘茁,具體解決方案本文會(huì)給出怀伦。
典型應(yīng)用
人臉檢測是機(jī)器視覺領(lǐng)域被深入研究的經(jīng)典問題,在安防監(jiān)控山林、人證比對房待、人機(jī)交互、社交等領(lǐng)域都有重要的應(yīng)用價(jià)值驼抹。數(shù)碼相機(jī)桑孩、智能手機(jī)等端上的設(shè)備已經(jīng)大量使用人臉檢測技術(shù)實(shí)現(xiàn)成像時(shí)對人臉的對焦、圖集整理分類等功能框冀,各種虛擬美顏相機(jī)也需要人臉檢測技術(shù)定位人臉流椒,然后才能根據(jù)人臉對齊的技術(shù)確定人臉皮膚、五官的范圍然后進(jìn)行美顏明也。在人臉識(shí)別的流程中宣虾,人臉檢測是整個(gè)人臉識(shí)別算法的第一步。
早期算法
我們將整個(gè)人臉檢測算法分為3個(gè)階段温数,分別是早期算法绣硝,AdaBoost框架,以及深度學(xué)習(xí)時(shí)代撑刺,在接下來將分這幾部分進(jìn)行介紹鹉胖。
早期的人臉檢測算法使用了模板匹配技術(shù),即用一個(gè)人臉模板圖像與被檢測圖像中的各個(gè)位置進(jìn)行匹配够傍,確定這個(gè)位置處是否有人臉甫菠;此后機(jī)器學(xué)習(xí)算法被用于該問題,包括神經(jīng)網(wǎng)絡(luò)冕屯,支持向量機(jī)等寂诱。以上都是針對圖像中某個(gè)區(qū)域進(jìn)行人臉-非人臉二分類的判別。
早期有代表性的成果是Rowley等人提出的方法[1][2]愕撰。他們用神經(jīng)網(wǎng)絡(luò)進(jìn)行人臉檢測刹衫,用20x20的人臉和非人臉圖像訓(xùn)練了一個(gè)多層感知器模型。文獻(xiàn)[1]的方法用于解決近似正面的人臉檢測問題搞挣,原理如下圖所示:
文獻(xiàn)[2]的方法解決多角度人臉檢測問題带迟,整個(gè)系統(tǒng)由兩個(gè)神經(jīng)網(wǎng)絡(luò)構(gòu)成,第一個(gè)網(wǎng)絡(luò)用于估計(jì)人臉的角度囱桨,第二個(gè)用于判斷是否為人臉仓犬。角度估計(jì)器輸出一個(gè)旋轉(zhuǎn)角度,然后用整個(gè)角度對檢測窗進(jìn)行旋轉(zhuǎn)舍肠,然后用第二個(gè)網(wǎng)絡(luò)對旋轉(zhuǎn)后的圖像進(jìn)行判斷搀继,確定是否為人臉。系統(tǒng)結(jié)構(gòu)如下圖所示:
Rowley的方法有不錯(cuò)的精度翠语,由于分類器的設(shè)計(jì)相對復(fù)雜而且采用的是密集滑動(dòng)窗口進(jìn)行采樣分類導(dǎo)致其速度太慢叽躯。
AdaBoost框架
接下來介紹AdaBoost框架之后的方法,boost算法是基于PAC學(xué)習(xí)理論(probably approximately correct)而建立的一套集成學(xué)習(xí)算法(ensemble learning)肌括。其根本思想在于通過多個(gè)簡單的弱分類器点骑,構(gòu)建出準(zhǔn)確率很高的強(qiáng)分類器,PAC學(xué)習(xí)理論證實(shí)了這一方法的可行性谍夭,感謝大神Leslie-Valiant:诘巍!我們首先來看FDDB上各種檢測算法的ROC曲線紧索,接下來的介紹將按照這些ROC曲線上的算法進(jìn)行展開袁辈。
在2001年Viola和Jones設(shè)計(jì)了一種人臉檢測算法[10]。它使用簡單的Haar-like特征和級(jí)聯(lián)的AdaBoost分類器構(gòu)造檢測器珠漂,檢測速度較之前的方法有2個(gè)數(shù)量級(jí)的提高晚缩,并且保持了很好的精度,我們稱這種方法為VJ框架媳危。VJ框架是人臉檢測歷史上第一個(gè)最具有里程碑意義的一個(gè)成果橡羞,奠定了基于AdaBoost目標(biāo)檢測框架的基礎(chǔ),所以作為重點(diǎn)和大家嘮嘮济舆。
用級(jí)聯(lián)AdaBoost分類器進(jìn)行目標(biāo)檢測的思想是:用多個(gè)AdaBoost分類器合作完成對候選框的分類卿泽,這些分類器組成一個(gè)流水線,對滑動(dòng)窗口中的候選框圖像進(jìn)行判定滋觉,確定它是人臉還是非人臉签夭。
在這一系列AdaBoost分類器中,前面的強(qiáng)分類器設(shè)計(jì)很簡單椎侠,包含的弱分類器很少第租,可以快速排除掉大量的不是人臉的窗口,但也可能會(huì)把一些不是人臉的圖像判定為人臉我纪。如果一個(gè)候選框通過了第一級(jí)分類器的篩選即被判定為人臉慎宾,則送入下一級(jí)分類器中進(jìn)行判定丐吓,以此類推。如果一個(gè)待檢測窗口通過了所有的強(qiáng)分類器趟据,則認(rèn)為是人臉券犁,否則是非人臉。下圖是分類器級(jí)聯(lián)進(jìn)行判斷的示意圖:
這種思想的精髓在于用簡單的強(qiáng)分類器在初期快速排除掉大量的非人臉窗口汹碱,同時(shí)保證高的召回率粘衬,使得最終能通過所有級(jí)強(qiáng)分類器的樣本數(shù)很少。這樣做的依據(jù)是在待檢測圖像中咳促,絕大部分都不是人臉而是背景稚新,即人臉是一個(gè)稀疏事件,如果能快速的把非人臉樣本排除掉跪腹,則能大大提高目標(biāo)檢測的效率褂删。
出于性能考慮,弱分類器使用了簡單的Haar-like特征冲茸,這種特征源自于小波分析中的Haar小波變換笤妙,Haar小波是最簡單的小波函數(shù),用于對信號(hào)進(jìn)行均值噪裕、細(xì)節(jié)分解蹲盘。這里的Haar-like特征定義為圖像中相鄰矩形區(qū)域像素之和的差值。下圖是基本Haar-like特征的示意圖:
Haar-like特征是白色矩形框內(nèi)的像素值之和膳音,減去黑色區(qū)域內(nèi)的像素值之和召衔。以圖像中第一個(gè)特征為例,它的計(jì)算方法如下:首先計(jì)算左邊白色矩形區(qū)域里所有像素值的和祭陷,接下來計(jì)算右邊黑色矩形區(qū)域內(nèi)所有像素的和苍凛,最后得到的Haar-like特征值為左邊的和減右邊的和。
這種特征捕捉圖像的邊緣兵志、變化等信息醇蝴,各種特征描述在各個(gè)方向上的圖像變化信息。人臉的五官有各自的亮度信息想罕,很符合Haar-like特征的特點(diǎn)悠栓。
為了實(shí)現(xiàn)快速計(jì)算,使用了一種稱為積分圖(Integral Image)的機(jī)制按价。通過積分圖可以快速計(jì)算出圖像中任何一個(gè)矩形區(qū)域的像素之和惭适,從而計(jì)算出各種類型的Haar-like特征。假設(shè)有一張圖像楼镐,其第i行第j列處的像素值為
癞志,積分圖定義為:
即原始圖像在任何一點(diǎn)處的左上角元素之和。在構(gòu)造出積分圖之后框产,借助于它可以快速計(jì)算出任何一個(gè)矩形區(qū)域內(nèi)的像素之和凄杯,以下圖中的矩形框?yàn)槔?/p>
在上圖中错洁,要計(jì)算黑色矩形框內(nèi)的像素值之和。假設(shè)上面四個(gè)矩形的右下角的坐標(biāo)分別為
黑色色矩形框內(nèi)的像素值之和為:
之所以這樣戒突,是因?yàn)楹谏珔^(qū)域內(nèi)的像素值之和等于這4個(gè)矩形框內(nèi)的像素值之和屯碴,減去上面兩個(gè)矩形框的像素值之和,再減去左邊兩個(gè)矩形框的像素值之和妖谴,這樣做的話窿锉,左上角的矩形框被減了兩遍酌摇,因此要加一遍回來膝舅。在計(jì)算出任何一個(gè)矩形區(qū)域的像素值之和后,可以方便的計(jì)算出上面任何一種Haar-like特征窑多。下圖是通過AdaBoost算法自動(dòng)篩選出來的對區(qū)分人臉和非人臉有用的Haar-like特征仍稀,基本符合人類的直觀感受:
弱分類器采用最簡單的深度很小的決策樹,甚至只有一個(gè)內(nèi)部節(jié)點(diǎn)埂息。決策樹的訓(xùn)練算法此處不做詳細(xì)的闡述技潘,需要注意的是這里的特征向量是稀疏的,即每一棵決策樹只接受少量特征分量的輸入千康,根據(jù)它們來做決策享幽。
強(qiáng)分類器和前面講述的是一樣的,不同的是這里的強(qiáng)分類器加上了一個(gè)調(diào)節(jié)閾值:
其中為閾值拾弃,它通過訓(xùn)練得到值桩。每一級(jí)強(qiáng)分類器在訓(xùn)練時(shí)使用所有的人臉樣本作為正樣本,并用上一級(jí)強(qiáng)分類器對負(fù)樣本圖像進(jìn)行掃描豪椿,把找到的虛警中被判定為人臉的區(qū)域截取出來作為下一級(jí)強(qiáng)分類器的負(fù)樣本。
假設(shè)第i級(jí)強(qiáng)分類器的檢測率和誤報(bào)率分別為
,由于要通過了所有強(qiáng)分類器才被判定為正樣本砚著,因此級(jí)聯(lián)分類器的誤報(bào)率為:
上式表明增加分類器的級(jí)數(shù)可以降低誤報(bào)率,類似的級(jí)聯(lián)分類器的檢測率為:
這個(gè)式子表明增加分類器的級(jí)數(shù)會(huì)降低檢測率痒钝。對于前者,可以理解為一個(gè)負(fù)樣本被每一級(jí)分類器都判定為正樣本的概率鸯隅;對于后者澜建,可以理解為一個(gè)正樣本被所有分類器都判定為正樣本的概率。
在VJ算法問世之后蝌以,較好的解決了近似正面人臉的檢測問題霎奢。此后出現(xiàn)了大量改進(jìn)方案,在深度學(xué)習(xí)技術(shù)出現(xiàn)之前饼灿,一直是人臉檢測算法的主流框架幕侠。這些方案的改進(jìn)主要在以下幾個(gè)方面:
新的特征,包括擴(kuò)展的Haar特征[4]碍彭,ACF特征[15]等晤硕,它們比標(biāo)準(zhǔn)的Haar-like特征有更強(qiáng)的描述能力悼潭,同時(shí)計(jì)算成本也很低。
使用其他類型的AdaBoost分類器舞箍。VJ框架中采用的是離散型的AdaBoost算法舰褪,除此之外,還有實(shí)數(shù)型疏橄,Logit型占拍,Gentle型等各種方案。實(shí)數(shù)型捎迫、Logit型和Gentle型AdaBoost算法不僅能輸出分類標(biāo)簽值晃酒,還能給出置信度,有更高的精度窄绒。
分類器級(jí)聯(lián)結(jié)構(gòu)贝次,如Soft Cascade,將VJ方法的多個(gè)強(qiáng)分類器改成一個(gè)強(qiáng)分類器(該算法后面會(huì)有介紹)彰导。另外蛔翅,檢測處于各種角度和姿態(tài)的人臉是研究另一個(gè)重點(diǎn),VJ方法的分類器級(jí)聯(lián)只有一條路徑位谋,是瀑布模型山析,改進(jìn)的方案有樹狀級(jí)聯(lián),金字塔級(jí)聯(lián)等掏父,篇幅所限這里不做過多解釋笋轨,各種級(jí)聯(lián)方案如下圖所示:
在深度學(xué)習(xí)出現(xiàn)以前工業(yè)界的方案都是基于VJ算法。但VJ算法仍存在一些問題:
1.?Haar-like特征是一種相對簡單的特征损同,其穩(wěn)定性較低翩腐;
2.?弱分類器采用簡單的決策樹,容易過擬合膏燃。因此茂卦,該算法對于解決正面的 人臉效果好,對于人臉的遮擋组哩,姿態(tài)等龙,表情等特殊且復(fù)雜的情況,處理效果不理想(雖然有了一些改進(jìn)方案伶贰,但還是不夠徹底V肱椤!)黍衙。
3.?基于VJ-cascade的分類器設(shè)計(jì)泥畅,進(jìn)入下一個(gè)stage后,之前的信息都丟棄了琅翻,分類器評價(jià)一個(gè)樣本不會(huì)基于它在之前stage的表現(xiàn)----這樣的分類器魯棒性差位仁。
4.?ACF[15](Aggregate Channel Features for Multi-view Face Detection)是一種為分類提供足夠多的特征選擇的方法柑贞。在對原圖進(jìn)行處理后,得到多通道的圖像聂抢,這些通道可以是RGB的通道钧嘶,可以是平滑濾波得到的,可以是x方向y方向的梯度圖等等琳疏。將這些通道合起來有决,在此基礎(chǔ)上提取特征向量后續(xù)采用Soft-Cascade分類器進(jìn)行分類。
相較于VJ-cascade的設(shè)計(jì)空盼,Soft-Cascade采用幾個(gè)改進(jìn)的方案:
1.?每個(gè)stage的決策函數(shù)不是二值而是標(biāo)量值(scalar-valued) ,且與該樣本有多"容易"通過這個(gè)stage以及在這個(gè)stage的相對重要性成比例书幕。
2.?生成的決策函數(shù)是需要通過之前每個(gè)階段的值而不單單是本階段來判定。
3.?文中把檢測器的運(yùn)行時(shí)間-準(zhǔn)確率權(quán)衡通過一個(gè)叫ROC surface的3維曲面清楚的展示出來我注,方便調(diào)節(jié)參數(shù)按咒,可以明確的知道動(dòng)了哪個(gè)參數(shù)會(huì)對這個(gè)檢測器的性能會(huì)有些什么影響迟隅。
DMP模型
DPM(Deformable Part Model)但骨,正如其名稱所述,可變形的組件模型智袭,是一種基于組件的檢測算法奔缠,其所見即其意。該模型由Felzenszwalb在2008年提出吼野,并發(fā)表了一系列的CVPR校哎,NIPS會(huì)議。并且還拿下了2010年瞳步,PASCAL VOC的“終身成就獎(jiǎng)”闷哆。
由于DPM算法[16]本身是一種基于組件的檢測算法,所以對扭曲单起,性別抱怔,多姿態(tài),多角度等的人臉都具有非常好的檢測效果(人臉通常不會(huì)有大的形變嘀倒,可以近似為剛體,基于DMP的方法可以很好地處理人臉檢測問題)屈留。
DPM的方法采用的是FHOG進(jìn)行特征的提取,作者對HOG進(jìn)行了很大的改動(dòng)测蘑,沒有直接采用4*9=36維向量灌危,而是對每個(gè)8x8的cell提取18+9+4=31維特征向量。作者還討論了依據(jù)PCA(Principle Component Analysis)可視化的結(jié)果選9+4維特征碳胳,能達(dá)到HOG 4*9維特征的效果勇蝙。基于DPM的方法在戶外人臉集上都取得了比Viola-Jones更好的效果挨约,但是由于該模型過于復(fù)雜味混,判斷時(shí)計(jì)算復(fù)雜藕帜,很難滿足實(shí)時(shí)性的要求。后續(xù)有了一些列改進(jìn)的流程惜傲,比如加入級(jí)聯(lián)分類器洽故,針對特征計(jì)算采用了積分圖的方法等,但都還沒有達(dá)到VJ方法的效率盗誊。
DPM模型一個(gè)大的問題是速度太慢时甚,因此在工程中很少使用,一般采用的是AdaBoost框架的算法哈踱。
基于經(jīng)典的人工設(shè)計(jì)特征本身穩(wěn)定性并不穩(wěn)定荒适,容易受外界環(huán)境的影響(光照、角度开镣、遮擋等)刀诬,所以在復(fù)雜場景下的人臉檢測性能很難的到保證,只能應(yīng)用到受限的場景中邪财。深度學(xué)習(xí)出現(xiàn)以后陕壹,DCNN(深度卷積神經(jīng)網(wǎng)絡(luò))能很好的學(xué)習(xí)到圖像中目標(biāo)物各個(gè)層級(jí)的特征,對外界的抗干擾能力更強(qiáng)树埠,后序的人臉檢測方法基本都基于DCNN的特征來優(yōu)化了糠馆。
基于深度學(xué)習(xí)的方法在FDDB上基本飽和了,是時(shí)候拋出一個(gè)新的benchmark了T醣铩S致怠!
WIDERFace測試集上各種算法的性能:
深度學(xué)習(xí)框架
卷積神經(jīng)網(wǎng)絡(luò)在圖像分類問題上取得成功之后很快被用于人臉檢測問題绊袋,在精度上大幅度超越之前的AdaBoost框架毕匀,當(dāng)前已經(jīng)有一些高精度、高效的算法癌别。直接用滑動(dòng)窗口加卷積網(wǎng)絡(luò)對窗口圖像進(jìn)行分類的方案計(jì)算量太大很難達(dá)到實(shí)時(shí)皂岔,使用卷積網(wǎng)絡(luò)進(jìn)行人臉檢測的方法采用各種手段解決或者避免這個(gè)問題。
Cascade CNN
Cascade CNN[17]可以認(rèn)為是傳統(tǒng)技術(shù)和深度網(wǎng)絡(luò)相結(jié)合的一個(gè)代表规个,和VJ人臉檢測器一樣凤薛,其包含了多個(gè)分類器,這些分類器采用級(jí)聯(lián)結(jié)構(gòu)進(jìn)行組織诞仓,然而不同的地方在于缤苫,Cascade CNN采用卷積網(wǎng)絡(luò)作為每一級(jí)的分類器。
構(gòu)建多尺度的人臉圖像金字塔墅拭,12-net將密集的掃描這整幅圖像(不同的尺寸)活玲,快速的剔除掉超過90%的檢測窗口,剩下來的檢測窗口送入12-calibration-net調(diào)整它的尺寸和位置,讓它更接近潛在的人臉圖像的附近舒憾。
采用非極大值抑制(NMS)合并高度重疊的檢測窗口镀钓,保留下來的候選檢測窗口將會(huì)被歸一化到24x24作為24-net的輸入,這將進(jìn)一步剔除掉剩下來的將近90%的檢測窗口镀迂。和之前的過程一樣丁溅,通過24-calibration-net矯正檢測窗口,并應(yīng)用NMS進(jìn)一步合并減少檢測窗口的數(shù)量探遵。
將通過之前所有層級(jí)的檢測窗口對應(yīng)的圖像區(qū)域歸一化到48x48送入48-net進(jìn)行分類得到進(jìn)一步過濾的人臉候選窗口窟赏。然后利用NMS進(jìn)行窗口合并,送入48-calibration-net矯正檢測窗口作為最后的輸出箱季。
12x12涯穷,24x24,48x48尺寸作為輸入的分類CNN網(wǎng)絡(luò)結(jié)構(gòu)藏雏,其中輸出為2類-人臉和非人臉拷况。
12x12,24x24掘殴,48x48尺寸作為輸入的矯正(calibration)CNN網(wǎng)絡(luò)結(jié)構(gòu)赚瘦。其中輸出為45中種矯正模式的類別。
文中影響區(qū)域位置和大小的因素有三種:尺度杯巨、X方向偏移蚤告、Y方向偏移努酸》總共構(gòu)成了5x3x3=45種模式。
上一級(jí)檢測網(wǎng)絡(luò)輸出的人臉位置(x,y,w,h)通過以下公式進(jìn)行校正:
校正網(wǎng)絡(luò)的結(jié)構(gòu)如下圖所示:
Cascade CNN一定程度上解決了傳統(tǒng)方法在開放場景中對光照获诈、角度等敏感的問題仍源,但是該框架的第一級(jí)還是基于密集滑動(dòng)窗口的方式進(jìn)行窗口過濾,在高分辨率存在大量小人臉(tiny face)的圖片上限制了算法的性能上限舔涎。
DenseBox
文獻(xiàn)[18]提出了一種稱為DenseBox的目標(biāo)檢測算法笼踩,適合人臉這類小目標(biāo)的檢測。這種方法使用全卷積網(wǎng)絡(luò)亡嫌,在同一個(gè)網(wǎng)絡(luò)中直接預(yù)測目標(biāo)矩形框和目標(biāo)類別置信度嚎于。通過在檢測的同時(shí)進(jìn)行關(guān)鍵點(diǎn)定位,進(jìn)一步提高了檢測精度挟冠。
檢測時(shí)的流程如下:
1.?對待檢測圖像進(jìn)行縮放于购,將各種尺度的圖像送入卷積網(wǎng)絡(luò)中處理,以檢測不同大小的目標(biāo)知染。
2.?經(jīng)過多次卷積和池化操作之后肋僧,對特征圖像進(jìn)行上采樣然后再進(jìn)行卷積,得到最終的輸出圖像,這張圖像包含了每個(gè)位置出現(xiàn)目標(biāo)的概率嫌吠,以及目標(biāo)的位置止潘、大小信息。
3.?由輸出圖像得到目標(biāo)矩形框辫诅。
4.?非最大抑制凭戴,得到最終的檢測結(jié)果。
第一個(gè)分量是候選框是一個(gè)目標(biāo)的置信度炕矮,后面4項(xiàng)分別為本像素的位置與矩形框左上角簇宽、右下角的距離。每個(gè)像素都轉(zhuǎn)化成一個(gè)矩形框和置信度值吧享,然后對置信度值大于指定閾值的矩形框進(jìn)行非最大抑制魏割,得到最終檢測結(jié)果。
backbone從VGG 19網(wǎng)絡(luò)改進(jìn)得到钢颂,包含16個(gè)卷積層钞它。前12個(gè)卷積層用VGG 19的模型進(jìn)行初始化。卷積層conv4_4的的輸出被送入4個(gè) 的卷積層中殊鞭。第一組的兩個(gè)卷積層產(chǎn)生1通道的輸出圖像作為置信度得分遭垛;第二組的兩個(gè)卷積層產(chǎn)生4通道的輸出圖像作為矩形框的4個(gè)坐標(biāo)。網(wǎng)絡(luò)的輸出有兩個(gè)并列的分支操灿,分別表示置信度和矩形框位置預(yù)測值锯仪。整個(gè)網(wǎng)絡(luò)的結(jié)構(gòu)如下圖所示:
DenseBox的網(wǎng)絡(luò)結(jié)構(gòu)
為了提高檢測精度,采用了多尺度融合的策略趾盐。將conv3_4和conv_4_4的卷積結(jié)果拼接起來送入后面處理庶喜。由于兩個(gè)層的輸出圖像大小不同,在這里用了上采樣和線性插值對小的圖像進(jìn)行放大救鲤,將兩種圖像尺寸變?yōu)橄嗟取?/p>
總損失函數(shù)為這兩部分加權(quán)求和久窟。訓(xùn)練時(shí)樣本標(biāo)注方案如下:對于任何一個(gè)位置,如果它和真實(shí)目標(biāo)矩形框的重疊比大于指定閾值本缠,則標(biāo)注為1斥扛,否則標(biāo)注為0;對位置的標(biāo)注根據(jù)每個(gè)像素與目標(biāo)矩形框4條邊的距離計(jì)算丹锹。
Faceness-Net
Faceness-Net[19]是一個(gè)典型的由粗到精的工作流稀颁,借助了多個(gè)基于DCNN網(wǎng)絡(luò)的facial parts分類器對人臉進(jìn)行打分,然后根據(jù)每個(gè)部件的得分進(jìn)行規(guī)則分析得到Proposal的人臉區(qū)域楣黍,最后通過一個(gè)Refine的網(wǎng)絡(luò)得到最終的人臉檢測結(jié)果匾灶。整體流程如圖 Faceness(b)。
Faceness(a)
Faceness(b&c)
系統(tǒng)主要包含了2個(gè)階段:
第1階段:生成partness map锡凝,由局部推理出人臉候選區(qū)域粘昨。
根據(jù)attribute-aware深度網(wǎng)絡(luò)生成人臉部件map圖(partness map),如上圖Faceness(a)中的顏色圖,文章共使用了5個(gè)部件:hair,eye,nose,mouth,beard. 通過part的結(jié)合計(jì)算人臉的score.部件與部件之間是有相對位置關(guān)系的,比如頭發(fā)在眼睛上方,嘴巴在鼻子下方,因此利用部件的spatial arrangement可以計(jì)算face likeliness. 通過這個(gè)打分對原始的人臉proposal進(jìn)行重排序. 如圖Faceness(b)张肾。
第2階段:Refining the face hypotheses芭析。
上一階段proposal生成的候選框已經(jīng)有較高的召回率,通過訓(xùn)練一個(gè)人臉分類和邊界回歸的CNN可以進(jìn)一步提升其效果吞瞪。
Faceness的整體性能在當(dāng)時(shí)看來非常令人興奮馁启。此前學(xué)術(shù)界在FDDB上取得的最好檢測精度是在100個(gè)誤檢時(shí)達(dá)到84%的檢測率,F(xiàn)aceness在100個(gè)誤檢時(shí)芍秆,檢測率接近88%惯疙,提升了幾乎4個(gè)百分點(diǎn);除了算法本身的精度有很大提升妖啥,作者還做了很多工程上的優(yōu)化比如:通過多個(gè)網(wǎng)絡(luò)共享參數(shù)霉颠,降低網(wǎng)絡(luò)參數(shù)量 83%;采用多任務(wù)的訓(xùn)練方式同一網(wǎng)絡(luò)實(shí)現(xiàn)不同任務(wù)等荆虱。
MTCNN
MTCNN[20]顧名思義是多任務(wù)的一個(gè)方法蒿偎,它將人臉區(qū)域檢測和人臉關(guān)鍵點(diǎn)檢測放在了一起,同Cascade CNN一樣也是基于cascade的框架怀读,但是整體思路更加巧妙合理诉位,MTCNN總體來說分為三個(gè)部分:PNet、RNet和ONet菜枷,如下圖所示:
Cascade CNN第一級(jí)的12-net需要在整張圖片上做密集窗口采樣進(jìn)行分類苍糠,缺陷非常明顯;MTCNN在測試第一階段的PNet是全卷積網(wǎng)絡(luò)(FCN)啤誊,全卷積網(wǎng)絡(luò)的優(yōu)點(diǎn)在于可以輸入任意尺寸的圖像岳瞭,同時(shí)使用卷積運(yùn)算代替了滑動(dòng)窗口運(yùn)算,大幅提高了效率坷衍。下圖為不同尺度圖像經(jīng)過PNet的密集分類響應(yīng)圖寝优,亮度越高代表該區(qū)域是人臉的概率越大(dense prediction response map)。
除了增加人臉5個(gè)關(guān)鍵點(diǎn)的回歸任務(wù)枫耳,另外在calibration階段采用了直接回歸真實(shí)位置坐標(biāo)的偏移量的思路替代了Cascade CNN中的固定模式分類方式,整個(gè)思路更為合理孟抗。
MTCNN的整體設(shè)計(jì)思路很好迁杨,將人臉檢測和人臉對齊集成到了一個(gè)框架中實(shí)現(xiàn),另外整體的復(fù)雜度得到了很好的控制凄硼,可以在中端手機(jī)上跑20~30FPS铅协。該方法目前在很多工業(yè)級(jí)場景中得到了應(yīng)用。
先拋出一張據(jù)說是目前世界上人數(shù)最多的合照嚇嚇大家摊沉。一眼望過去能估計(jì)下有多少人嗎狐史?因?yàn)楸疚膶π∧繕?biāo)人臉檢測有很多獨(dú)到的理解,我們下面會(huì)多花點(diǎn)筆墨去分析!
HR
之前我們講過的一些方法都沒有針對小目標(biāo)去分析骏全,小目標(biāo)檢測依然是檢測領(lǐng)域的一個(gè)難題苍柏,[21]本文作者提出的檢測器通過利用尺度,分辨率和上下文多種信息融合來檢測小目標(biāo)姜贡,在上圖的總共1000個(gè)人臉中成功檢測到約800個(gè)试吁,檢測器的置信度由右側(cè)的色標(biāo)表示。
針對小目標(biāo)人臉檢測楼咳,作者主要從三個(gè)方面做了研究:尺度不變熄捍,圖像分辨率和上下文,作者的算法在FDDB和WIDERFace取得了當(dāng)時(shí)最好的效果母怜。
作者分析了小目標(biāo)人臉檢測的三個(gè)問題:
問題1:Multi-task modeling of scales
一方面余耽,我們想要一個(gè)可以檢測小人臉的小模板;另一方面苹熏,我們想要一個(gè)可以利用詳細(xì)特征(即面部)的大模板來提高準(zhǔn)確性宾添。取代“一刀切”的方法,作者針對不同的尺度(和縱橫比)分別訓(xùn)練了檢測器柜裸。雖然這樣的策略提升了大目標(biāo)檢測的準(zhǔn)確率缕陕,但是檢測小目標(biāo)仍然具有挑戰(zhàn)性。
問題2:How to generalize pre-trained networks?
關(guān)于小目標(biāo)檢測的問題疙挺,作者提出了兩個(gè)見解扛邑。
如何從預(yù)訓(xùn)練的深度網(wǎng)絡(luò)中最佳地提取尺度不變的特征。
雖然許多應(yīng)用于“多分辨率”的識(shí)別系統(tǒng)都是處理一個(gè)圖像金字塔铐然,但我們發(fā)現(xiàn)在插值金字塔的最底層對于檢測小目標(biāo)尤為重要蔬崩。
因此,作者的最終方法是:通過尺度不變方式搀暑,來處理圖像金字塔以捕獲大規(guī)模變化沥阳,并采用特定尺度混合檢測器,如下圖:
(a)單一尺度模板和圖像金字塔
(b)不同尺度模板和單一圖像
(c)粗略尺度模板和粗略圖像金字塔自点,(a)和(b)的結(jié)合
(d)含有上下文信息的固定大小多尺度模板和粗略圖像金字塔
(e)定義了從深度模型的多個(gè)層中提取的特征模板桐罕,也就是foveal descriptors
問題3:How best to encode context?
作者證明從多個(gè)層中提取的卷積深度特征(也稱為 “hypercolumn” features)是有效的“ foveal”描述符,其能捕獲大感受野上的高分辨率細(xì)節(jié)和粗略的低分辨率線索桂敛。
從輸入圖像開始功炮,首先創(chuàng)建一個(gè)圖像金字塔(2x插值)。然后我們將縮放的輸入圖像輸入到CNN中术唬,獲得不同分辨率下人臉預(yù)測響應(yīng)圖(后續(xù)用于檢測和回歸)薪伏。最后將在不同尺度上得到的候選區(qū)域映射回原始分辨率圖像上,應(yīng)用非極大值抑制(NMS)來獲得最終檢測結(jié)果粗仓。
Face R-CNN
[22]該方法基于Faster R-CNN框架做人臉檢測嫁怀,針對人臉檢測的特殊性做了優(yōu)化设捐。
對于最后的二分類,在softmax的基礎(chǔ)上增加了center loss塘淑。通過加入center loss使得類內(nèi)的特征差異更新苷小(起到聚類的作用),提高正負(fù)樣本在特征空間的異性從而提升分類器的性能朴爬。
加入在線困難樣本挖掘(OHEM)即寒,每次從正負(fù)樣本中各選出loss最大的N個(gè)樣本加入下次訓(xùn)練,提高對困難樣本的的分類能力召噩。
多尺度訓(xùn)練母赵,為了適應(yīng)不同尺度影響(或者更好地檢測小目標(biāo)),訓(xùn)練階段圖片會(huì)經(jīng)過不同尺度縮放具滴。
SSH
[23] SSH最大的特色就是尺度不相關(guān)性(scale-invariant)凹嘲,比如MTCNN這樣的方法在預(yù)測的時(shí)候,是對不同尺度的圖片分別進(jìn)行預(yù)測构韵,而SSH只需要處以一個(gè)尺度的圖片就可以搞定周蹭。實(shí)現(xiàn)方式就是對VGG網(wǎng)絡(luò)不同level的卷積層輸出做了3個(gè)分支(M1,M2,M3),每個(gè)分支都使用類似的流程進(jìn)行檢測和分類疲恢,通過針對不同尺度特征圖進(jìn)行分析凶朗,變相的實(shí)現(xiàn)了多尺度的人臉檢測。
M1和M2,M3區(qū)別有點(diǎn)大显拳,首先棚愤,M1的通道數(shù)為128,M2,M3的通道數(shù)為512杂数,這里宛畦,作者使用了1*1卷積核進(jìn)行了降維操作。其次揍移,將conv4_3卷積層輸出和conv5_3卷積層輸出的特征進(jìn)行了融合(elementwise sum)次和,由于conv5_3卷積層輸出的大小和conv4_3卷積層輸出的大小不一樣,作者對conv5_3卷積層的輸出做了雙線性插值進(jìn)行上采樣那伐。
其中踏施,M模塊如上圖所示,包含了分類和回歸2個(gè)任務(wù)喧锦,其中Context Module的為了獲得更多的上下文信息读规,更大的感受野,對該模塊使用了等價(jià)的5*5和7*7的卷積分別進(jìn)行操作燃少,然后進(jìn)行特征的concat最終形成了上圖的Context Module。(由于大的卷積核效率問題铃在,根據(jù)INCEPTION的思想阵具,使用2個(gè)3*3的卷積核替代一個(gè)5*5的卷積核碍遍,使用3個(gè)3*3的卷積核替換1個(gè)7*7的卷積核)。
PyramidBox
這張圖又出現(xiàn)了Q粢骸E戮础!這一次是百度的“PyramidBox”[24]跑出來的結(jié)果帘皿。880個(gè)人臉6颉!鹰溜!
PyramidBox從論文看主要是已有技術(shù)的組合應(yīng)用虽填,但是作者對不同技術(shù)有自己很好的理解,所以能組合的很有效曹动,把性能刷的非常高斋日。
針對之前方法對上下文信息的利用不夠充分的問題,作者提出了自己的優(yōu)化方案:
第一點(diǎn):提出了一種基于 anchor 的上下文信息輔助方法PyramidAnchors墓陈,從而可以引入監(jiān)督信息來學(xué)習(xí)較小的恶守、模糊的和部分遮擋的人臉的上下文特征(下圖中紫色的人臉框?yàn)槔梢钥吹絇3,P4贡必,P5的層中框選的區(qū)域分別對應(yīng)face兔港、head、body)仔拟。
第二點(diǎn):設(shè)計(jì)了低層特征金字塔網(wǎng)絡(luò) ( Low-level Feature Pyramid Networks ) 來更好地融合上下文特征和面部特征衫樊,該方法在一次前向過程中(in a single shot)可以很好地處理不同尺度的人臉。
第三點(diǎn):文中提出了一種上下文敏感的預(yù)測模塊理逊,該模塊由一個(gè)混合網(wǎng)絡(luò)結(jié)構(gòu)和max-in-out層組成橡伞,該模塊可以從融合特征中學(xué)習(xí)到更準(zhǔn)確的定位信息和分類信息(文中對正樣本和負(fù)樣本都采用了該策略,針對不同層級(jí)的預(yù)測模塊為了提高召回率對正負(fù)樣本設(shè)置了不同的參數(shù))晋被。max-in-out參考的maxout激活函數(shù)來自GAN模型發(fā)明人Ian J,Goodfellow兑徘,它對上一層的多個(gè)feature map跨通道取最大值作為輸出,在cifar10和cifar100上相較于ReLU取得了更好的效果羡洛。
第四點(diǎn):文中提出了尺度敏感的Data-anchor-采樣策略挂脑,改變訓(xùn)練樣本的分布,重點(diǎn)關(guān)注了較小的人臉欲侮。
結(jié)束語
人臉做為計(jì)算機(jī)視覺的一個(gè)大的研究方向崭闲,很多科研人員在上面投入了大量精力,每年出來上百篇相關(guān)論文威蕉,本文中不一一列舉刁俭,文中講述分析如有不妥之處請多包涵指正!
原文發(fā)布時(shí)間為:2018-05-8
本文來自云棲社區(qū)合作伙伴“數(shù)據(jù)派THU”韧涨,了解相關(guān)信息可以關(guān)注“數(shù)據(jù)派THU”牍戚。