OpenCV實現人臉對齊

重磅乾貨,第一時間送達

一、人臉對齊介紹

在人臉識別中有一個重要的預處理步驟-

人臉對齊

,該操作可以大幅度提高人臉識別的準確率與穩定性,但是早期的OpenCV版本不支援人臉Landmark檢測,因此一般都是透過對人臉進行分割,然後透過角點檢測來尋找眼睛兩個角點,連線之後根據它們有水平線的角度,旋轉實現人臉對齊之後在提取人臉區域,OpenCV3。x版本開始支援獲取Landmark資料,最常見的Landmark資料就是人臉的68個標準點位,圖示如下:

OpenCV實現人臉對齊

實現對齊主要是基於眼睛的位置,對人臉傾斜進行幾何變換,實現人臉對齊操作,人臉對齊對提高人臉識別率特別重要,常見的人臉識別系統都會包含人臉對齊操作,舉例如下:

OpenCV實現人臉對齊

二、人臉對齊程式碼實現

基於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.執行效果

OpenCV實現人臉對齊

完整的程式程式碼如下:

下載1:OpenCV-Contrib擴充套件模組中文版教程

下載2:Python視覺實戰專案52講

下載3:OpenCV實戰專案20講

交流群