1. 程式人生 > 實用技巧 >人臉識別活體檢測技術理論

人臉識別活體檢測技術理論

文章目錄

1 人臉識別活體檢測技術

  • 動作配合式活體檢測
  • 線上圖片的活體檢測
  • H5視訊活體檢測
  • 離線紅外線活體檢測
  • 離線3D結構活體檢測
  • 離線RGB活體檢測

2 人臉識別活體檢測動作方案

下面的眨眼和張嘴,搖頭和點頭,都是通過連續的圖片,計算變化距離與不變距離的比,進行上一幀影象與下一幀影象的比,來判斷是否為活體。這裡用的是dlib,速度很快,可以做到實施檢測,每秒20幀是可以做到的。

2.1眨眼和張嘴

在這裡插入圖片描述

下面介紹張嘴檢測,見下圖。模仿眨眼,取點的時候需要注意,內圈的點變化更加明顯。變化距離建議取內圈,固定距離選用外圈。

在這裡插入圖片描述
在這裡插入圖片描述

2.2 搖頭與點頭

搖頭和點頭的方法近視,用到一和上面的想法幾乎一樣。
首先說搖頭,當搖頭的時候,你的臉頰會變窄,而你的鼻子長度幾乎是不變的。
在這裡插入圖片描述
在這裡插入圖片描述

點頭的時候,鼻子的距離會變短,而臉頰的會幾乎不會邊窄。
在這裡插入圖片描述

2.3 防止照片攻擊

用到的技術很簡單,就是影象雜湊演算法。

過程是這樣的:

  1. 1、通過攝像頭檢測場景,如果沒有人臉,儲存當前的背景圖片。
  2. 2、如果5分鐘內沒有檢測到人臉,用現在時間的場景影象代替記憶體中的影象。看作5分鐘內場景內的光線變化不大。
  3. 3、如果檢測人臉目標,隨機擷取背景圖片,同時擷取記憶體中對應位置的影象。兩者進行雜湊影象運算,比較兩者的漢明距離。
  4. 4、關於隨機擷取多少個影象,和多大。這個要根據本地服務效能來決定。我設計的用了7個截圖。

2.4 關於雜湊影象的比較

(1)平均雜湊(均值雜湊演算法)

  • 1.圖片縮放,一般為88,或者3232
  • 2.將圖片灰度化
  • 3.求平均值,並根據平均值將每一個畫素二值化
  • 4.將8*8=64位bit,每8個位元為一個十六進位制值,轉換成字串,生成雜湊值(指紋)

(2)感知雜湊(感知雜湊演算法)

  • 1 影象縮放為32*32大小
  • 2 將影象灰度化
  • 3 對影象進行離散餘弦變化(DCT),轉換到頻域。
  • 4 取頻域左上角8*8大小(影象的能量都集中在低頻部分,低頻位於左上角)
  • 5 計算平均值,病菌據平均值二值化(同平均雜湊)。
  • 6 生成雜湊值。

(3)差異值雜湊(差值雜湊演算法)

  • 1 圖片縮放為9*8大小
  • 2 將圖片灰度化
  • 3 差異值計算(每行相鄰畫素的差值,這樣會生成一個8*8的差值,前一個畫素大於後一個畫素則為1,否則為0)。
  • 4 生成雜湊值。

(4)計算雜湊距離(漢明距離)
生成每一個圖片的雜湊值後,需要計算雜湊值的距離,來判斷兩張圖片的相似度。一般使用漢明距離,也就是逐位計算兩張圖片的雜湊值是否相同。