前言
人臉抓取和人臉識別似乎已經在不是什麼難事,公司有同事訓練了一個人臉識別模型,並使用Python搭建了一個人臉認證服務,貌似效果還不錯。雖然重了點,但是好歹也算是標新立異,技術上總比那些堆砌複雜邏輯的老陳系統要好。
前段時間有對我們產品感興趣的客戶問過一句:你們的的人臉識別能夠離線實現活體認證嗎?。回答當然是:可以…
================================一個漂亮的分割線 ==============================
首先
百度一下,我們得到的結果是這篇文章Liveness Detection with OpenCV,貌似非常靠譜,那麼現在開始搞一搞,相信我,你們在某書某金上看到的都是高仿文章,非常微妙的隱藏了原文鏈接,看起來就像是自己寫的一樣。真的!CSDN上的博主就不會這樣,因爲他們連格式都懶得粘貼,多麼硬核,好像在說,對!老子就是抄了,你說咋地吧? 資源文件會放在本文結尾處,稍安勿躁···
踩坑
Python環境 - 多版本切換
建議使用**Python3.6.9**,筆者遇到的情況是使用最新的Python3.8.0版本,但是貌似opemcv對此支持有問題,處於程序員的倔強硬剛了半個小時,但是歷史的教訓告訴我,更換版本總比修改它來的快。所以果斷下載和安裝了…Python3.7.4…
全部勾選上
加入環境變量
默認加到最前面
默認使用前面那個當環境變量,當然還有比較高明的手法 如下:這就是版本切換,不過我還是用前面的方式···
Python環境 - model配置
這個好說,缺啥補啥,唯一麻煩的就是下載慢,XXX就是提示缺失的模塊名字
//在pip install XXX命令的後面加上
--default-timeout=100 -i https://pypi.tuna.tsinghua.edu.cn/simple即可。
以下模塊都會挨個提示,一個都跑不了
運行
蒐集
==============================================人臉收集===========================================================
$ python gather_examples.py --input videos/real.mov --output dataset/real --detector face_detector --skip 1
使用方法
cmd
參數說明
input:輸入視頻文件的路徑;
output:輸出目錄的路徑;
detector:人臉檢測器的路徑;
confidence:人臉檢測的最小概率。默認值爲0.5;
skip:檢測時略過的幀數,默認值爲16;
訓練
==============================================模型訓練===========================================================
python train_liveness.py --dataset dataset --model liveness.model --le le.pickle
操作
CMD
參數說明
dataset:輸入數據集的路徑;
model:輸出模型文件保存路徑;
le:輸出序列化標籤編碼器文件的路徑;
plot:訓練腳本將生成一個圖;
綜合識別
==============================================綜合識別===========================================================
python liveness_demo.py --model liveness.model --le le.pickle --detector face_detector
操作
CMD
參數說明
### 合成
```python
=============================================打包 ===========================================================
pyinstaller -c xxxx.py
{'model': 'liveness.model', 'le': 'le.pickle', 'detector': 'face_detector', 'confidence': 0.5}
識別結果
識別結果感人···,個人認爲是訓練集還不夠多,到時候多錄幾個視頻試試
資源獲取
進入公衆號
回覆:
活體認證
獲取