0
本文作者: 深度學(xué)習(xí)大講堂 | 2016-08-11 16:36 |
雷鋒網(wǎng)按:本文作者鄔書哲, 中科院計算所智能信息處理重點(diǎn)實(shí)驗(yàn)室VIPL課題組博士生,研究方向:目標(biāo)檢測,尤其關(guān)注基于深度學(xué)習(xí)的目標(biāo)檢測方法。
|深度學(xué)習(xí)給目標(biāo)檢測帶來的變革
人臉檢測作為一種特定類型目標(biāo)的檢測任務(wù),一方面具有其自己鮮明的特點(diǎn),需要考慮人臉這一目標(biāo)的特殊性,另一方面其也和其它類型目標(biāo)的檢測任務(wù)具有一定的共性,能夠直接借鑒在通用目標(biāo)檢測方法上的研究經(jīng)驗(yàn)。
目標(biāo)檢測任務(wù)作為一個分類問題,其不僅受益于計算機(jī)視覺領(lǐng)域相關(guān)技術(shù)的不斷發(fā)展,在機(jī)器學(xué)習(xí)領(lǐng)域的研究進(jìn)展同樣也對目標(biāo)檢測任務(wù)具有推波助瀾的作用。事實(shí)上,從2006年開始逐步蔓延開的深度學(xué)習(xí)大爆發(fā)給目標(biāo)檢測的研究帶來了強(qiáng)勁的助推力,使得通用的目標(biāo)檢測以及各種特定類型目標(biāo)的檢測任務(wù)得到了跨越式地發(fā)展。
從神經(jīng)網(wǎng)絡(luò)到深度學(xué)習(xí)
深度學(xué)習(xí)本質(zhì)上并不是一項(xiàng)新的技術(shù),作為其物理核心的神經(jīng)網(wǎng)絡(luò)早在上個世紀(jì)中葉就已經(jīng)有人開始研究,并且在上世紀(jì)末已經(jīng)經(jīng)歷過一次研究高潮。
從“深度學(xué)習(xí)”這一字面上可以看到,神經(jīng)網(wǎng)絡(luò)改頭換面重出江湖,關(guān)鍵在一個“深”字上。神經(jīng)網(wǎng)絡(luò)是一種受大腦結(jié)構(gòu)啟發(fā)而設(shè)計出的層級模型,其由一系列按照一定規(guī)則相連接的節(jié)點(diǎn)組成,形成一種層次化的結(jié)構(gòu)。最簡單的一個神經(jīng)網(wǎng)絡(luò)只包含3層:輸入層、隱層(和外部的輸入、輸出沒有直接關(guān)聯(lián))和輸出層,相鄰兩層之間的節(jié)點(diǎn)通過有向邊相連接,其中每條邊對應(yīng)有一個權(quán)值。
為了說明神經(jīng)網(wǎng)絡(luò)所表示的函數(shù),我們考慮一個更為簡單的結(jié)構(gòu):只有一個輸入層和一個輸出層,其中輸入層有 d 個節(jié)點(diǎn),輸出層只有一個節(jié)點(diǎn),這個節(jié)點(diǎn)和所有的輸入層節(jié)點(diǎn)相連。輸入層節(jié)點(diǎn)從外部接受輸入x = (x1, x2, · · · , xd),其和輸出層節(jié)點(diǎn)的連接對應(yīng)的權(quán)值是 w = (w1, w2, · · · , wd),輸出層節(jié)點(diǎn)會對自己的輸入做一個變換 g,得到輸出 y,那么有
其中變換 g 通常稱為節(jié)點(diǎn)的激活函數(shù),是一個非線性函數(shù),如
通常我們還會在求和時增加一個偏置項(xiàng) b,即有
類似地,我們可以寫出 3 層神經(jīng)網(wǎng)絡(luò)所表示的函數(shù)
其中 W2 和 W3 分別是輸入層節(jié)點(diǎn)與隱層節(jié)點(diǎn)之間、隱層節(jié)點(diǎn)和輸出層節(jié)點(diǎn)之間的連接的權(quán)值所構(gòu)成的矩陣,而 b2 和 b3 則是對應(yīng)的偏置項(xiàng)所構(gòu)成的向量。依次類推,我們可以推廣到 n 層的神經(jīng)網(wǎng)絡(luò)。可以看到,神經(jīng)網(wǎng)絡(luò)有一個非常大的特點(diǎn),就是非線性激活函數(shù)的引入和層層嵌套,這使得其能夠表示高度非線性(相對于輸入而言)的函數(shù),因而對于復(fù)雜的數(shù)據(jù)變化模式具有更強(qiáng)的建模能力。
早期的神經(jīng)網(wǎng)絡(luò)一般層數(shù)比較少(如3層的淺層網(wǎng)絡(luò)),因?yàn)槎鄬拥纳疃染W(wǎng)絡(luò)學(xué)習(xí)起來非常困難,在各種任務(wù)上難以取得令人滿意的表現(xiàn),這一狀況直到 2006 年才被打破。在2006年,機(jī)器學(xué)習(xí)領(lǐng)域的泰斗 Geoffrey E.Hinton 教授在《科學(xué)》雜志上發(fā)表了題為《Reducing the Dimensionality of Data with Neural Networks》的論文,這一工作為深度網(wǎng)絡(luò)的學(xué)習(xí)提供了一種有效的解決方案:采用無監(jiān)督的方式對網(wǎng)絡(luò)進(jìn)行逐層預(yù)訓(xùn)練,從而打開了學(xué)習(xí)深度網(wǎng)絡(luò)的大門。在接下來的幾年中,人們對深度網(wǎng)絡(luò)的熱情已經(jīng)高漲到了無以復(fù)加的地步,有關(guān)設(shè)計和學(xué)習(xí)深度網(wǎng)絡(luò)的各種問題也逐一被解決,從初始化方式到優(yōu)化方法,從激活函數(shù)到網(wǎng)絡(luò)結(jié)構(gòu),科研工作者們對此產(chǎn)生了全方位的研究,使得深度網(wǎng)絡(luò)的訓(xùn)練能夠做得又快又好。由于對神經(jīng)網(wǎng)絡(luò)本身的探討并不在本文所涉及的范疇之內(nèi),因此這里不再展開討論,讀者只需要將神經(jīng)網(wǎng)絡(luò)看成是一種具有更強(qiáng)非線性建模能力的模型即可。
神經(jīng)網(wǎng)絡(luò)分為很多種,上面提到的只是其中最簡單一種:前饋神經(jīng)網(wǎng)絡(luò)——也經(jīng)常被簡稱為神經(jīng)網(wǎng)絡(luò),因此神經(jīng)網(wǎng)絡(luò)這個名字很多時候指的僅僅是前饋網(wǎng)絡(luò)這一種。在計算機(jī)視覺領(lǐng)域,應(yīng)用最成功的一種神經(jīng)網(wǎng)絡(luò)是卷積神經(jīng)網(wǎng)絡(luò)(CNN),其最大的特點(diǎn)就是引入了卷積操作,將前饋網(wǎng)絡(luò)中的全連接替換為局部連接,在不同的連接之間進(jìn)行權(quán)值共享——將一個卷積核作用于一張圖像時,卷積核就像檢測時的觀察窗口,其從圖像的左上角逐步滑動到右下角,其滑動的每個位置對應(yīng)于一個輸出節(jié)點(diǎn),這個節(jié)點(diǎn)只和窗口內(nèi)的輸入節(jié)點(diǎn)(圖像上每一個點(diǎn)都對應(yīng)于一個輸入節(jié)點(diǎn))相連接,而不同輸出節(jié)點(diǎn)和對應(yīng)輸入節(jié)點(diǎn)連接的權(quán)值是相同的。
卷積神經(jīng)網(wǎng)絡(luò)在處理圖像問題上具有得天獨(dú)厚的優(yōu)勢,因?yàn)榫矸e操作可以自然地保留圖像的空間信息,其只作用域局部,因而輸出節(jié)點(diǎn)的空間結(jié)構(gòu)和輸入節(jié)點(diǎn)的空間結(jié)構(gòu)是對應(yīng)的,而前饋神經(jīng)網(wǎng)絡(luò)則做不到這一點(diǎn):輸入節(jié)點(diǎn)的排列順序甚至可以是任意的,只要相應(yīng)地調(diào)換連接的權(quán)值,就能保證輸出不變。CNN早在上世紀(jì)末就由著名的機(jī)器學(xué)習(xí)研究者Yann LeCun設(shè)計出來,并應(yīng)用于手寫數(shù)字的識別問題,不過其在計算機(jī)視覺領(lǐng)域大規(guī)模得到應(yīng)用則源于2012年CNN在一般的圖像分類任務(wù)上的巨大成功。
R-CNN 系列
在2013年底,深度學(xué)習(xí)給目標(biāo)檢測任務(wù)點(diǎn)起了一把火,這個火種就是R-CNN,其中R對應(yīng)于“Region(區(qū)域)”,意指CNN以圖像區(qū)域作為輸入,這個工作最終發(fā)展成了一個系列,也啟發(fā)和衍生出了大量的后續(xù)工作,這一場大火簡直燒紅了計算機(jī)視覺領(lǐng)域的半邊天。
R-CNN的提出變革了目標(biāo)檢測方法中很多舊有的做法,同時在標(biāo)準(zhǔn)的目標(biāo)檢測評測數(shù)據(jù)集上使檢測精度得到了前所未有的提升。在檢測方法上的變革,首當(dāng)其沖的是拋棄了滑動窗口范式,取而代之的是一個新的生成候選窗口的環(huán)節(jié)。對于給定的圖像,不再用一個滑動窗口去對圖像進(jìn)行掃描,枚舉所有可能的情況,而是采用某種方式“提名”出一些候選窗口,在獲得對待檢測目標(biāo)可接受的召回率的前提下,候選窗口的數(shù)量可以控制在幾千個或者幾百個。從某種意義上講,VJ 人臉檢測器中多個分類器相級聯(lián),每一級分類器都在為接下來的一級分類器提名候選窗口,但是這和 R-CNN 所采用的生成候選窗口的方式有一個重要的區(qū)別:實(shí)際上所有的窗口仍然都被檢查了一遍,只是不斷在排除,這是一種減法式的方案。相比之下,R-CNN 采用的候選窗口生成方式,是根據(jù)圖像的某些特征來猜測可能有哪些地方存在待檢測的目標(biāo),以及這些目標(biāo)有多大,這是一種從無到有的加法式的方案。Selective Search是一種典型的候選窗口生成方法,其采用了圖像分割的思路,簡單地說,Selective Search方法先基于各種顏色特征將圖像劃分為多個小塊,然后自底向上地對不同的塊進(jìn)行合并,在這個過程中,合并前后的每一個塊都對應(yīng)于一個候選窗口,最后挑出最有可能包含待檢測目標(biāo)的窗口作為候選窗口。
除了引入候選窗口生成方法,第二點(diǎn)非常大的改變在特征提取上:不再采用人工設(shè)計的特征,而是用 CNN來自動學(xué)習(xí)特征。特征提取過程就是從原始的輸入圖像(像素顏色值構(gòu)成的矩陣)變換到特征向量的過程,之前的如 Haar 特征等是科研工作者根據(jù)自己的經(jīng)驗(yàn)和對研究對象的認(rèn)識設(shè)計出來的,換言之人工定義了一個變換,而新的做法是只限定這個變換能夠用CNN來表示——事實(shí)上 CNN 已經(jīng)可以表示足夠多足夠復(fù)雜的變換,而不具體設(shè)計特征提取的細(xì)節(jié),用訓(xùn)練數(shù)據(jù)來取代人的角色。這種自動學(xué)習(xí)特征的做法是深度學(xué)習(xí)一個非常鮮明的特色。自動去學(xué)習(xí)合適的特征,這種做法的好處和讓分類器自動去學(xué)習(xí)自己的參數(shù)的好處是類似的,不僅避免了人工干預(yù),解放了人力,而且有利于學(xué)習(xí)到更契合實(shí)際數(shù)據(jù)和目標(biāo)的特征來,特征提取和分類兩個環(huán)節(jié)可以相互促進(jìn),相輔相成;不過缺點(diǎn)也是有的,自動學(xué)習(xí)出的特征往往可解釋性比較差,不能讓人直觀地去理解為什么這樣提取出特征會更好,另外就是對訓(xùn)練集會產(chǎn)生一定程度的依賴。
還有一點(diǎn)值得一提的是,R-CNN在檢測過程中引入了一個新的環(huán)節(jié):邊框回歸(友情提醒:“框”念第四聲,不是多音字?。瑱z測不再僅僅是一個分類問題,它還是一個回歸問題——回歸和分類的區(qū)別就在于回歸模型輸出的不是離散的類別標(biāo)簽,而是連續(xù)的實(shí)數(shù)值。邊框回歸指的是在給定窗口的基礎(chǔ)上去預(yù)測真實(shí)檢測框的位置和大小,也就是說,有了候選窗口之后,如果其被判別成了一個人臉窗口,那就會進(jìn)一步被調(diào)整以得到更加精確的位置和大小——和待檢測目標(biāo)貼合得更好。邊框回歸一方面提供了一個新的角度來定義檢測任務(wù),另一方面對于提高檢測結(jié)果的精確度有比較顯著的作用。
用R-CNN進(jìn)行目標(biāo)檢測的流程是:先采用如 Selective Search等方法生成候選窗口,然后用學(xué)習(xí)好的CNN提取候選窗口對應(yīng)的特征,接著訓(xùn)練分類器基于提取的特征對候選窗口進(jìn)行分類,最后對判別為人臉的窗口采用邊框回歸進(jìn)行修正。
雖然R-CNN帶來了目標(biāo)檢測精度的一次巨大提升,然而由于所采用的候選窗口生成方法和深度網(wǎng)絡(luò)都具有比較高的計算復(fù)雜度,因而檢測速度非常慢。為了解決R-CNN的速度問題,緊接著出現(xiàn)了Fast R-CNN和Faster R-CNN,從名字上可以看到,它們的速度一個比一個快。第一步加速是采用了類似于 VJ 人臉檢測器中積分圖的策略,積分圖是對應(yīng)整張輸入圖像計算的,它就像一張表,在提取單個窗口的特征時,直接通過查表來獲取所需要的數(shù)據(jù),然后進(jìn)行簡單的計算即可,在R-CNN中每個候選窗口都需要單獨(dú)通過CNN來提取特征,當(dāng)兩個窗口之間有重疊部分時,重疊部分實(shí)際上被重復(fù)計算了兩次,而在 Fast R-CNN 中,直接以整張圖像作為輸入,先得到整張圖對應(yīng)的卷積特征圖,然后對于每一個候選窗口,在提取特征時直接去整張圖對應(yīng)的卷積特征圖上取出窗口對應(yīng)的區(qū)域,從而避免重復(fù)計算,之后只需要通過所謂的RoIPooling層來將所有的區(qū)域放縮到相同大小即可,這一策略的使用可以提供幾十甚至上百倍的加速。第二步加速,F(xiàn)ast R-CNN利用了一種名為 SVD 的矩陣分解技術(shù),其作用是將一個大的矩陣(近似)拆解為三個小的矩陣的乘積,使得拆解之后三個矩陣的元素數(shù)目遠(yuǎn)小于原來大矩陣的元素數(shù)目,從而達(dá)到在計算矩陣乘法時降低計算量的目的,通過將 SVD應(yīng)用于全連接層的權(quán)值矩陣,處理一張圖片所需要的時間能夠降低30%。
第三步加速,F(xiàn)aster R-CNN開始著眼于生成候選窗口的環(huán)節(jié),其采用 CNN 來生成候選窗口,同時讓其和分類、邊框回歸所使用的 CNN 共享卷積層,這樣使得兩個步驟中可以使用同樣的卷積特征圖,從而極大地減少計算量。
除了采用各種策略進(jìn)行加速,從R-CNN到Faster R-CNN,檢測的框架和網(wǎng)絡(luò)結(jié)構(gòu)也在不斷發(fā)生改變。R-CNN從整體框架上來說,和傳統(tǒng)的檢測方法沒有本質(zhì)區(qū)別,不同的環(huán)節(jié)由單獨(dú)的模塊來完成:一個模塊生成候選窗口(Selective Search),一個模塊進(jìn)行特征提?。–NN),一個模塊對窗口進(jìn)行分類(SVM),除此之外還增加了一個模塊做邊框回歸。到Fast R-CNN的時候,后面三個模塊合并成了一個模塊,全部都用CNN來完成,因此整個系統(tǒng)實(shí)際上只剩下兩個模塊:一個模塊生成候選窗口,另一個模塊直接對窗口進(jìn)行分類和修正。再到Faster R-CNN,所有的模塊都整合到了一個CNN中來完成,形成了一種端到端的框架:直接從輸入圖像通過一個模型得到最終的檢測結(jié)果,這種多任務(wù)在同一個模型中共同學(xué)習(xí)的做法,能夠有效利用任務(wù)之間的相關(guān)性,達(dá)到相輔相成、相得益彰的效果。從 R-CNN 到 Faster R-CNN,這是一個化零為整的過程,其之所以能夠成功,一方面得益于CNN強(qiáng)大的非線性建模能力,能夠?qū)W習(xí)出契合各種不同子任務(wù)的特征,另一方面也是因?yàn)槿藗冋J(rèn)識和思考檢測問題的角度在不斷發(fā)生改變,打破舊有滑動窗口的框架,將檢測看成一個回歸問題,不同任務(wù)之間的耦合。盡管目前 Faster R-CNN在速度上仍然無法和采用非深度學(xué)習(xí)方法的檢測器相比,但是隨著硬件計算能力的不斷提升和新的CNN加速策略的接連出現(xiàn),速度問題在不久的將來一定能夠得到解決。
全卷積網(wǎng)絡(luò)和 DenseBox
卷積層是CNN區(qū)別于其它類型神經(jīng)網(wǎng)絡(luò)的本質(zhì)特點(diǎn),不過CNN通常也不僅僅只包含卷積層,其也會包含全連接層,全連接層的壞處就在于其會破壞圖像的空間結(jié)構(gòu),因此人們便開始用卷積層來“替代”全連接層,通常采用1 × 1的卷積核,這種不包含全連接層的CNN稱為全卷積網(wǎng)絡(luò)(FCN)。FCN最初是用于圖像分割任務(wù),之后開始在計算機(jī)視覺領(lǐng)域的各種問題上得到應(yīng)用,事實(shí)上,F(xiàn)aster R-CNN中用來生成候選窗口的CNN就是一個FCN。
FCN 的特點(diǎn)就在于輸入和輸出都是二維的圖像,并且輸出和輸入具有相對應(yīng)的空間結(jié)構(gòu),在這種情況下,我們可以將 FCN 的輸出看成是一張熱度圖,用熱度來指示待檢測目標(biāo)的位置和覆蓋的區(qū)域:在目標(biāo)所處的區(qū)域內(nèi)顯示較高的熱度,而在背景區(qū)域顯示較低的熱度,這也可以看成是對圖像上的每一個像素點(diǎn)都進(jìn)行了分類:這個點(diǎn)是否位于待檢測的目標(biāo)上。DenseBox是一個典型的基于全卷積網(wǎng)絡(luò)的目標(biāo)檢測器,其通過 FCN得到待檢測目標(biāo)的熱度圖,然后根據(jù)熱度圖來獲得目標(biāo)的位置和大小,這給目標(biāo)檢測又提供了一種新的問題解決思路。(下面這張圖其實(shí)來源于另一篇論文,放在這里僅用來幫助讀者了解人臉熱度圖長什么樣子。)
在DenseBox中,還有一點(diǎn)值得一提,其在分類的同時還會預(yù)測特征點(diǎn)的位置——就像上篇中提到的 JointCascade一樣,DenseBox將檢測和特征點(diǎn)定位兩個任務(wù)集成在同一個網(wǎng)絡(luò)中,并且也用熱圖的方式來確定每個點(diǎn)的位置。
基于CNN的人臉檢測器
上面提到的都是通用的目標(biāo)檢測器,這些檢測器可以直接通過人臉圖像來學(xué)習(xí)從而得到人臉檢測器,雖然它們沒有考慮人臉本身的特殊性,但是也能夠獲得非常好的精度,這反映出不同類型目標(biāo)的檢測其實(shí)是相通的,存在一套通用的機(jī)制來處理目標(biāo)檢測問題。也有一部分工作是專門針對人臉檢測任務(wù)的,有的考慮了人臉自身的特點(diǎn),有的其實(shí)也是比較通用的目標(biāo)檢測方法,可以自然地遷移到各種類型目標(biāo)的檢測任務(wù)中去。
FacenessNet是專門針對人臉設(shè)計的一個檢測器,其考慮了頭發(fā)、眼睛、鼻子、嘴巴和胡子這五個臉部特征,簡單地說,對于一個候選窗口,F(xiàn)acenessNet 先分析這五個部分是否存在,然后再進(jìn)一步判斷是不是一張人臉。
這種方法一方面同時利用了整體和局部的信息,能夠從不同的角度對圖像內(nèi)容進(jìn)行刻畫,使得人臉和非人臉能夠更好地被區(qū)分;另一方面增強(qiáng)了對遮擋的魯棒性,人臉的局部遮擋會影響整體表現(xiàn)出的特征,但是并不會對所有的局部區(qū)域造成影響,因而增強(qiáng)了檢測器對遮擋的容忍度。
檢測精度的大躍進(jìn)
隨著越來越多的檢測器開始采用深度網(wǎng)絡(luò),人臉檢測的精度也開始大幅地提升。在2014年,學(xué)術(shù)界在FDDB上取得的最好檢測精度是在100個誤檢時達(dá)到84%的檢測率,達(dá)到這一精度的是JointCascade 人臉檢測器。到2015年,這一紀(jì)錄被FacenessNet 打破,在100個誤檢時,檢測率接近88%,提升了幾乎4個百分點(diǎn)。不僅如此,工業(yè)界的最好記錄已經(jīng)達(dá)到了100個誤檢時92.5%的檢測率,檢測率達(dá)到 90%以上的公司還不止一家,并且這些結(jié)果都是通過基于深度網(wǎng)絡(luò)的人臉檢測器所獲得的。
在大幅提升人臉檢測精度的同時,深度學(xué)習(xí)實(shí)際上還降低了包括人臉檢測技術(shù)在內(nèi)的各種目標(biāo)檢測技術(shù)的門檻,幾乎到了只要采用深度網(wǎng)絡(luò)就能獲得不錯的檢測精度的地步;在精度方面,相比于基于非深度學(xué)習(xí)方法的檢測器,基于深度學(xué)習(xí)方法的檢測器在起點(diǎn)上就要高出一截。不過在檢測速度方面,基于深度學(xué)習(xí)方法的檢測器還難以達(dá)到實(shí)際應(yīng)用的需求,即使是在GPU上,也還不能以實(shí)時的速度(25fps)運(yùn)行;而反過來看,一旦速度問題能夠得到解決,那么深度學(xué)習(xí)也一定會在目標(biāo)檢測任務(wù)上有更廣泛和更大規(guī)模的應(yīng)用。
|傳統(tǒng)人臉檢測技術(shù)和 CNN 的結(jié)合
VJ人臉檢測器自提出以來,啟發(fā)和影響了后續(xù)的大量工作,所引入的積分圖、AdaBoost方法、級聯(lián)結(jié)構(gòu)等至今仍在各種各樣的檢測器中以不同的形式被使用。傳統(tǒng)的人臉檢測技術(shù)優(yōu)勢在于速度,而在精度上則相比基于深度網(wǎng)絡(luò)的方法要略輸一籌,在這種情況下,一個自然的想法就是:能否將傳統(tǒng)的人臉檢測技術(shù)和深度網(wǎng)絡(luò)(如CNN)相結(jié)合,在保證檢測速度的情況下進(jìn)一步提升精度?
Cascade CNN可以認(rèn)為是傳統(tǒng)技術(shù)和深度網(wǎng)絡(luò)相結(jié)合的一個代表,和VJ人臉檢測器一樣,其包含了多個分類器,這些分類器采用級聯(lián)結(jié)構(gòu)進(jìn)行組織,然而不同的地方在于,Cascade CNN采用CNN作為每一級的分類器,而不是用AdaBoost方法通過多個弱分類器組合成的強(qiáng)分類器,并且也不再有單獨(dú)的特征提取過程,特征提取和分類都由CNN來統(tǒng)一完成。在檢測過程中,Cascade CNN采用的還是傳統(tǒng)的滑動窗口范式,為了避免過高的計算開銷,第一級的CNN僅包含一個卷積層和一個全連接層,并且輸入圖像的尺寸控制在12*12,同時滑動窗口的步長設(shè)置為4個像素,在這種情況下,一方面每張圖像上候選窗口的數(shù)量變少了,窗口數(shù)量隨著滑動步長的增大是按照平方規(guī)律下降的,另一方面每個窗口提取特征和分類的計算開銷也受到了嚴(yán)格控制。經(jīng)過第一級CNN之后,由于通過的窗口中人臉和非人臉窗口之間更加難以區(qū)分,因此第二級CNN將輸入圖像的尺寸增大到了24*24,以利用更多的信息,并且提高了網(wǎng)絡(luò)復(fù)雜度——雖然仍然只包含一個卷積層和一個全連接層,但是卷積層有更多的卷積核,全連接層有更多的節(jié)點(diǎn)。第三級CNN也采用了類似的思路,增大輸入圖像大小的同時提高網(wǎng)絡(luò)的復(fù)雜度——采用了兩個卷積層和一個全連接層。通過引入CNN,傳統(tǒng)的級聯(lián)結(jié)構(gòu)也煥發(fā)出了新的光彩,在FDDB上,Cascade CNN在產(chǎn)生100個誤檢的時候達(dá)到了85%的檢測率,而在速度上,對于大小為640*480的圖像,在限定可檢測的最小人臉大小為80*80的條件下,Cascade CNN在CPU上能夠保持接近10fps的處理速度。Cascade CNN中還采用了一些其它的技術(shù)來保證檢測的精度和速度,如多尺度融合、邊框校準(zhǔn)、非極大值抑制等,限于篇幅,這里不再繼續(xù)展開。
吸取傳統(tǒng)人臉檢測技術(shù)中的精華,借鑒深度學(xué)習(xí)研究的最新成果,在對問題的深刻思考和理解上,探尋舊瓶裝新酒的最佳模式,這是一條值得去繼續(xù)探索的道路。
|對現(xiàn)狀和未來的簡單思考
經(jīng)過幾十年的研究和發(fā)展,人臉檢測方法正日趨成熟,在現(xiàn)實(shí)場景中也已經(jīng)得到了比較廣泛的應(yīng)用,但是人臉檢測問題還并沒有被完全解決,復(fù)雜多樣的姿態(tài)變化,千奇百怪的遮擋情況,捉摸不定的光照條件,不同的分辨率,迥異的清晰度,微妙的膚色差,各種內(nèi)外因素的共同作用讓人臉的變化模式變得極其豐富,而目前還沒有檢測器可以同時對所有的變化模式都足夠魯棒。
目前的人臉檢測器在FDDB上已經(jīng)能夠取得不錯的性能,不少檢測器在100個誤檢時的檢測率達(dá)到了80%以上,這意味著它們檢測出40個以上的人臉才會出現(xiàn)一個誤檢。到目前為止,本文所提到的誤檢和召回率都對應(yīng)于FDDB上的離散型得分ROC曲線,所謂“離散型”是指每個人臉是否被檢測到是分別用1和0來表示的;相對應(yīng)地也有連續(xù)型得分ROC曲線,而“連續(xù)型”指的是人臉被檢測到與否是通過檢測框和標(biāo)注框之間的交并比來表示的,從某種意義上來說,連續(xù)型得分試圖評判的是檢測框的準(zhǔn)確程度,即檢測框的位置和大小與實(shí)際人臉的位置和大小的接近程度。對于兩個不同的檢測器而言,兩類曲線的相對關(guān)系并非是完全一致的:離散型得分ROC曲線接近的兩個檢測器,其對應(yīng)的連續(xù)型得分ROC曲線可能存在明顯的差異。最直接地,這說明有的檢測器雖然檢測出了人臉,但是檢測框的準(zhǔn)確度比較低,但其實(shí)造成這種不一致性的另一個重要原因還在于檢測框與標(biāo)注框之間的差異性。在FDDB中人臉是通過橢圓來進(jìn)行標(biāo)注的,大多數(shù)情況下,幾乎會包含整個頭部,相比之下,檢測器給出的檢測結(jié)果是矩形的人臉框,并且通常只包含臉部區(qū)域——尤其是對于采用滑動窗口范式的檢測器,這就很容易導(dǎo)致檢測框和標(biāo)注橢圓之間的交并比過小,甚至可能小于0.5。對不同的檢測器來說,其能夠最好地區(qū)分人臉和非人臉窗口的情況所對應(yīng)的框的大小會有所不同,從而不同檢測器給出的檢測框也會存在差別,部分方法會采用擴(kuò)大檢測框或者回歸橢圓的方式,以盡量減小由標(biāo)注框和檢測框的不一致性所造成的影響,保證評測的公平性。
除了標(biāo)注框的問題之外,要更為客觀地看待FDDB上的評測結(jié)果,我們還需要考慮另外一點(diǎn):FDDB測試圖像上的人臉和實(shí)際應(yīng)用場景的差異性,換言之,我們需要思考這樣一個問題:人臉檢測器在FDDB上所達(dá)到的精度能否真實(shí)反映其在實(shí)際應(yīng)用場景中的表現(xiàn)?FDDB中測試圖像上的人臉包含了從表情到姿態(tài)、從光照到遮擋等各個方面的變化,因而是一個相對通用的數(shù)據(jù)集,但是在實(shí)際應(yīng)用中,不同場景下人臉往往呈現(xiàn)出比較鮮明的特點(diǎn),例如在視頻監(jiān)控場景下,由于攝像頭架設(shè)位置較高和分辨率有限,同時在存儲和傳輸過程中會引入噪聲,因此圖像上的人臉往往具有較大的俯仰角,且清晰度較低,在這種情況下,原來在FDDB上表現(xiàn)出色的檢測器就未必能夠達(dá)到令人滿意的精度。在FDDB中,有大約10%的人臉其大小在40*40以下,而對于人臉識別等一些任務(wù)來說,太小的人臉并不適合,因此如果一個檢測器因?yàn)樵谛∧樕媳憩F(xiàn)不好而導(dǎo)致其在FDDB上表現(xiàn)平平,而在較大的人臉上和表現(xiàn)更好的一些檢測器沒有太大差別,那么將其應(yīng)用在人臉識別任務(wù)中是完全沒有問題的,甚至還可能因?yàn)槟P秃唵螏硭俣壬系膬?yōu)勢??偠灾?,當(dāng)面對具體的應(yīng)用場景時,一方面,我們還需要具體問題具體分析,不能盲目地根據(jù)檢測器在FDDB或者其它人臉檢測數(shù)據(jù)集上精度來下結(jié)論;另一方面,我們需要基于當(dāng)前的人臉檢測器去適配實(shí)際所需要處理的數(shù)據(jù),以使檢測器能夠在特定的場景下達(dá)到更好的精度。
除了FDDB之外,比較常用的人臉檢測評測集還有AFW,以及最近幾年公開的MALF、IJB-A和Wider Face。AFW包含的圖像數(shù)比較少,總共只有205張測試圖像,標(biāo)注了468張人臉,不過由于其覆蓋了眾多的人臉變化模式,具有一定的挑戰(zhàn)性,因此也比較常用。另外三個評測集在圖像規(guī)模上都相對較大,其中MALF和Wider Face沒有發(fā)布人臉標(biāo)注和評測程序,需要提交檢測結(jié)果給發(fā)布方進(jìn)行評測,這在一定程度上防止了由于評測方式不一致而導(dǎo)致比較不公平和對測試集進(jìn)行過擬合的情況;這兩個數(shù)據(jù)集還按照不同的屬性(如分辨率、姿態(tài)、難易程度等)將測試集分成了多個子集,評測時會同時在全集和子集上進(jìn)行測試,這能夠更加全面地反映檢測器在不同場景下的能力。IJB-A中不僅包含靜態(tài)人臉圖像,還有一部分是從視頻中提取的視頻幀。在上面提到的所有評測集中,只有Wider Face提供了專門的訓(xùn)練集和驗(yàn)證集,其它評測集合都只包含測試集,這其實(shí)也給不同方法的比較帶來了一個問題:我們難以判斷導(dǎo)致檢測器在精度上存在差異的原因到底是訓(xùn)練數(shù)據(jù)還是算法和模型本身,也不知道這兩方面的因素誰起的作用更大。Wider Face應(yīng)該是難度最大的一個評測集,所標(biāo)注的人臉在姿態(tài)、遮擋情況等方面的跨度非常大,并且分辨率在50*50以下的人臉占到了50%(訓(xùn)練集和校驗(yàn)集中達(dá)到了80%以上),不過在部分應(yīng)用場景下(如人臉識別),過于關(guān)注小尺寸的人臉并沒有必要。
雖然基于深度網(wǎng)絡(luò)的檢測器目前能夠達(dá)到很高的檢測精度,并且其通用性非常強(qiáng),但其所付出的計算代價也非常高,因此這類檢測器突破的關(guān)鍵在于深度網(wǎng)絡(luò)的簡化和加速。除此之外,如果單單考慮人臉檢測,這個分類問題相對來說要簡單一些,也存在一種可能性:直接學(xué)習(xí)一個小型的網(wǎng)絡(luò)就能足夠好地完成這個任務(wù)。對于采用非深度學(xué)習(xí)方法的檢測器,其基礎(chǔ)的檢測精度相比會低不少,但是速度上會有明顯的優(yōu)勢,因此其關(guān)鍵在于針對特定應(yīng)用場景下的問題進(jìn)行合理的改進(jìn)和適配,以獲得更好的檢測精度。
為了提供更加便利的人機(jī)交互接口,創(chuàng)造有效的視覺理解手段,讓機(jī)器變得有溫度,會觀察,能感受,廣大的科研工作者們在人臉檢測和通用目標(biāo)檢測任務(wù)上還在繼續(xù)探索。終有一天,當(dāng)我們和機(jī)器四目相對時,彼此能夠會心一笑:科學(xué)讓生活更美好!
后記
本文從人臉檢測任務(wù)本身開始,介紹了人臉檢測的一般流程,然后分別介紹了三類不同的人臉檢測方法:以VJ人臉檢測器為代表的傳統(tǒng)方法,基于深度網(wǎng)絡(luò)的現(xiàn)代方法,以及將傳統(tǒng)的人臉檢測技術(shù)和深度網(wǎng)絡(luò)相結(jié)合的方法。然而,在人臉檢測幾十年的研究歷程中,還有很多其它的方法不能歸到這三類中來,其中比較重要的包括基于部件模型的方法和基于范本的方法,雖然本文沒有對這兩類方法進(jìn)行介紹,但是它們在人臉檢測這一問題上仍然具有重要的地位和意義,感興趣的讀者可以進(jìn)一步去閱讀相關(guān)論文進(jìn)行了解。
雷鋒網(wǎng)(搜索“雷鋒網(wǎng)”公眾號關(guān)注)注:本文由作者發(fā)布于深度學(xué)習(xí)大講堂,轉(zhuǎn)載請聯(lián)系授權(quán)并保留出處和作者,不得刪減內(nèi)容。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。