對不同的人進(jìn)行區(qū)分是很多智能系統(tǒng)的必備能力。所謂的人臉識別技術(shù)也是為了實(shí)現(xiàn)此目的開發(fā)出來的,通過對人臉的光學(xué)成像來感知人、識別人。經(jīng)過幾十年的研發(fā)積累,特別是近年來深度學(xué)習(xí)技術(shù)的涌現(xiàn),人臉識別取得了長足的進(jìn)步,在安防、金融、教育、社保等領(lǐng)域得到了越來越多的應(yīng)用,也成為計(jì)算機(jī)視覺領(lǐng)域最為成功的分支領(lǐng)域之一。
然而,人臉識別并非是完全成熟的技術(shù),離公眾期望的全面應(yīng)用尚有距離,仍然需要學(xué)術(shù)界、工業(yè)界的共同努力。為此,整個(gè)人臉識別社區(qū)需要有基準(zhǔn)(Baseline)系統(tǒng),而且基準(zhǔn)系統(tǒng)的水平顯然會極大影響著該領(lǐng)域的發(fā)展水平??墒橇钊藢擂蔚氖?,這個(gè)領(lǐng)域迄今尚無一套包括所有技術(shù)模塊的、完全開源的基準(zhǔn)人臉識別系統(tǒng)。最新開源的SeetaFace人臉識別引擎也許能改變這個(gè)現(xiàn)狀,該引擎代碼由中科院計(jì)算所山世光研究員帶領(lǐng)的人臉識別研究組研發(fā)。代碼基于C++實(shí)現(xiàn),且不依賴于任何第三方的庫函數(shù),開源協(xié)議為BSD-2,可供學(xué)術(shù)界和工業(yè)界免費(fèi)使用。
SeetaFace人臉識別引擎包括了搭建一套全自動人臉識別系統(tǒng)所需的三個(gè)核心模塊,即:
人臉檢測模塊SeetaFace Detection
面部特征點(diǎn)定位模塊SeetaFace Alignment
人臉特征提取與比對模塊SeetaFace Identification
其中,人臉檢測模塊SeetaFace Detection采用了一種結(jié)合傳統(tǒng)人造特征與多層感知機(jī)(MLP)的級聯(lián)結(jié)構(gòu),在FDDB上達(dá)到了84.4%的召回率(100個(gè)誤檢時(shí)),并可在單個(gè)i7 CPU上實(shí)時(shí)處理VGA分辨率的圖像。
面部特征點(diǎn)定位模塊SeetaFace Alignment通過級聯(lián)多個(gè)深度模型(棧式自編碼網(wǎng)絡(luò))來回歸5個(gè)關(guān)鍵特征點(diǎn)(兩眼中心、鼻尖和兩個(gè)嘴角)的位置,在AFLW數(shù)據(jù)庫上達(dá)到state-of-the-art的精度,定位速度在單個(gè)i7 CPU上超過200fps。
人臉識別模塊SeetaFace Identification采用一個(gè)9層的卷積神經(jīng)網(wǎng)絡(luò)(CNN)來提取人臉特征,在LFW數(shù)據(jù)庫上達(dá)到97.1%的精度(注:采用SeetaFace人臉檢測和SeetaFace面部特征點(diǎn)定位作為前端進(jìn)行全自動識別的情況下),特征提取速度為每圖120ms(在單個(gè)i7 CPU上)。
下面來簡要了解下上述三個(gè)核心模塊,更多詳細(xì)資料可以參考相關(guān)閱讀中的內(nèi)容。
對人臉進(jìn)行檢測SeetaFace Detection
人臉檢測模塊SeetaFace Detection基于一種結(jié)合經(jīng)典級聯(lián)結(jié)構(gòu)和多層神經(jīng)網(wǎng)絡(luò)的人臉檢測方法實(shí)現(xiàn),其所采用的漏斗型級聯(lián)結(jié)構(gòu)(Funnel-Structured Cascade,F(xiàn)uSt)專門針對多姿態(tài)人臉檢測而設(shè)計(jì),其中引入了由粗到精的設(shè)計(jì)理念,兼顧了速度和精度的平衡。如圖1所示,F(xiàn)uSt級聯(lián)結(jié)構(gòu)在頂部由多個(gè)針對不同姿態(tài)的快速LAB級聯(lián)分類器構(gòu)成,緊接著是若干個(gè)基于SURF特征的多層感知機(jī)(MLP)級聯(lián)結(jié)構(gòu),最后由一個(gè)統(tǒng)一的MLP級聯(lián)結(jié)構(gòu)(同樣基于SURF特征)來處理所有姿態(tài)的候選窗口,整體上呈現(xiàn)出上寬下窄的漏斗形狀。從上往下,各個(gè)層次上的分類器及其所采用的特征逐步變得復(fù)雜,從而可以保留人臉窗口并排除越來越難與人臉區(qū)分的非人臉候選窗口。
圖1. SeetaFace人臉檢測模塊所采用的FuSt漏斗型級聯(lián)結(jié)構(gòu)
與SeetaFace Detection開源代碼配套開放的是一個(gè)準(zhǔn)正面人臉檢測模型(使用了約20萬人臉圖像訓(xùn)練而來),可以實(shí)現(xiàn)準(zhǔn)正面人臉的準(zhǔn)確檢測(旋轉(zhuǎn)角度約45度以內(nèi),但對于姿態(tài)偏轉(zhuǎn)較大的人臉也具備一定的檢測能力),圖2給出了一些檢測結(jié)果的示例(注:測試時(shí)圖像金字塔下采樣比例設(shè)置為0.8,滑動步長設(shè)置為4和2,最小人臉設(shè)置為20×20)。