欢迎关注我的公众号 [极智视界],获取我的更多经验分享
大家好,我是极智视界,本文来介绍 实战静默活体人脸检测。
本文介绍的 实战静默活体人脸检测,提供完整的可以一键执行的项目工程源码,获取方式有两个:
(1) 本文工程项目资源下载,链接:download.csdn.net/download/we...
(2) 【推荐 】加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:t.zsxq.com/0aiNxERDq
活体检测技术的首要任务是鉴别计算机视觉系统前方的人脸是真实的还是伪造的。伪造的人脸可能涵盖各种表现形式,包括但不限于打印在纸上的照片、电子设备的屏幕显示、硅胶面具,以及立体的3D人像等。目前,主要的活体检测解决方案可以划分为配合式活体检测和非配合式活体检测,也称为静默活体检测。在配合式活体检测中,用户需要按照系统的提示执行特定的生物特征活动,然后系统会对这些生物特征活动进行监测和验证。这些生物特征活动可能包括眨眼、摇头、或者其他生物特征的反应。这种方法需要用户的积极互动,以确保人脸的真实性。与之相对,非配合式活体检测,或静默活体检测,是在用户无需特定生物特征互动或介入的情况下直接进行活体验证。系统通过分析人脸的生物特征,例如皮肤反应、眼动,以及其他生理指标,来判断人脸的真实性。这种方法更加强调用户的便捷性,因为用户不需要采取额外的操作来完成验证过程。
在拿到本项目的代码后,进行环境的配置,
ini
# 使用Anaconda3来管理py环境, 安装Anaconda3的过程略过
# 创建虚拟环境
conda create -n silent_facedet_py37 python=3.7
# 激活虚拟环境
conda activate silent_facdedet_py37
# 安装依赖
pip install -r requirements.txt
然后即可一键执行,直接一键执行项目中的 run_det.sh
就可,run_det.sh
内容如下,
bash
#!/bin/bash
python test.py --device_id 0 \
--model_dir "./resources/silentdet_models" \
--image_name "001.jpg"
这样其实能看到本项目的几个传参,可以通过 --image_name
来修改传入的图片, 检测结果是否为活体会在控制台打印,图片检测结果会同时存放在 images/sample
同级目录下。具体的执行检测的传参代码部分如下,
ini
...
if __name__ == "__main__":
desc = "test"
parser = argparse.ArgumentParser(description=desc)
parser.add_argument(
"--device_id",
type=int,
default=0,
help="which gpu id, [0/1/2/3]")
parser.add_argument(
"--model_dir",
type=str,
default="./resources/silentdet_models",
help="model_lib used to test")
parser.add_argument(
"--image_name",
type=str,
default="002.jpg",
help="image used to test")
args = parser.parse_args()
test(args.image_name, args.model_dir, args.device_id)
下面展示几个检测效果,
FakeFace:
FakeFace:
RealFace:
若你不满足于直接使用 (直接采用这里提供的训练的好的模型进行活体人脸检测),也可以采用自己的训练集进行训练。项目内也提供了训练脚本,不过需要自己准备训练数据集,按 datasets/README.md
的目录结构进行组织
训练的传参,
python
...
def parse_args():
"""parsing and configuration"""
desc = "Silence-FAS"
parser = argparse.ArgumentParser(description=desc)
parser.add_argument("--device_ids", type=str, default="1", help="which gpu id, 0123")
parser.add_argument("--patch_info", type=str, default="1_80x80",
help="[org_1_80x60 / 1_80x80 / 2.7_80x80 / 4_80x80]")
args = parser.parse_args()
cuda_devices = [int(elem) for elem in args.device_ids]
os.environ["CUDA_VISIBLE_DEVICES"] = ','.join(map(str, cuda_devices))
args.devices = [x for x in range(len(cuda_devices))]
return args
主要是 --patch_info
需要解释一下,这个 patch_info 是采用多尺度模型融合的方法,采用原图喝扩展图的数据,具体的,
- 原图直接resize到 (w,h);
- 扩展图的由来:先对原图做人脸检测,然后对人脸框图按一定的scale进行扩展,设置这个scale分别为1、2.7、4;
- 最后将上面这四张图打成patch,成为一个patch_info,
在 images
目录下放置了一张 patch_demo.jpg
的patch示例图片供参考,如下,
好了,以上分享了 实战静默活体人脸检测,并提供完整的项目源码。希望我的分享能对你的学习有一点帮助。
【公众号传送】
畅享人工智能的科技魅力,让好玩的AI项目不难玩。邀请您加入我的知识星球, 星球内我精心整备了大量好玩的AI项目,皆以工程源码形式开放使用,涵盖人脸、检测、分割、多模态、AIGC、自动驾驶、工业等。不敢说会对你学习有所帮助,但一定非常好玩,并持续更新更加有趣的项目。 t.zsxq.com/0aiNxERDq