重磅乾貨,第一時間送達
一、人臉對齊介紹
在人臉識別中有一個重要的預處理步驟-
人臉對齊
,該操作可以大幅度提高人臉識別的準確率與穩定性,但是早期的OpenCV版本不支援人臉Landmark檢測,因此一般都是透過對人臉進行分割,然後透過角點檢測來尋找眼睛兩個角點,連線之後根據它們有水平線的角度,旋轉實現人臉對齊之後在提取人臉區域,OpenCV3。x版本開始支援獲取Landmark資料,最常見的Landmark資料就是人臉的68個標準點位,圖示如下:
實現對齊主要是基於眼睛的位置,對人臉傾斜進行幾何變換,實現人臉對齊操作,人臉對齊對提高人臉識別率特別重要,常見的人臉識別系統都會包含人臉對齊操作,舉例如下:
二、人臉對齊程式碼實現
基於OpenCV實現人臉對齊主要分為如下幾步
1.人臉檢測器定義與Landmark檢測
OpenCV中透過HAAR或者LBP特徵實現了人臉檢測,最新的OpenCV3。4基於殘差網路也實現了人臉檢測,相關的文章可以閱讀:
有了人臉之後,我們就可以透過載入預訓練的Landmark檢測模型,實現Landmark檢測,這裡使用的模型是區域性二值特徵(LBF-Local Binary Feature)實現人臉68個點位的檢測,這個也是2014年CVPR的一篇論文。最新的OpenCV3。4 Landmark檢測器支援自定義人臉檢測器設定,所以只要把我們上面的HAAR/LBP/殘差人臉檢測器設定過去就會自動檢測人臉,然後發現Landmark資料。整個程式碼實現如下:
2.Landmark資料處理
對Landmark資料提取獲得眼睛位置座標,這裡我們獲取的是36與45兩個點座標計算角度(參照第一張圖),然後通過幾何變換實現人臉對齊操作。程式碼如下:
3.執行效果
完整的程式程式碼如下:
下載1:OpenCV-Contrib擴充套件模組中文版教程
下載2:Python視覺實戰專案52講
下載3:OpenCV實戰專案20講
交流群