面部特征點定位在人臉識別、表情識別、人臉動畫等人臉分析任務中至關重要的一環(huán)。人臉定位算法需要選取若干個面部特征點,點越多越精細,但同時計算量也越大。兼顧精確度和效率,我們選用雙眼中心點、鼻尖及嘴角五個特征點。經(jīng)測試,它們在表情、姿態(tài)、膚色等差異上均表現(xiàn)出很好的魯棒性。
人臉定位接口程序如下所示,需要先加載預先訓練好的模型,再進行定位檢測:
人臉定位程序的效果如下所示:
本算法在AFLW數(shù)據(jù)集上的定位誤差及與其他算法的對比情況:
3.人臉校準
本步驟目的是擺正人臉,將人臉置于圖像中央,減小后續(xù)比對模型的計算壓力,提升比對的精度。主要利用人臉定位獲得的5個特征點(人臉的雙眼、鼻尖及嘴角)獲取仿射變換矩陣,通過仿射變換實現(xiàn)人臉的擺正。
目標圖形以(x,y)為軸心順時針旋轉(zhuǎn)Θ弧度,變換矩陣為:
人臉校準C++代碼可參考如下所示:
一般此步驟不建議使用外部庫做變換,所以這里提供仿射變換python源碼以供參考:
人臉校準的效果如圖所示:
4.人臉比對
人臉比對和人臉身份認證的前提是需要提取人臉獨有的特征點信息。在人臉校準之后可以利用深度神經(jīng)網(wǎng)絡,將輸入的人臉進行特征提取。如將112×112×3的臉部圖像提取256個浮點數(shù)據(jù)特征信息,并將其作為人臉的唯一標識。在注冊階段把256個浮點數(shù)據(jù)輸入系統(tǒng),而認證階段則提取系統(tǒng)存儲的數(shù)據(jù)與當前圖像新生成的256個浮點數(shù)據(jù)進行比對最終得到人臉比對結(jié)果。
人臉比對流程的示意圖如下所示:
通過神經(jīng)網(wǎng)絡算法得到的特征點示意圖如下:
而人臉比對則是對256個浮點數(shù)據(jù)之間進行距離運算。計算方式常用的有兩種,一種是歐式距離,一種是余弦距離。x,y向量歐式距離定義如下: