圖3. SeetaFace Detector在FDDB上的ROC曲線
此外,與其他算法相比,SeetaFace Detector在速度上有一定優(yōu)勢。對于640x480大小的VGA圖像,檢測速度的對比情況如表1所示。其中,SeetaFace的速度在單個3.40GHz的i7-3770 CPU上測得,Cascade CNN[3]在CPU上的速度在2.0GHz的CPU上測得(引自原文)。而各方法在GPU上的速度在NVIDIA Titan Black GPU上測得。

特征點定位模塊SeetaFace Alignment
面部特征點定位(人臉對齊)在人臉識別、表情識別、人臉動畫合成等諸多人臉分析任務(wù)中扮演著非常重要的角色。由于姿態(tài)、表情、光照和遮擋等因素的影響,真實場景下的人臉對齊任務(wù)是一個非常困難的問題。形式上,該問題可以看作是從人臉表觀到人臉形狀的復雜非線性映射。為此,SeetaFace Alignment采用的是我們提出的一種由粗到精的自編碼器網(wǎng)絡(luò)(Coarse-to-Fine Auto-encoder Networks, CFAN [8])來求解這個復雜的非線性映射過程。如圖 4所示,CFAN級聯(lián)了多級棧式自編碼器網(wǎng)絡(luò),其中的每一級都刻畫從人臉表觀到人臉形狀的部分非線性映射。具體來說,輸入一個人臉區(qū)域(由人臉檢測模塊得到),第一級自編碼器網(wǎng)絡(luò)直接從該人臉的低分辨率版本中快速估計大致的人臉形狀S 0 。然后,提高輸入人臉圖像的分辨率,并抽取當前人臉形狀S 0 (相應(yīng)提升分辨率)各特征點位置的局部特征,輸入到下一級自編碼器網(wǎng)絡(luò)來進一步優(yōu)化人臉對齊結(jié)果。以此類推,通過級聯(lián)多個棧式自編碼器網(wǎng)絡(luò),在越來越高分辨率的人臉圖像上逐步優(yōu)化人臉對齊結(jié)果。

圖4. 基于由粗到精自編碼器網(wǎng)絡(luò)(CFAN)的實時人臉對齊方法[8]
此次開源的SeetaFace Alignment基于上述CFAN方法實現(xiàn)了5個面部關(guān)鍵特征點(兩眼中心,鼻尖和兩個嘴角)的精確定位,訓練集包括23,000余幅人臉圖像(標注了5點)。需要注意的是,為加速之目的,在基本不損失精度的情況下,開源實現(xiàn)中將CFAN級聯(lián)的數(shù)目減少到了2級,從而可在單顆Intel i7-3770 (3.4 GHz CPU)上達到每個人臉5ms的處理速度(不包括人臉檢測時間)。圖5給出了一些用SeetaFace Alignment開源引擎定位面部5點的效果示例,可見其對表情、姿態(tài)、膚色等均具有較好的魯棒性。在AFLW數(shù)據(jù)集上的量化評價和對比情況如圖6所示,其中平均定位誤差根據(jù)兩眼中心距離做了歸一化。不難看出,SeetaFace Alignment取得了state-of-the-art的定位結(jié)果。

圖5. SeetaFace Alignment定位結(jié)果示例

圖6. SeetaFace Alignment在AFLW數(shù)據(jù)集上的定位誤差及對比情況
其中LE:左眼,RE:右眼,N:鼻尖,LM:左嘴角,RM:右嘴角
人臉特征提取與比對模塊SeetaFace Identification
人臉識別本質(zhì)上是要計算兩幅圖像中人臉的相似程度,其一為注冊階段(類比人的相識過程)輸入系統(tǒng)的,另一幅為識別階段(即再見時的辨認過程)的輸入。為此,如圖7所示,一套全自動的人臉識別系統(tǒng)在完成前述的人臉檢測與人臉對齊兩個步驟之后,即進入第三個核心步驟:人臉特征提取和比對。這個階段也是深度學習風起云涌之后進步最大的模塊,目前大多數(shù)優(yōu)秀的人臉識別算法均采用卷積神經(jīng)網(wǎng)絡(luò)(CNN)來學習特征提取器(即圖7中的函數(shù)F)。

圖7.人臉識別系統(tǒng)的核心流程
SeetaFace開源的人臉特征提取模塊也是基于卷積神經(jīng)網(wǎng)絡(luò)的。具體地說,其實現(xiàn)的是[9]中所描述的深度卷積神經(jīng)網(wǎng)絡(luò)VIPLFaceNet:一個包含7個卷積層與2個全連接層的DCNN。其直接修改自Hinton教授的學生Alex Krizhevsky等于2012年設(shè)計的AlexNet(即引爆CNN在視覺中廣泛應(yīng)用的網(wǎng)絡(luò))。如表2對比所示,與AlexNet相比,VIPLFaceNet將5x5的卷積核拆分為兩層3x3的卷積核,從而增加了網(wǎng)絡(luò)深度,而并沒有增加計算量;VIPLFaceNet還減少了每個卷積層的kernel數(shù)目以及FC2層的節(jié)點數(shù)。同時,通過引入Fast Normalization Layer(FNL),加速了VIPLFaceNet的收斂速度,并在一定程度上提升了模型的泛化能力。測試表明,在相同訓練集情況下,VIPLFaceNet在LFW測試集上識別錯誤率比AlexNet降低了40%,而訓練和測試時間分別為AlexNet的20%和60%。