littlebot
Published on 2025-04-17 / 0 Visits
0

【源码】基于Python和PyTorch框架的人脸识别及人脸质量评估系统

项目简介

本项目构建了一个集人脸识别与人脸质量评估功能于一体的系统。在提取人脸特征向量的同时,能够给出明确的定量质量评分。通过在特征提取网络上添加质量网络分支,无需训练带有质量标签的数据即可实现人脸质量评估,为实际场景中的人脸识别提供了更可靠的保障。

项目的主要特性和功能

  1. 特征提取与质量评分并行:在进行人脸特征向量提取时,同步输出人脸的定量质量评分。
  2. 多阶段训练:通过多次训练不同模块(特征训练、质量训练等),逐步优化模型性能。
  3. 可视化监控:利用tensorboard对训练过程中的损失进行可视化监控,方便及时调整参数。
  4. 模型转换与推理部署:支持将训练好的模型转换为onnx格式,可通过计算欧式余弦相似度进行人脸识别推理。

安装使用步骤

环境准备

  1. 获取训练镜像recognition:可使用docker pull fanacio/recognition:v0命令拉取,或使用本地保存的镜像recognition.tar
  2. 获取rec2img镜像:使用docker pull fanacio/rec2img命令拉取,或使用本地保存的镜像rec2img.tar
  3. 确保执行环境为A10显卡服务器(2卡机)、ubuntu18.04系统,显卡驱动版本为470.141.03。

数据集准备

  1. 将数据集格式从bin及rec转换为img格式,推荐使用方法二:
    • 下载镜像:docker pull fanacio/rec2img(也可使用本地镜像rec2img.tar)。
    • 制作docker:docker run -u 0 -it -p 3285:22 --gpus all --privileged --net=bridge --ipc=host --pid=host -v /data/data/fanyichao/model_trainging/:/home bitnami/mxnet:latest /bin/bash
    • 转换数据集:进入rec2images目录,执行python rec2image.py --include faces_webface_112x112/ --output images
  2. 生成训练文件列表:进入dataset目录,执行python generate_file_list.py,并修改文件中的路径参数。

预训练权重下载

可从模型下载地址下载预训练权重,也可使用已下载好存放在pre_weights目录下的权重。

测试预训练权重

执行python test_quality.py --backbone pre_weights/backbone.pth --quality pre_weights/quality.pth --file test_faces,结果将保存在quality_result目录中。

开始训练

  1. 第一次特征训练
    • 配置config.py文件,设置合适的参数,如BATCH_SIZEBACKBONE_LR等。
    • 执行python train_feature.py,若报错缺少bcolz库,使用conda install bcolz进行安装。
    • 训练结果保存在backbone_resume.pth目录下,将生成的权重文件重命名为backbone_resume_part1.pthhead_resume_part1.pth
  2. 质量训练
    • 再次配置config.py文件,设置BACKBONE_RESUME_ROOTHEAD_RESUME_ROOT为上一步重命名后的文件路径。
    • 执行python train_quality.py,训练结果保存在backbone_resume.pth目录下,将生成的权重文件重命名为pretrained_qulity_resume.pthpretrained_backbone_resume.pth
  3. 第二次特征训练
    • 配置config.py文件,设置PRETRAINED_BACKBONEPRETRAINED_QUALITY为上一步重命名后的文件路径。
    • 执行python train_feature.py,最终所有权重保存在backbone_resume.pth目录下,根据tensorboard观察结果选择最佳的pth权重。

可视化工具使用

进入./head_resume.pth目录,执行tensorboard --logdir . --bind_all,在本地浏览器打开相应链接进行训练损失的可视化监控。

模型转换与部署

test.py文件中设置pytorch2onnx开关,完成转onnx操作,转出两个onnx模型,一个用于识别,两个结合用于人脸质量评估。可通过计算欧式余弦相似度进行人脸识别推理。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】