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