🚧
🛀

5fsf">

    • 🌖
      🎰📙
      📣
      🏪
    • 📖
    • 🔳😵
      🔡
      😧
      🍼🎨
      🐴
    • 🤩

      PaddleX上线人脸定位与识别端到端模型产线,为安全监控、身份认证、智能家居等领域保驾护航

      发布时间:2024-11-28 18:23  浏览量:5

      ▎背景介绍

      人脸识别任务是计算机视觉领域的一个重要应用方向,旨在通过分析和比较人脸特征,实现对个人身份的自动识别。该任务不仅需要检测图像中的人脸,还需要对人脸图像进行特征提取和匹配,从而在数据库中检索匹配到对应的身份信息。人脸识别广泛应用于安全认证、监控系统、社交媒体和智能设备等场景。

      PaddleX 人脸识别产线是专注于解决人脸定位和识别任务的端到端模型产线,可以从图像中快速准确地定位人脸区域、提取人脸特征,并与特征库中预先建立的特征做检索比对,从而确认身份信息。

      PaddleX 人脸识别产线主要由人脸检测、人脸特征和向量检索三个模块组成:

      人脸检测模块:人脸检测模块利用目标检测算确定图像中是否存在人脸目标,并准确地标出其位置;

      人脸特征模块:人脸特征模块以检测模块检测得到的人脸图像作为输入,通过深度学习模型提取具有高度辨识性的人脸特征向量;

      向量检索模块:计算特征向量和特征底库的相似度,从而得到对应目标的身份 ID。

      PaddleX 提供了4个人脸检测模型:BlazeFace 模型是由谷歌提出的轻量高效人脸检测模型,能够在移动设备和 web 端快速进行人脸检测。BlazeFace-FPN-SSH 模型通过在 BlazeFace 模型的基础上添加 FPN 和 SSH 的 neck 结构,牺牲了一点性能换来了更高的检测精度。同时,我们在人脸检测数据集上,基于飞桨的特色检测模型 PicoDet 和 PP-YOLOE+进行了训练,得到了精度更为优秀的人脸检测模型 PicoDet_LCNet_x2_5_face 和 PP-YOLOE_plus-S_face

      注:以上精度指标是在 WIDER-FACE 验证集上,以640*640作为输入尺寸评估得到的。所有模型 GPU 推理耗时基于 NVIDIA V100机器,精度类型为 FP32, CPU 推理速度基于 Intel(R) Xeon(R) Gold 6271C CPU @ 2.60GHz,精度类型为 FP32。

      同时,PaddleX 目前支持了基于 ArcFace 损失函数训练的人脸特征模型,包括 MobileFaceNetResNet50_face。MobileFaceNet 在轻量化模型 MobileNetv2的基础上,降低了模型对输入图像的下采样倍率,替换 ReLU 激活函数为 PReLU,以及采用全局深度卷积层(GDConv)替代传统的全局平均池化层(GAP),以更好地捕捉人脸特征。ResNet50_face 模型是在 ResNet50的基础上针对人脸识别任务进行了调整,将整体的下采样倍率从原先的32x 降低到了16x。

      注:以上精度指标是分别在 AgeDB-30、CFP-FP 和 LFW 数据集上测得的 Accuracy。所有模型 GPU 推理耗时基于 NVIDIA Tesla T4机器,精度类型为 FP32, CPU 推理速度基于 Intel(R) Xeon(R) Gold 5117 CPU @ 2.00GHz,线程数为8,精度类型为 FP32。

      02

      使用方法

      下面就从零开始,基于 PaddleX 体验人脸识别产线:

      ▎安装

      (详细代码请移步至百度AI公众号内同篇文章查看)

      PaddleX 提供了简单易用的 Python API,只需几行代码即可体验端到端预测效果,在人脸识别的运行示例中需要预先构建索引库,您可以下载官方提供的 demo 测试数据集,方便大家快速体验效果:

      上述代码中:

      1.首先使用产线名称调用 create_pipeline方法实例化产线对象;

      2.然后调用 build_index方法构建人脸特征向量库;

      3.最后即可使用 predict方法进行预测,对于预测结果支持 print方法进行打印,以及 save_to_img方法进行可视化并保存为图片。

      人脸识别产线官方权重可视化结果

      人脸识别产线在卡通数据上微调后的可视化结果

      如果对产线的预训练模型效果满意,可以直接对产线进行高性能推理/服务化部署/端侧部署,如果不满意,您也可以使用 PaddleX 进行便捷高效的二次开发,使用自己场景的数据对模型微调训练获得更优的精度。

      基于 PaddleX 便捷的二次开发能力,使用统一命令即可完成数据校验、模型训练与评估推理,无需了解深度学习的底层原理,按要求准备好场景数据,简单运行命令即可完成模型迭代,此处以人脸检测模型训练为例:

      上述命令中,首先指定所用模型的配置文件(此处为
      PicoDet_LCNet_x2_5_face.yaml),然后选择模式为模型训练:-o Global.mode=train,再指定数据集路径:-o Global.dataset_dir 即可。

      更多参数也可以继续在命令中追加参数设置:如指定前2卡 gpu 训练:-o Global.device=gpu:0,1;设置训练轮次数为10:-o Train.epochs_iters=10。此外,相关参数均可通过修改.yaml 配置文件中的 Global Train 的具体字段来进行设置。

      其余更详细的使用方法及产线部署、自定义数据集相关的内容,请参考 PaddleX 官方教程文档:

      人脸识别产线使用教程

      03

      精彩课程预告

      为了帮助您迅速且深入地了解人脸识别全流程解决方案,百度研发工程师将于11月28日(今日)19:00为您深度解析本次技术升级。此外,我们还将开设针对人脸识别产线的产业场景实战营,手把手带您体验从数据准备、数据校验、模型训练、性能优化到模型部署的完整开发流程。机会难得,立即扫描下方二维码预约吧!

      外部推荐

      🛢🍏

      🏭🔞

      ⛸🥅

      U2x4eTxzokEimx">

      🐗🏠
      😢
        😜🕷
        1. 🎳🎰
        • 🍒
          🌚
        • 🤔🖼
          🤵
        • 🗼
          🐜
        • 🥝