极智项目 | 实战静默活体人脸检测
  HRODlxSsrDy9 2023年11月02日 80 0


欢迎关注我的公众号 [极智视界],获取我的更多经验分享

大家好,我是极智视界,本文来介绍 实战静默活体人脸检测。

本文介绍的 实战静默活体人脸检测,提供完整的可以一键执行的项目工程源码

活体检测技术的首要任务是鉴别计算机视觉系统前方的人脸是真实的还是伪造的。伪造的人脸可能涵盖各种表现形式,包括但不限于打印在纸上的照片、电子设备的屏幕显示、硅胶面具,以及立体的3D人像等。目前,主要的活体检测解决方案可以划分为配合式活体检测和非配合式活体检测,也称为静默活体检测。在配合式活体检测中,用户需要按照系统的提示执行特定的生物特征活动,然后系统会对这些生物特征活动进行监测和验证。这些生物特征活动可能包括眨眼、摇头、或者其他生物特征的反应。这种方法需要用户的积极互动,以确保人脸的真实性。与之相对,非配合式活体检测,或静默活体检测,是在用户无需特定生物特征互动或介入的情况下直接进行活体验证。系统通过分析人脸的生物特征,例如皮肤反应、眼动,以及其他生理指标,来判断人脸的真实性。这种方法更加强调用户的便捷性,因为用户不需要采取额外的操作来完成验证过程。

在拿到本项目的代码后,进行环境的配置,

# 使用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内容如下,

#!/bin/bash 

python test.py --device_id 0 \
               --model_dir "./resources/silentdet_models" \
               --image_name "001.jpg"

这样其实能看到本项目的几个传参,可以通过 --image_name 来修改传入的图片, 检测结果是否为活体会在控制台打印,图片检测结果会同时存放在 `images/sample` 同级目录下。具体的执行检测的传参代码部分如下,

...
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:

极智项目 | 实战静默活体人脸检测_人脸检测_02

RealFace:

极智项目 | 实战静默活体人脸检测_人脸检测_03

若你不满足于直接使用 (直接采用这里提供的训练的好的模型进行活体人脸检测),也可以采用自己的训练集进行训练。项目内也提供了训练脚本,不过需要自己准备训练数据集,按 datasets/README.md 的目录结构进行组织

训练的传参,

...
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示例图片供参考,如下,

极智项目 | 实战静默活体人脸检测_活体检测_04

好了,以上分享了 实战静默活体人脸检测,并提供完整的项目源码。希望我的分享能对你的学习有一点帮助。


畅享人工智能的科技魅力,让好玩的AI项目不难玩。邀请您加入我的知识星球,星球内我精心整备了大量好玩的AI项目,皆以工程源码形式开放使用,涵盖人脸、检测、分割、多模态、AIGC、自动驾驶、工业等。不敢说会对你学习有所帮助,但一定非常好玩,并持续更新更加有趣的项目。

极智项目 | 实战静默活体人脸检测_深度学习_05

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
HRODlxSsrDy9