关灯

用OpenCV搭建活體檢測器3

[复制链接]
qeqwrr 发表于 2021-11-24 10:55:31 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
71 行確保我們的面部檢測 ROI 滿足最小閾值,從而減少假陽性。

在 74~76 行提取了面部 ROI 和相應的邊界框。

在 79~81 行為面部 ROI 生成了路徑和檔名,並將它寫在磁碟上。 此時,我們就可以增加保存的面部圖像數量了。   

處理完成後,我們將在86和87行執行清理工作。

建立活體檢測圖像數據集

圖 4:OpenCV 面部活體檢測數據集。 我們要用 Keras 和 OpenCV 來訓練並演示活體模型。

現在我們已經實現了 gather_example.py 腳本,接下來要讓它開始工作。

確保你已經用這篇教程的「Downloads」部分獲取了原始程式碼和輸入視頻樣例。

打開終端並執行下面的命令來提取「偽造」類的面部

也可以對「真實」類別的面部執行同樣的操作

因為「真」視頻比「假」視頻長,因此我們得把跳過幀的值設置得更長,來平衡每一類輸出的面部ROI數量。

在執行這個文稿之後,你的圖像數量應該如下:

  • 偽造面部:150 張圖片;
  • 真實面部:161 張圖片;
  • 總數:311 張圖片。


實現「LivenessNet」——我們的深度學習活體檢測器
圖 5:LivenessNet(一個用來檢測圖片和視頻中面部活性的 CNN)的深度學習架構。

下一步就要實現基於深度學習的活體檢測器「LivenessNet」了。

從核心上講,LivenessNet 實際上就是一個簡單的卷積神經網路。

我們要讓這個網路盡可能淺,並用盡可能少的參數,原因如下:

  • 避免因數據集小而導致的過擬合;
  • 確保活性檢測器足夠快,能夠實時運行(即便是在像樹莓派這樣資源受限的設備上)。


現在來實現 LivenessNet 吧。 開啟 livenessnet.py 並插入下面的代碼:

所有導入(import)的包都來自 Keras(2~10 行)。 要深入了解這些層和函數,請參考《Deep Learning for Computer Vision with Python》。        

第 12 行定義了 LivenessNet 的類。 這裡用了一種靜態方法——build(14 行)。 build 方法接受 4 個參數:

  • width:圖片/體積的寬度;
  • height:圖片的高度;
  • depth:圖像的通道數量(本例中是 3,因為我們處理的是 RGB 圖像);
  • classes:類的數量。 我們總共有兩類:「真」和「假」。


在17行初始化模型。

在 18 行定義了 inputShape,在 23~25 行確定了通道順序。

接著給 CNN 新增層:

我們的CNN展現了 VGGNet 特有的品質——只學習了少量的篩檢程式。 在理想情況下,我們不需要能區分真實面部和偽造面部的深度網路。

28~36 行是第一個層的集合——CONV => RELU => CONV => RELU => POOL,這裡還添加了批歸一化和 dropout。

39~46 行添加了另一個層集合——CONV => RELU => CONV => RELU => POOL。
最後,我們還要添加FC =>RELU層:

49~57 行添加了全連接層和帶有 softmax 分類器 head 的 ReLU 啟動層。

模型在 60 行返回到訓練腳本。

創建訓練活體檢測器的腳本

回复

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


0关注

1粉丝

11983帖子

热门图文
排行榜

关注我们:微信订阅号

官方微信

APP下载

全国服务热线:

4000-018-018

公司地址:上海市嘉定区银翔路655号B区1068室

运营中心:成都市锦江区东华正街42号广电仕百达国际大厦25楼

邮编:610066 Email:2575163778#qq.com

Copyright   ©2017-2018  我爱AQPowered by©xiebaclub.com!技术支持:邪霸园