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