前言
人脸抓取和人脸识别似乎已经在不是什么难事,公司有同事训练了一个人脸识别模型,并使用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}
识别结果
识别结果感人···,个人认为是训练集还不够多,到时候多录几个视频试试
资源获取
进入公众号
回复:
活体认证
获取