天天看點

人臉檢測發展:從VJ到深度學習(下)

雷鋒網按:本文作者邬書哲, 中科院計算所智能資訊處理重點實驗室vipl課題組博士生,研究方向:目标檢測,尤其關注基于深度學習的目标檢測方法。

|深度學習給目标檢測帶來的變革     

人臉檢測作為一種特定類型目标的檢測任務,一方面具有其自己鮮明的特點,需要考慮人臉這一目标的特殊性,另一方面其也和其它類型目标的檢測任務具有一定的共性,能夠直接借鑒在通用目标檢測方法上的研究經驗。    

目标檢測任務作為一個分類問題,其不僅受益于計算機視覺領域相關技術的不斷發展,在機器學習領域的研究進展同樣也對目标檢測任務具有推波助瀾的作用。事實上,從2006年開始逐漸蔓延開的深度學習大爆發給目标檢測的研究帶來了強勁的助推力,使得通用的目标檢測以及各種特定類型目标的檢測任務得到了跨越式地發展。 

從神經網絡到深度學習    

深度學習本質上并不是一項新的技術,作為其實體核心的神經網絡早在上個世紀中葉就已經有人開始研究,并且在上世紀末已經經曆過一次研究高潮。        

從“深度學習”這一字面上可以看到,神經網絡改頭換面重出江湖,關鍵在一個“深”字上。神經網絡是一種受大腦結構啟發而設計出的層級模型,其由一系列按照一定規則相連接配接的節點組成,形成一種階層化的結構。最簡單的一個神經網絡隻包含3層:輸入層、隐層(和外部的輸入、輸出沒有直接關聯)和輸出層,相鄰兩層之間的節點通過有向邊相連接配接,其中每條邊對應有一個權值。

人臉檢測發展:從VJ到深度學習(下)

為了說明神經網絡所表示的函數,我們考慮一個更為簡單的結構:隻有一個輸入層和一個輸出層,其中輸入層有 d 個節點,輸出層隻有一個節點,這個節點和所有的輸入層節點相連。輸入層節點從外部接受輸入x = (x1, x2, · · · , xd),其和輸出層節點的連接配接對應的權值是 w = (w1, w2, · · · , wd),輸出層節點會對自己的輸入做一個變換 g,得到輸出 y,那麼有     

人臉檢測發展:從VJ到深度學習(下)

其中變換 g 通常稱為節點的激活函數,是一個非線性函數,如    

人臉檢測發展:從VJ到深度學習(下)

通常我們還會在求和時增加一個偏置項 b,即有     

人臉檢測發展:從VJ到深度學習(下)

類似地,我們可以寫出 3 層神經網絡所表示的函數

人臉檢測發展:從VJ到深度學習(下)

其中 w2 和 w3 分别是輸入層節點與隐層節點之間、隐層節點和輸出層節點之間的連接配接的權值所構成的矩陣,而 b2 和 b3 則是對應的偏置項所構成的向量。依次類推,我們可以推廣到 n 層的神經網絡。可以看到,神經網絡有一個非常大的特點,就是非線性激活函數的引入和層層嵌套,這使得其能夠表示高度非線性(相對于輸入而言)的函數,因而對于複雜的資料變化模式具有更強的模組化能力。     

早期的神經網絡一般層數比較少(如3層的淺層網絡),因為多層的深度網絡學習起來非常困難,在各種任務上難以取得令人滿意的表現,這一狀況直到 2006 年才被打破。在2006年,機器學習領域的泰鬥 geoffrey e.hinton 教授在《科學》雜志上發表了題為《reducing the dimensionality of data with neural networks》的論文,這一工作為深度網絡的學習提供了一種有效的解決方案:采用無監督的方式對網絡進行逐層預訓練,進而打開了學習深度網絡的大門。在接下來的幾年中,人們對深度網絡的熱情已經高漲到了無以複加的地步,有關設計和學習深度網絡的各種問題也逐一被解決,從初始化方式到優化方法,從激活函數到網絡結構,科研工作者們對此産生了全方位的研究,使得深度網絡的訓練能夠做得又快又好。由于對神經網絡本身的探讨并不在本文所涉及的範疇之内,是以這裡不再展開讨論,讀者隻需要将神經網絡看成是一種具有更強非線性模組化能力的模型即可。    

神經網絡分為很多種,上面提到的隻是其中最簡單一種:前饋神經網絡——也經常被簡稱為神經網絡,是以神經網絡這個名字很多時候指的僅僅是前饋網絡這一種。在計算機視覺領域,應用最成功的一種神經網絡是卷積神經網絡(cnn),其最大的特點就是引入了卷積操作,将前饋網絡中的全連接配接替換為局部連接配接,在不同的連接配接之間進行權值共享——将一個卷積核作用于一張圖像時,卷積核就像檢測時的觀察視窗,其從圖像的左上角逐漸滑動到右下角,其滑動的每個位置對應于一個輸出節點,這個節點隻和視窗内的輸入節點(圖像上每一個點都對應于一個輸入節點)相連接配接,而不同輸出節點和對應輸入節點連接配接的權值是相同的。

人臉檢測發展:從VJ到深度學習(下)

卷積神經網絡在處理圖像問題上具有得天獨厚的優勢,因為卷積操作可以自然地保留圖像的空間資訊,其隻作用域局部,因而輸出節點的空間結構和輸入節點的空間結構是對應的,而前饋神經網絡則做不到這一點:輸入節點的排列順序甚至可以是任意的,隻要相應地調換連接配接的權值,就能保證輸出不變。cnn早在上世紀末就由著名的機器學習研究者yann lecun設計出來,并應用于手寫數字的識别問題,不過其在計算機視覺領域大規模得到應用則源于2012年cnn在一般的圖像分類任務上的巨大成功。

r-cnn 系列     

在2013年底,深度學習給目标檢測任務點起了一把火,這個火種就是r-cnn,其中r對應于“region(區域)”,意指cnn以圖像區域作為輸入,這個工作最終發展成了一個系列,也啟發和衍生出了大量的後續工作,這一場大火簡直燒紅了計算機視覺領域的半邊天。    

r-cnn的提出變革了目标檢測方法中很多舊有的做法,同時在标準的目标檢測評測資料集上使檢測精度得到了前所未有的提升。在檢測方法上的變革,首當其沖的是抛棄了滑動視窗範式,取而代之的是一個新的生成候選視窗的環節。對于給定的圖像,不再用一個滑動視窗去對圖像進行掃描,枚舉所有可能的情況,而是采用某種方式“提名”出一些候選視窗,在獲得對待檢測目标可接受的召回率的前提下,候選視窗的數量可以控制在幾千個或者幾百個。從某種意義上講,vj 人臉檢測器中多個分類器相級聯,每一級分類器都在為接下來的一級分類器提名候選視窗,但是這和 r-cnn 所采用的生成候選視窗的方式有一個重要的差別:實際上所有的視窗仍然都被檢查了一遍,隻是不斷在排除,這是一種減法式的方案。相比之下,r-cnn 采用的候選視窗生成方式,是根據圖像的某些特征來猜測可能有哪些地方存在待檢測的目标,以及這些目标有多大,這是一種從無到有的加法式的方案。selective search是一種典型的候選視窗生成方法,其采用了圖像分割的思路,簡單地說,selective search方法先基于各種顔色特征将圖像劃分為多個小塊,然後自底向上地對不同的塊進行合并,在這個過程中,合并前後的每一個塊都對應于一個候選視窗,最後挑出最有可能包含待檢測目标的視窗作為候選視窗。    

除了引入候選視窗生成方法,第二點非常大的改變在特征提取上:不再采用人工設計的特征,而是用 cnn來自動學習特征。特征提取過程就是從原始的輸入圖像(像素顔色值構成的矩陣)變換到特征向量的過程,之前的如 haar 特征等是科研工作者根據自己的經驗和對研究對象的認識設計出來的,換言之人工定義了一個變換,而新的做法是隻限定這個變換能夠用cnn來表示——事實上 cnn 已經可以表示足夠多足夠複雜的變換,而不具體設計特征提取的細節,用訓練資料來取代人的角色。這種自動學習特征的做法是深度學習一個非常鮮明的特色。自動去學習合适的特征,這種做法的好處和讓分類器自動去學習自己的參數的好處是類似的,不僅避免了人工幹預,解放了人力,而且有利于學習到更契合實際資料和目标的特征來,特征提取和分類兩個環節可以互相促進,相輔相成;不過缺點也是有的,自動學習出的特征往往可解釋性比較差,不能讓人直覺地去了解為什麼這樣提取出特征會更好,另外就是對訓練集會産生一定程度的依賴。   

還有一點值得一提的是,r-cnn在檢測過程中引入了一個新的環節:邊框回歸(友情提醒:“框”念第四聲,不是多音字!),檢測不再僅僅是一個分類問題,它還是一個回歸問題——回歸和分類的差別就在于回歸模型輸出的不是離散的類别标簽,而是連續的實數值。邊框回歸指的是在給定視窗的基礎上去預測真實檢測框的位置和大小,也就是說,有了候選視窗之後,如果其被判别成了一個人臉視窗,那就會進一步被調整以得到更加精确的位置和大小——和待檢測目标貼合得更好。邊框回歸一方面提供了一個新的角度來定義檢測任務,另一方面對于提高檢測結果的精确度有比較顯著的作用。    

用r-cnn進行目标檢測的流程是:先采用如 selective search等方法生成候選視窗,然後用學習好的cnn提取候選視窗對應的特征,接着訓練分類器基于提取的特征對候選視窗進行分類,最後對判别為人臉的視窗采用邊框回歸進行修正。    

雖然r-cnn帶來了目标檢測精度的一次巨大提升,然而由于所采用的候選視窗生成方法和深度網絡都具有比較高的計算複雜度,因而檢測速度非常慢。為了解決r-cnn的速度問題,緊接着出現了fast r-cnn和faster r-cnn,從名字上可以看到,它們的速度一個比一個快。第一步加速是采用了類似于 vj 人臉檢測器中積分圖的政策,積分圖是對應整張輸入圖像計算的,它就像一張表,在提取單個視窗的特征時,直接通過查表來擷取所需要的資料,然後進行簡單的計算即可,在r-cnn中每個候選視窗都需要單獨通過cnn來提取特征,當兩個視窗之間有重疊部分時,重疊部分實際上被重複計算了兩次,而在 fast r-cnn 中,直接以整張圖像作為輸入,先得到整張圖對應的卷積特征圖,然後對于每一個候選視窗,在提取特征時直接去整張圖對應的卷積特征圖上取出視窗對應的區域,進而避免重複計算,之後隻需要通過所謂的roipooling層來将所有的區域放縮到相同大小即可,這一政策的使用可以提供幾十甚至上百倍的加速。第二步加速,fast r-cnn利用了一種名為 svd 的矩陣分解技術,其作用是将一個大的矩陣(近似)拆解為三個小的矩陣的乘積,使得拆解之後三個矩陣的元素數目遠小于原來大矩陣的元素數目,進而達到在計算矩陣乘法時降低計算量的目的,通過将 svd應用于全連接配接層的權值矩陣,處理一張圖檔所需要的時間能夠降低30%。    

人臉檢測發展:從VJ到深度學習(下)

第三步加速,faster r-cnn開始着眼于生成候選視窗的環節,其采用 cnn 來生成候選視窗,同時讓其和分類、邊框回歸所使用的 cnn 共享卷積層,這樣使得兩個步驟中可以使用同樣的卷積特征圖,進而極大地減少計算量。     

人臉檢測發展:從VJ到深度學習(下)

除了采用各種政策進行加速,從r-cnn到faster r-cnn,檢測的架構和網絡結構也在不斷發生改變。r-cnn從整體架構上來說,和傳統的檢測方法沒有本質差別,不同的環節由單獨的子產品來完成:一個子產品生成候選視窗(selective search),一個子產品進行特征提取(cnn),一個子產品對視窗進行分類(svm),除此之外還增加了一個子產品做邊框回歸。到fast r-cnn的時候,後面三個子產品合并成了一個子產品,全部都用cnn來完成,是以整個系統實際上隻剩下兩個子產品:一個子產品生成候選視窗,另一個子產品直接對視窗進行分類和修正。再到faster r-cnn,所有的子產品都整合到了一個cnn中來完成,形成了一種端到端的架構:直接從輸入圖像通過一個模型得到最終的檢測結果,這種多任務在同一個模型中共同學習的做法,能夠有效利用任務之間的相關性,達到相輔相成、相得益彰的效果。從 r-cnn 到 faster r-cnn,這是一個化零為整的過程,其之是以能夠成功,一方面得益于cnn強大的非線性模組化能力,能夠學習出契合各種不同子任務的特征,另一方面也是因為人們認識和思考檢測問題的角度在不斷發生改變,打破舊有滑動視窗的架構,将檢測看成一個回歸問題,不同任務之間的耦合。盡管目前 faster r-cnn在速度上仍然無法和采用非深度學習方法的檢測器相比,但是随着硬體計算能力的不斷提升和新的cnn加速政策的接連出現,速度問題在不久的将來一定能夠得到解決。     

全卷積網絡和 densebox     

卷積層是cnn差別于其它類型神經網絡的本質特點,不過cnn通常也不僅僅隻包含卷積層,其也會包含全連接配接層,全連接配接層的壞處就在于其會破壞圖像的空間結構,是以人們便開始用卷積層來“替代”全連接配接層,通常采用1 × 1的卷積核,這種不包含全連接配接層的cnn稱為全卷積網絡(fcn)。fcn最初是用于圖像分割任務,之後開始在計算機視覺領域的各種問題上得到應用,事實上,faster r-cnn中用來生成候選視窗的cnn就是一個fcn。    

fcn 的特點就在于輸入和輸出都是二維的圖像,并且輸出和輸入具有相對應的空間結構,在這種情況下,我們可以将 fcn 的輸出看成是一張熱度圖,用熱度來訓示待檢測目标的位置和覆寫的區域:在目标所處的區域内顯示較高的熱度,而在背景區域顯示較低的熱度,這也可以看成是對圖像上的每一個像素點都進行了分類:這個點是否位于待檢測的目标上。densebox是一個典型的基于全卷積網絡的目标檢測器,其通過 fcn得到待檢測目标的熱度圖,然後根據熱度圖來獲得目标的位置和大小,這給目标檢測又提供了一種新的問題解決思路。(下面這張圖其實來源于另一篇論文,放在這裡僅用來幫助讀者了解人臉熱度圖長什麼樣子。)   

人臉檢測發展:從VJ到深度學習(下)

在densebox中,還有一點值得一提,其在分類的同時還會預測特征點的位置——就像上篇中提到的 jointcascade一樣,densebox将檢測和特征點定位兩個任務內建在同一個網絡中,并且也用熱圖的方式來确定每個點的位置。

基于cnn的人臉檢測器    

上面提到的都是通用的目标檢測器,這些檢測器可以直接通過人臉圖像來學習進而得到人臉檢測器,雖然它們沒有考慮人臉本身的特殊性,但是也能夠獲得非常好的精度,這反映出不同類型目标的檢測其實是相通的,存在一套通用的機制來處理目标檢測問題。也有一部分工作是專門針對人臉檢測任務的,有的考慮了人臉自身的特點,有的其實也是比較通用的目标檢測方法,可以自然地遷移到各種類型目标的檢測任務中去。    

facenessnet是專門針對人臉設計的一個檢測器,其考慮了頭發、眼睛、鼻子、嘴巴和胡子這五個臉部特征,簡單地說,對于一個候選視窗,facenessnet 先分析這五個部分是否存在,然後再進一步判斷是不是一張人臉。

人臉檢測發展:從VJ到深度學習(下)

這種方法一方面同時利用了整體和局部的資訊,能夠從不同的角度對圖像内容進行刻畫,使得人臉和非人臉能夠更好地被區分;另一方面增強了對遮擋的魯棒性,人臉的局部遮擋會影響整體表現出的特征,但是并不會對所有的局部區域造成影響,因而增強了檢測器對遮擋的容忍度。

檢測精度的大躍進     

随着越來越多的檢測器開始采用深度網絡,人臉檢測的精度也開始大幅地提升。在2014年,學術界在fddb上取得的最好檢測精度是在100個誤檢時達到84%的檢測率,達到這一精度的是jointcascade 人臉檢測器。到2015年,這一紀錄被facenessnet 打破,在100個誤檢時,檢測率接近88%,提升了幾乎4個百分點。不僅如此,工業界的最好記錄已經達到了100個誤檢時92.5%的檢測率,檢測率達到 90%以上的公司還不止一家,并且這些結果都是通過基于深度網絡的人臉檢測器所獲得的。    

在大幅提升人臉檢測精度的同時,深度學習實際上還降低了包括人臉檢測技術在内的各種目标檢測技術的門檻,幾乎到了隻要采用深度網絡就能獲得不錯的檢測精度的地步;在精度方面,相比于基于非深度學習方法的檢測器,基于深度學習方法的檢測器在起點上就要高出一截。不過在檢測速度方面,基于深度學習方法的檢測器還難以達到實際應用的需求,即使是在gpu上,也還不能以實時的速度(25fps)運作;而反過來看,一旦速度問題能夠得到解決,那麼深度學習也一定會在目标檢測任務上有更廣泛和更大規模的應用。 

|傳統人臉檢測技術和 cnn 的結合     

vj人臉檢測器自提出以來,啟發和影響了後續的大量工作,所引入的積分圖、adaboost方法、級聯結構等至今仍在各種各樣的檢測器中以不同的形式被使用。傳統的人臉檢測技術優勢在于速度,而在精度上則相比基于深度網絡的方法要略輸一籌,在這種情況下,一個自然的想法就是:能否将傳統的人臉檢測技術和深度網絡(如cnn)相結合,在保證檢測速度的情況下進一步提升精度?    

cascade cnn可以認為是傳統技術和深度網絡相結合的一個代表,和vj人臉檢測器一樣,其包含了多個分類器,這些分類器采用級聯結構進行組織,然而不同的地方在于,cascade cnn采用cnn作為每一級的分類器,而不是用adaboost方法通過多個弱分類器組合成的強分類器,并且也不再有單獨的特征提取過程,特征提取和分類都由cnn來統一完成。在檢測過程中,cascade cnn采用的還是傳統的滑動視窗範式,為了避免過高的計算開銷,第一級的cnn僅包含一個卷積層和一個全連接配接層,并且輸入圖像的尺寸控制在12*12,同時滑動視窗的步長設定為4個像素,在這種情況下,一方面每張圖像上候選視窗的數量變少了,視窗數量随着滑動步長的增大是按照平方規律下降的,另一方面每個視窗提取特征和分類的計算開銷也受到了嚴格控制。經過第一級cnn之後,由于通過的視窗中人臉和非人臉視窗之間更加難以區分,是以第二級cnn将輸入圖像的尺寸增大到了24*24,以利用更多的資訊,并且提高了網絡複雜度——雖然仍然隻包含一個卷積層和一個全連接配接層,但是卷積層有更多的卷積核,全連接配接層有更多的節點。第三級cnn也采用了類似的思路,增大輸入圖像大小的同時提高網絡的複雜度——采用了兩個卷積層和一個全連接配接層。通過引入cnn,傳統的級聯結構也煥發出了新的光彩,在fddb上,cascade cnn在産生100個誤檢的時候達到了85%的檢測率,而在速度上,對于大小為640*480的圖像,在限定可檢測的最小人臉大小為80*80的條件下,cascade cnn在cpu上能夠保持接近10fps的處理速度。cascade cnn中還采用了一些其它的技術來保證檢測的精度和速度,如多尺度融合、邊框校準、非極大值抑制等,限于篇幅,這裡不再繼續展開。    

吸取傳統人臉檢測技術中的精華,借鑒深度學習研究的最新成果,在對問題的深刻思考和了解上,探尋舊瓶裝新酒的最佳模式,這是一條值得去繼續探索的道路。

|對現狀和未來的簡單思考     

經過幾十年的研究和發展,人臉檢測方法正日趨成熟,在現實場景中也已經得到了比較廣泛的應用,但是人臉檢測問題還并沒有被完全解決,複雜多樣的姿态變化,千奇百怪的遮擋情況,捉摸不定的光照條件,不同的分辨率,迥異的清晰度,微妙的膚色差,各種内外因素的共同作用讓人臉的變化模式變得極其豐富,而目前還沒有檢測器可以同時對所有的變化模式都足夠魯棒。    

目前的人臉檢測器在fddb上已經能夠取得不錯的性能,不少檢測器在100個誤檢時的檢測率達到了80%以上,這意味着它們檢測出40個以上的人臉才會出現一個誤檢。到目前為止,本文所提到的誤檢和召回率都對應于fddb上的離散型得分roc曲線,所謂“離散型”是指每個人臉是否被檢測到是分别用1和0來表示的;相對應地也有連續型得分roc曲線,而“連續型”指的是人臉被檢測到與否是通過檢測框和标注框之間的交并比來表示的,從某種意義上來說,連續型得分試圖評判的是檢測框的準确程度,即檢測框的位置和大小與實際人臉的位置和大小的接近程度。對于兩個不同的檢測器而言,兩類曲線的相對關系并非是完全一緻的:離散型得分roc曲線接近的兩個檢測器,其對應的連續型得分roc曲線可能存在明顯的差異。最直接地,這說明有的檢測器雖然檢測出了人臉,但是檢測框的準确度比較低,但其實造成這種不一緻性的另一個重要原因還在于檢測框與标注框之間的差異性。在fddb中人臉是通過橢圓來進行标注的,大多數情況下,幾乎會包含整個頭部,相比之下,檢測器給出的檢測結果是矩形的人臉框,并且通常隻包含臉部區域——尤其是對于采用滑動視窗範式的檢測器,這就很容易導緻檢測框和标注橢圓之間的交并比過小,甚至可能小于0.5。對不同的檢測器來說,其能夠最好地區分人臉和非人臉視窗的情況所對應的框的大小會有所不同,進而不同檢測器給出的檢測框也會存在差别,部分方法會采用擴大檢測框或者回歸橢圓的方式,以盡量減小由标注框和檢測框的不一緻性所造成的影響,保證評測的公平性。    

除了标注框的問題之外,要更為客觀地看待fddb上的評測結果,我們還需要考慮另外一點:fddb測試圖像上的人臉和實際應用場景的差異性,換言之,我們需要思考這樣一個問題:人臉檢測器在fddb上所達到的精度能否真實反映其在實際應用場景中的表現?fddb中測試圖像上的人臉包含了從表情到姿态、從光照到遮擋等各個方面的變化,因而是一個相對通用的資料集,但是在實際應用中,不同場景下人臉往往呈現出比較鮮明的特點,例如在視訊監控場景下,由于攝像頭架設位置較高和分辨率有限,同時在存儲和傳輸過程中會引入噪聲,是以圖像上的人臉往往具有較大的俯仰角,且清晰度較低,在這種情況下,原來在fddb上表現出色的檢測器就未必能夠達到令人滿意的精度。在fddb中,有大約10%的人臉其大小在40*40以下,而對于人臉識别等一些任務來說,太小的人臉并不适合,是以如果一個檢測器因為在小臉上表現不好而導緻其在fddb上表現平平,而在較大的人臉上和表現更好的一些檢測器沒有太大差别,那麼将其應用在人臉識别任務中是完全沒有問題的,甚至還可能因為模型簡單帶來速度上的優勢。總而言之,當面對具體的應用場景時,一方面,我們還需要具體問題具體分析,不能盲目地根據檢測器在fddb或者其它人臉檢測資料集上精度來下結論;另一方面,我們需要基于目前的人臉檢測器去适配實際所需要處理的資料,以使檢測器能夠在特定的場景下達到更好的精度。    

除了fddb之外,比較常用的人臉檢測評測集還有afw,以及最近幾年公開的malf、ijb-a和wider face。afw包含的圖像數比較少,總共隻有205張測試圖像,标注了468張人臉,不過由于其覆寫了衆多的人臉變化模式,具有一定的挑戰性,是以也比較常用。另外三個評測集在圖像規模上都相對較大,其中malf和wider face沒有釋出人臉标注和評測程式,需要送出檢測結果給釋出方進行評測,這在一定程度上防止了由于評測方式不一緻而導緻比較不公平和對測試集進行過拟合的情況;這兩個資料集還按照不同的屬性(如分辨率、姿态、難易程度等)将測試集分成了多個子集,評測時會同時在全集和子集上進行測試,這能夠更加全面地反映檢測器在不同場景下的能力。ijb-a中不僅包含靜态人臉圖像,還有一部分是從視訊中提取的視訊幀。在上面提到的所有評測集中,隻有wider face提供了專門的訓練集和驗證集,其它評測集合都隻包含測試集,這其實也給不同方法的比較帶來了一個問題:我們難以判斷導緻檢測器在精度上存在差異的原因到底是訓練資料還是算法和模型本身,也不知道這兩方面的因素誰起的作用更大。wider face應該是難度最大的一個評測集,所标注的人臉在姿态、遮擋情況等方面的跨度非常大,并且分辨率在50*50以下的人臉占到了50%(訓練集和校驗集中達到了80%以上),不過在部分應用場景下(如人臉識别),過于關注小尺寸的人臉并沒有必要。    

雖然基于深度網絡的檢測器目前能夠達到很高的檢測精度,并且其通用性非常強,但其所付出的計算代價也非常高,是以這類檢測器突破的關鍵在于深度網絡的簡化和加速。除此之外,如果單單考慮人臉檢測,這個分類問題相對來說要簡單一些,也存在一種可能性:直接學習一個小型的網絡就能足夠好地完成這個任務。對于采用非深度學習方法的檢測器,其基礎的檢測精度相比會低不少,但是速度上會有明顯的優勢,是以其關鍵在于針對特定應用場景下的問題進行合理的改進和适配,以獲得更好的檢測精度。    

為了提供更加便利的人機互動接口,創造有效的視覺了解手段,讓機器變得有溫度,會觀察,能感受,廣大的科研工作者們在人臉檢測和通用目标檢測任務上還在繼續探索。終有一天,當我們和機器四目相對時,彼此能夠會心一笑:科學讓生活更美好!

後記    

本文從人臉檢測任務本身開始,介紹了人臉檢測的一般流程,然後分别介紹了三類不同的人臉檢測方法:以vj人臉檢測器為代表的傳統方法,基于深度網絡的現代方法,以及将傳統的人臉檢測技術和深度網絡相結合的方法。然而,在人臉檢測幾十年的研究曆程中,還有很多其它的方法不能歸到這三類中來,其中比較重要的包括基于部件模型的方法和基于範本的方法,雖然本文沒有對這兩類方法進行介紹,但是它們在人臉檢測這一問題上仍然具有重要的地位和意義,感興趣的讀者可以進一步去閱讀相關論文進行了解。

本文作者:深度學習大講堂

繼續閱讀