天天看點

【機器學習實踐】人臉活體檢測

作者:AIPlayer
【機器學習實踐】人臉活體檢測

人臉活體檢測(Face Anti-spoofing),在人臉識别前判斷目前輸入的人臉是否是真人,可以有效防止欺騙攻擊。

一、概述

1、常見的欺騙方式

一般的人臉識别欺騙攻擊方式有:(1)照片列印的彩色人臉照片;(2)視訊:錄制的一段人臉視訊;(3)3D面具:3D列印人的頭部模型等。

2、活體檢測方法

要對人臉進行活體檢測,本質上可以了解為真假人臉的二分類問題,基本的方法有:

  • 基于紋理特征

利用真假人臉在紋理細節上的差異,提取人臉的LBP,DoG和SURF等特征,訓練一個二分類的分類器如SVM,LDA。這種方式往往對光照和相機條件比較敏感,魯棒性較差。

  • 基于運動資訊

從視訊中提取人臉區域的特定運動資訊判斷真假人臉,利用使用者的眨眼、嘴部運動,點頭搖頭等資訊進行判斷。此方法需要使用者配合,多用于金融安全身份驗證,對實時門禁系統不太适用。

  • 基于深度學習

利用深度學習網絡如CNN、RNN等訓練判斷真假人臉的二分類網絡模型。由于深度學習的訓練需要基于大量的資料,而人臉活體欺騙的場景資料集種類有限,難以覆寫欺騙的方式,測試集和訓練集分布有很大差異,容易出現過拟合問題,模型在測試集上效果不理想。

  • 借助輔助裝置

利用外部輔助裝置如近紅外等,選取兩個波段結合可見光成像進行人臉僞裝檢測。此方式對采集條件要求比較嚴格,成本高于普通可見光系統。

3、常用資料集

【機器學習實踐】人臉活體檢測

人臉活體檢測常用資料集

  • NUAA - http://parnec.nuaa.edu.cn/xtan/data/nuaaimposterdb.html,http://parnec.nuaa.edu.cn/xtan/NUAAImposterDB_download.html
  • Replay-Attack dataset - https://www.idiap.ch/dataset/replayattack
  • CASIA Face Anti-Spoofing Database - http://www.cbsr.ia.ac.cn/english/FaceAntiSpoofDatabases.asp
  • MSU Mobile Face Spoofing Database (MSU MFSD) - http://biometrics.cse.msu.edu/Publications/Databases/MSUMobileFaceSpoofing/index.htm#Download_instructions

二、基于HSV + YCrCb顔色特征訓練簡單的CNN模型

項目位址:

https://github.com/Oreobird/Face-Anti-Spoofing

1、網絡模型結構

基于tensorflow keras實作,網絡模型比較簡單,如下圖所示,模型為多輸入單輸出結構,對人臉圖像轉換為HSV和YCrCb顔色空間,分别輸入到VGG16基礎網絡中提取特征,然後将兩者融合後,再加入幾層全連接配接,最終以softmax輸出真假人臉的分類機率。

模型的訓練與測試都封裝在models.py檔案的FasNet類中。

【機器學習實踐】人臉活體檢測

網絡結構

2、資料集

資料集使用了NUAA,訓練資料的處理在datasets.py檔案,其中DataSet是通用的讀取資料類,NUAA類以DataSet提供的接口封裝了對NUAA資料集的相關操作。

3、測試

通過Dlib檢測攝像頭實時讀取的視訊資料中的人臉,送入到訓練好的模型做推理。

三、總結

本文簡單概述了人臉活體檢測相關的基礎知識,并基于Tensorflow + Keras通過圖像的HSV和YCrCb顔色特征訓練一個簡單的CNN分類模型,然後利用Dlib庫的人臉檢測子產品實作了實時視訊人臉活體檢測Demo。

繼續閱讀