【炼丹侠】精品项目推荐-人脸检测识别模型dface

简介

DFace 是个开源的深度学习人脸检测和人脸识别系统。所有功能都采用 pytorch 框架开发。pytorch是一个由facebook开发的深度学习框架,它包含了一些比较有趣的高级特性,例如自动求导,动态构图等。DFace天然的继承了这些优点,使得它的训练过程可以更加简单方便,并且实现的代码可以更加清晰易懂。 DFace可以利用CUDA来支持GPU加速模式。我们建议尝试linux GPU这种模式,它几乎可以实现实时的效果。 所有的灵感都来源于学术界最近的一些研究成果,例如 Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks 和 FaceNet: A Unified Embedding for Face Recognition and Clustering

MTCNN结构如下:

安装

DFace主要有两大模块,人脸检测和人脸识别。项目提供所有模型训练和运行的详细步骤。首先需要构建一个pytorch和cv2的python环境,推荐使用Anaconda来设置一个独立的虚拟环境。如果使用GPU训练模式,需要安装Nvidia的cuda和cudnn。 目前作者倾向于Linux Ubuntu安装环境 

依赖

  • cuda 8.0
  • anaconda
  • pytorch
  • torchvision
  • cv2
  • matplotlib

git clone https://gitee.com/kuaikuaikim/dface.git

在这里提供了一个anaconda的环境依赖文件environment.yml (windows请用environment-win64.yml,Mac OSX请用environment_osx.yaml),它能方便你构建自己的虚拟环境。

cd dface  

conda env create -f environment.yml

添加python搜索模块路径

export PYTHONPATH=$PYTHONPATH:{your local DFace root path}

MTCNN主要有三个网络,叫做PNetRNet 和 ONet。因此我们的训练过程也需要分三步先后进行。为了更好的实现效果,当前被训练的网络都将依赖于上一个训练好的网络来生成数据。所有的人脸数据集都来自 WIDER FACE 和 CelebA。WIDER FACE仅提供了大量的人脸边框定位数据,而CelebA包含了人脸关键点定位数据。以下训练除了 生成ONet的人脸关键点训练数据和标注文件 该步骤使用CelebA数据集,其他一律使用WIDER FACE。如果使用wider face的 wider_face_train.mat 注解文件需要转换成txt格式的,我这里用h5py写了个 转换脚本. 这里提供一个已经转换好的wider face注解文件 anno_store/wider_origin_anno.txt, 以下训练过程参数名--anno_file默认就是使用该转换好的注解文件。

  • 创建 dface 训练数据临时目录,对应于以下所有的参数名 --dface_traindata_store
  • mkdir {your dface traindata folder}
  • 生成PNet训练数据和标注文件
  • python dface/prepare_data/gen_Pnet_train_data.py --prefix_path {注解文件中图片的目录前缀,就是wider face图片所在目录} --dface_traindata_store {之前创建的dface训练数据临时目录} --anno_file {wider face 注解文件,可以不填,默认使用anno_store/wider_origin_anno.txt}
  • 乱序合并标注文件
  • python dface/prepare_data/assemble_pnet_imglist.py
  • 训练PNet模型
  • python dface/train_net/train_p_net.py
  • 生成RNet训练数据和标注文件
  • python dface/prepare_data/gen_Rnet_train_data.py --prefix_path {注解文件中图片的目录前缀,就是wider face图片所在目录} --dface_traindata_store {之前创建的dface训练数据临时目录} --anno_file {wider face 注解文件,可以不填,默认使用anno_store/wider_origin_anno.txt} --pmodel_file {之前训练的Pnet模型文件}
  • 乱序合并标注文件
  • python dface/prepare_data/assemble_rnet_imglist.py
  • 训练RNet模型
  • python dface/train_net/train_r_net.py
  • 生成ONet训练数据和标注文件
  • python dface/prepare_data/gen_Onet_train_data.py --prefix_path {注解文件中图片的目录前缀,就是wider face图片所在目录} --dface_traindata_store {之前创建的dface训练数据临时目录} --anno_file {wider face 注解文件,可以不填,默认使用anno_store/wider_origin_anno.txt} --pmodel_file {之前训练的Pnet模型文件} --rmodel_file {之前训练的Rnet模型文件}
  • 生成ONet的人脸五官关键点训练数据和标注文件
  • python dface/prepare_data/gen_landmark_48.py
  • 乱序合并标注文件(包括人脸五官关键点)
  • python dface/prepare_data/assemble_onet_imglist.py
  • 训练ONet模型
  • python dface/train_net/train_o_net.py

演示视频

【来吧!一次性教会你用Dface】 https://www.bilibili.com/video/BV1re41197pV/?share_source=copy_web&vd_source=abed3a2b7e07002e95626ee32d386cf0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值