当前位置: 首页 > news >正文

AI 实战5 - pytorch框架实现face检测

pytorch框架实现face检测

  • 简介
    • 模型结构
    • 算法原理
  • 环境
    • 开发环境
    • SDK 环境
  • 数据
    • wider_face 数据集解压后目录结构
    • wider_face 训练环境需要的目录结构
    • 标注格式转换
  • 训练
  • 测试
    • WIDER_FACE验证集测试结果
  • 参考

简介

模型结构

CenterFace是一种人脸检测算法,采用轻量级网络mobileNetV2作为主干网络,结合特征金字塔网络(FPN)实现anchor free的人脸检测。

算法原理

CenterFace模型是一种基于单阶段人脸检测算法,作者借鉴了CenterNet的思想,将人脸检测转换为标准点问题,根据人脸中心点来回归人脸框的大小和五个标志点。

参数说明
FFeature Map
HM人脸分类的HeatMap
Offset人脸框中心点偏移
WH人脸框宽,高
x_l,y_l人脸框左上角点的x,y坐标
x_r,y_r人脸框右下角点的x,y坐标
cConfidence 置信度

在这里插入图片描述

环境

开发环境

  1. GPU服务器:pytorch1.13.0,python3.10,cuda==11.7
  2. nvidia-smi 查看 CUDA 版本
    在这里插入图片描述3. 官网查看对应cuda版本的PyTorch,使用生成命令行安装
    在这里插入图片描述3. 环境安装
conda create -n centerface python=3.7
conda activate centerface
pip3 install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple# 不安装cython报错,编译cocoAPI报错缺少 _mask.c
pip install -U cython -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install numba -i https://pypi.tuna.tsinghua.edu.cn/simplepip install -U 'setuptools>=18.0' -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -U 'matplotlib>=2.1.0' -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install tqdm -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -U progress -i https://pypi.tuna.tsinghua.edu.cn/simple## 原因:不修改,训练出来的模型精度有影响
## 定位 torch.batch_norm行,将 torch.backends.cudnn.enabled 选项更改为False
## vim /data/miniconda/envs/centernet/lib/python3.7/site-packages/torch/nn/functional.py +1697## 安装cocoAPI
mkdir /data/coding/detect
COCOAPI=/data/coding/detect/cocoapi
git clone https://github.com/cocodataset/cocoapi.git $COCOAPI
cd $COCOAPI/PythonAPI
python setup.py install --user
make# 获取训练工程
CenterFace_ROOT=/data/coding/detect/centerface_pytorch
git clone http://developer.sourcefind.cn/codes/modelzoo/centerface_pytorch.git $CenterFace_ROOTcd $CenterFace_ROOT/src/lib/external/
python setup.py install --user
make# 编译NMS
# cd $CenterNet_ROOT/lib/nms
# make

SDK 环境

  1. 参考http://developer.sourcefind.cn/codes/modelzoo/centerface_pytorch
  2. 开源训练数据:http://shuoyang1213.me/WIDERFACE/

数据

wider_face 数据集解压后目录结构

├── wider_face:  存放数据集根目录
│   ├── WIDER_train: 训练集解压后的文件目录
│       └── images:
│           ├──  0--Parade:         对应该类别的所有图片
│           ├──  ........
│           └──  61--Street_Battle: 对应该类别的所有图片
│   ├── WIDER_val: 验证集解压后的文件目录
│       └──  images:
│           ├──  0--Parade:         对应该类别的所有图片
│           ├──  ........
│           └──  61--Street_Battle: 对应该类别的所有图片
│   ├── WIDER_test: 训练集解压后的文件目录
│       └──  images:
│           ├──  0--Parade:         对应该类别的所有图片
│           ├──  ........
│           └──  61--Street_Battle: 对应该类别的所有图片

wider_face 训练环境需要的目录结构

├── images
│   ├── train
│       ├── 0--Parade
│       ├──  ........
│       └──  61--Street_Battle
│   ├── val
│       ├── 0--Parade
│       ├──  ........
│       └──  61--Street_Battle
├── labels
│   ├── train_face.json
│   ├── val_face.json

标注格式转换

如果是txt文件标注,需要转换为json文件

├── datasets/annotations
│   ├── train
│       ├── train.txt
│   ├── val
│       ├── val.txtcd ./datasets
# 执行后会在./datasets/labels下生成训练数据的标注文件 train_face.json、val_face.json
python gen_data.py

训练

# 默认训练模型保存在./exp下,centerface_pytorch/src/lib/opts_pose.py +284 修改路径
# 单机单卡
bash ./src/train.sh# 单机多卡
bash ./src/train_multi.sh

测试

# 推理
python test_wider_face.py# calculate the accuracy
cd $project/evaluate
python3 setup.py build_ext --inplace
python evaluation.py==================== Results ====================
Easy   Val AP: 0.9264363225336171
Medium Val AP: 0.9132687399831261
Hard   Val AP: 0.7478828820065848
=================================================

WIDER_FACE验证集测试结果

在这里插入图片描述

参考

  1. CenterFace_pytorch

http://www.mrgr.cn/news/93262.html

相关文章:

  • 在S32K3上实现SOC的神经网络算法的可行性
  • io函数 day3 文件io与系统函数
  • 一篇文章讲解清楚ARM9芯片启动流程
  • ​Unity插件-Mirror使用方法(八)组件介绍(​Network Behaviour)
  • K8s 1.27.1 实战系列(一)准备工作
  • FastExcel/EasyExcel简介以及源码解析
  • 尚庭公寓项目记录
  • AD学习-最小系统板,双层
  • Ubuntu 22.04安装NVIDIA A30显卡驱动
  • Dify+DeepSeek | Excel数据一键可视化(创建步骤案例)(echart助手.yml)(文档表格转图表、根据表格绘制图表、Excel绘制图表)
  • VIA的寄生电感和Stub对高速信号的影响
  • 单细胞分析(21)——SCENIC 分析流程(singularity容器版)
  • RT-thread的MultiButton按键库的使用
  • 记录一次Spring事务失效导致的生产问题
  • 【DeepSeek 】学习编程的利器:DeepSeek 使用指南
  • 由麻省理工学院计算机科学与人工智能实验室等机构创建低成本、高效率的物理驱动数据生成框架,助力接触丰富的机器人操作任务
  • 给没有登录认证的web应用添加登录认证(openresty lua实现)
  • VsCode 快捷键备忘
  • DeepSeek、Grok 和 ChatGPT 对比分析:从技术与应用场景的角度深入探讨
  • ROS系统(三)编程基础