centerface_pytorch人脸检测算法模型

CenterFace

论文

CenterFace: Joint Face Detection and Alignment Using Face as Point

模型结构

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

算法原理

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

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

环境配置

Docker(方法一)

-v 路径、docker_name和imageID根据实际情况修改

docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.13.1-centos7.6-dtk-23.04-py38-latest

docker run -it -v /path/your_code_data/:/path/your_code_data/ --shm-size=32G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash

cd /your_code_path/centerface_pytorch/
pip3 install -r requirements.txt

Dockerfile(方法二)

-v 路径、docker_name和imageID根据实际情况修改

cd ./docker

cp ../requirements.txt requirements.txt

docker build --no-cache -t centerface:latest .

docker run -it -v /path/your_code_data/:/path/your_code_data/ --shm-size=32G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash

Anaconda(方法三)

1、关于本项目DCU显卡所需的特殊深度学习库可从光合开发者社区下载安装: https://developer.hpccube.com/tool/

DTK软件栈:dtk23.04
python:python3.8
torch:1.13.1
torchvision:0.14.1

Tips:以上dtk驱动、python、paddle等DCU相关工具版本需要严格一一对应

2、其他非特殊库直接按照requirements.txt安装

pip3 install -r requirements.txt

数据集

WIDER_FACE:WIDER FACE: A Face Detection Benchmark

下载图片红框中三个数据并解压,也可直接点击下面链接直接下载:

WIDER Face Training Images(Tencent Drive)

WIDER Face Validation Images(Tencent Drive)

WIDER Face Testing Images(Tencent Drive)

数据集全部解压后的目录结构如下:

├── 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: 对应该类别的所有图片

解压完成后执行以下步骤:

  1. 将训练图片放置于 ./datasets/images/train的目录下,验证数据放置于./datasets/images/val目录下,存放目录结如下
├── images
│   ├── train
│       ├── 0--Parade
│       ├──  ........
│       └──  61--Street_Battle
│   ├── val
│       ├── 0--Parade
│       ├──  ........
│       └──  61--Street_Battle
  1. 如果是使用WIDER_train、WIDER_val数据, 可直接将./datasets/labels/下的train_wider_face.json重命名为train_face.json, val_wider_face.json重命名为val_face.json即可,无需进行标注文件格式转换; 反之,需要将训练图片/验证图片对应的人脸标注信息文件train.txt/val.txt,放置于 ./datasets/annotations/下(train存放训练图片的标注文件,val存放验证图片的标注文件),存放目录结构如下:
├── annotations
│   ├── train
│       ├── train.txt
│   ├── val
│       ├── val.txt

特别地,标注信息的格式为:

# img_file/image_name # #+空格+img_file/image_name
x, y, w, h, left_eye_x, left_eye_y, flag, right_eye_x, right_eye_y, flag, nose_x, nose_y, flag, left_mouth_x, left_mouth_y, flag, right_mouth_x, right_mouth_y, flag, confidence  # x和y是检测框左上角的坐标

举个例子: ./datasets/annotations/train/train.txt是wider_face训练数据集的标注信息

# 0--Parade/0_Parade_marchingband_1_849.jpg
449 330 122 149 488.906 373.643 0.0 542.089 376.442 0.0 515.031 412.83 0.0 485.174 425.893 0.0 538.357 431.491 0.0 0.82
...
  1. 生成训练所需的json格式标注数据:
cd ./datasets
python gen_data.py

执行完成后会在./datasets/labels下生成训练数据的标注文件 train_face.json、val_face.json

训练

默认训练模型保存在./exp/下,如需修改为自己的路径,可以对centerface_pytorch/src/lib/opts_pose.py的284行进行修改

单机单卡

cd ./src
bash train.sh

单机多卡

cd ./src
bash train_multi.sh

推理

单卡推理
cd lib/external/
bash make.sh
cd ../../
python test_wider_face.py

result

精度

WIDER_FACE验证集上的测试结果如下

Method Easy(AP) Medium(AP) Hard(AP)
ours(one scale) 0.9264 0.9133 0.7479
original 0.922 0.911 0.782

应用场景

算法类别

人脸识别

热点应用行业

教育,交通,公安,医疗

源码仓库及问题反馈

ModelZoo / CenterFace_pytorch · GitLab

参考资料

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

相关推荐

  1. 人脸检测算法

    2024-06-18 14:44:01       29 阅读
  2. 编写人脸检测程序

    2024-06-18 14:44:01       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-18 14:44:01       10 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-18 14:44:01       12 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-18 14:44:01       11 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-18 14:44:01       14 阅读

热门阅读

  1. CSS行内样式书写规范及注意事项

    2024-06-18 14:44:01       5 阅读
  2. 查看mysql数据库端口号

    2024-06-18 14:44:01       7 阅读
  3. 美股 — “四巫日”

    2024-06-18 14:44:01       7 阅读
  4. MyBatis 插件机制详解

    2024-06-18 14:44:01       8 阅读
  5. 富格林:可信守则有效防范暗箱

    2024-06-18 14:44:01       8 阅读
  6. 2024.6.17总结1113

    2024-06-18 14:44:01       8 阅读
  7. AI之Lambda index

    2024-06-18 14:44:01       8 阅读
  8. python中的结构

    2024-06-18 14:44:01       7 阅读
  9. 山东大学软件学院深度学习期末回忆版

    2024-06-18 14:44:01       9 阅读
  10. C# Socket通讯简单Demo

    2024-06-18 14:44:01       6 阅读