背景介绍
人脸检测模块:人脸检测模块利用目标检测算确定图像中是否存在人脸目标,并准确地标出其位置; 人脸特征模块:人脸特征模块以检测模块检测得到的人脸图像作为输入,通过深度学习模型提取具有高度辨识性的人脸特征向量; 向量检索模块:计算特征向量和特征底库的相似度,从而得到对应目标的身份ID
下面就从零开始,基于PaddleX体验人脸识别产线:
安装 根据设备选择安装 PaddlePaddle
# cpu
python -m pip install paddlepaddle==3.0.0b2 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/
# gpu,该命令仅适用于 CUDA 版本为 11.8 的机器环境
python -m pip install paddlepaddle-gpu==3.0.0b2 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/
# gpu,该命令仅适用于 CUDA 版本为 12.3 的机器环境
python -m pip install paddlepaddle-gpu==3.0.0b2 -i https://www.paddlepaddle.org.cn/packages/stable/cu123/
pip install https://paddle-model-ecology.bj.bcebos.com/paddlex/whl/paddlex-3.0.0b2-py3-none-any.whl
快速体验
from paddlex import create_pipeline
pipeline = create_pipeline(pipeline="face_recognition")
index_data = pipeline.build_index("face_demo_gallery", "face_demo_gallery/gallery.txt")
output = pipeline.predict("./face_demo_gallery/test_images/", index=index_data)
for res in output:
res.print()
res.save_to_img("./output/")
上述代码中:
首先使用产线名称调用create_pipeline()方法实例化产线对象;
然后调用build_index()方法构建人脸特征向量库;
最后即可使用predict()方法进行预测,对于预测结果支持print()方法进行打印,以及save_to_img()方法进行可视化并保存为图片。
二次开发
如果对产线的预训练模型效果满意,可以直接对产线进行高性能推理/服务化部署/端侧部署,如果不满意,您也可以使用 PaddleX 进行便捷高效的二次开发,使用自己场景的数据对模型微调训练获得更优的精度。
基于 PaddleX 便捷的二次开发能力,使用统一命令即可完成数据校验、模型训练与评估推理,无需了解深度学习的底层原理,按要求准备好场景数据,简单运行命令即可完成模型迭代,此处以人脸检测模型训练为例:
python main.py -c paddlex/configs/face_detection/PicoDet_LCNet_x2_5_face.yaml \
-o Global.mode=train \
-o Global.dataset_dir=./dataset/widerface_coco_examples
上述命令中,首先指定所用模型的配置文件(此处为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官方教程文档:
人脸识别产线使用教程
人脸特征模块使用教程
人脸检测模块使用教程