首先介绍一下MTCNN的网络结构,MTCNN有三种网络,训练网络的时候需要通过三部分分别进行,每一层网络都依赖前一层网络产生训练数据供当前训练网络,这样也推动了两个网络之间的最小损耗。

Pnet

Rnet

Onet

MTCNN的人脸模型按照以上结构按照三部分进行训练。

DFace有两个主要模块,即检测和识别。在这两个模块中,我们提供了有关如何训练模型和运行的所有教程。

首先设置一个pytorch和cv2,版本要求:

* pytorch==0.4.0

* torchvision==0.2.0

* opencv-python==3.4.0.12

pip install torch==0.4.0 torchvision==0.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install opencv-python==3.4.0.12 -i https://pypi.tuna.tsinghua.edu.cn/simple

安装依赖库matplotlib:pip install matplotlib

(1)首先将DFace包git到本地用户目录,不要放在根目录:

git clone https://github.com/tuvia0213/DFace.git

(2)添加DFace路径添加到本地python路径:

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

(3)打开../DFace路径将WIDER FACE数据集下载到../DFace/WIDER_train/下

(WIDER_train下载地址http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/);

将CelebA下载到../DFace/Celeba/路径下

(CelebA下载地址:http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html)

并将../CelebA/Img/目录下的img_align_celeba压缩包解压到该目录;其中WIDER FACE用于训练人脸分类器与人脸约束框(Bounding Box,代码里常见形式为BBox),CelebA用于训练人脸坐标点(landmark点,人脸检测中的标点为双眼、鼻子、两个嘴角);

(4)进入到../DFace路径下,生成PNet训练数据和注释文件(annotation file):

python dface/prepare_data/gen_Pnet_train_data.py --prefix_path WIDER_train/images/ --dface_traindata_store data/ --anno_file anno_store/wider_origin_anno.txt

(5)组合注释文件并将其随机分布:

python dface/prepare_data/assemble_pnet_imglist.py

(6)训练Pnet模型:

python dface/train_net/train_p_net.py

(7)生成RNet训练数据和注释文件:

python dface/prepare_data/gen_Rnet_train_data.py --prefix_path WIDER_train/images/ --dface_traindata_store data/ --anno_file  anno_store/wider_origin_anno.txt --pmodel_file model_store/pnet_epoch_10.pt

(8)组合注释文件并将其随机分布:

python dface/prepare_data/assemble_rnet_imglist.py

(9)训练Rnet模型:

python dface/train_net/train_r_net.py

(10)生成ONet训练数据和注释文件:

python dface/prepare_data/gen_Onet_train_data.py --prefix_path WIDER_train/images/ --dface_traindata_store data/ --anno_file anno_store/wider_origin_anno.txt --pmodel_file model_store/pnet_epoch_10.pt --rmodel_file model_store/rnet_epoch_10.pt

(11)生成Onet训练landmark点数据,在此之前,生成testImageList.txt,需先将merge_file.py复制到celeba/CelebA/Anno路径下:

python dface/prepare_data/gen_landmark_48.py --dface_traindata_store data/ --anno_file celeba/CelebA/Anno/testImageList.txt --prefix_path celeba/CelebA/Img/img_align_celeba

(12)组合注释文件并将其随机分布:

python dface/prepare_data/assemble_onet_imglist.py

(13)训练Onet模型:

python dface/train_net/train_o_net.py

DFace路径下提供了测试图片与测试脚本,可以用于测试训练网络的识别效果,回到../DFace路径下:

python test_image.py

显示出识别图片效果:

至此,模型训练完成,可以使用../DFace/model_store下的pnet_epoch_10.pt rnet_epoch_10.pt onet_epoch_10.pt进行模型转换,从pytorch转caffe转ncnn。

python人脸识别训练模型生产_深度学习-人脸识别DFACE模型pytorch训练(二)相关推荐

  1. 深度学习工程实践 6. 使用pytorch训练自己的眼球分割模型

    深度学习工程实践 6. 使用pytorch训练自己的眼球分割模型 1. 概述 2. 目标 3. 工程实践 3.1 数据寻找,数据标注 3.2 训练 3.3 部署应用到桌面程序 4. 总结 1. 概述 ...

  2. python识别人脸多种属性_深度学习人脸识别仅9行python代码实现?同时高效处理100张相片?...

    随着人脸识别.视频结构化等计算视觉相关技术在安防.自动驾驶.手机等领域走向商业化应用阶段,计算视觉技术行业市场迎来大规模的爆发.伴随人脸识别.物体识别等分类.分割算法不断提升精度.计算视觉的核心算法深 ...

  3. python dlib opencv人脸识别准确度_Dlib+OpenCV深度学习人脸识别的方法示例

    前言 人脸识别在LWF(Labeled Faces in the Wild)数据集上人脸识别率现在已经99.7%以上,这个识别率确实非常高了,但是真实的环境中的准确率有多少呢?我没有这方面的数据,但是 ...

  4. python手写字体程序_深度学习---手写字体识别程序分析(python)

    我想大部分程序员的第一个程序应该都是"hello world",在深度学习领域,这个"hello world"程序就是手写字体识别程序. 这次我们详细的分析下手 ...

  5. python 归一化feed-dict程序代码_深度学习-中国大学mooc-题库零氪

    第一讲 人工智能导论 2.29日考勤 1.以下关于深度学习和机器学习的关系,描述正确的是: A.机器学习的范畴包含深度学习: B.深度学习的范畴包含机器学习: C.二者没有关系: D.二者等同. 第三 ...

  6. python在医学领域应用_深度学习在健康医疗领域应用

    深度学习在健康医疗领域应用 1. 深度学习 随着大数据和数据分析技术的不断发展,基于机器学习的数据驱动模型在健康医疗领域逐步得到推广和应用.深度学习作为在人工智能基础之上,是最近蓬勃发展的强大的机器学 ...

  7. 机器学习_深度学习毕设题目汇总——人脸B

    下面是该类的一些题目: 题目 三维人脸重建及其应用 低质量人脸图像还原方法研究 基于GAN和CNN模型的人脸画像合成方法 基于局部二值模式的人脸图像特征提取研究 基于机器视觉的人脸民族特征提取方法及其 ...

  8. 机器学习_深度学习毕设题目汇总——人脸A

    下面是该类的一些题目: 题目 人脸图像处理的去身份算法研究 人脸表情图像识别关键技术的分析与研究 基于卷积神经网络的人脸识别研究 基于多特征融合的人脸表情识别研究 基于字典学习的人脸特征提取及识别研究 ...

  9. 深度学习---人脸检测(勿喷)

    所谓人脸检测,就是给定任意一张图片,找到其中是否存在一个或多个人脸,并返回图片中每个人脸的位置和范围.自动人脸检测技术是所有人脸影像分析衍生应用的基础. 人脸检测大致分为两种方案:一是刚性模板(rig ...

最新文章

  1. 移动端实现PDF文件阅读的方法
  2. 【重大更新】DevExpress v17.1新版亮点(DevExtreme HTML5/JS篇)
  3. Java 内存模型与线程
  4. 有理贝塞尔曲线(Rational Bezier Curves)
  5. php libmysqlclient,什么是php?以及mysqlnd与libmysqlclient
  6. 队列(常用数据结构之一)
  7. source ~/.bashrc 什么意思
  8. html如何将多个复选框组织成一组_[Selenium]18.如何处理一组元素
  9. bzoj 3224 Tyvj 1728 普通平衡树
  10. python编译安装没有c扩展_为什么在安装simplejson时得到“C扩展无法编译”?
  11. JDBC布尔兼容性列表
  12. python与matlab比较_python和matlab如何选择?
  13. java post加密_使用Java和PHP的BCrypt,发送加密的密码并对其进行解码 - java
  14. Flutter拓展 一步一步教你安装Flutter(最火的移动框架)
  15. python的学习之路
  16. 斐讯k1潘多拉专版固件_斐讯路由器刷潘多拉固件+宽带并发多拨号视频教程+工具下载(K1K2)...
  17. C++的iostream标准库介绍+使用详解
  18. java代码混淆(使用 ProGuard maven插件)
  19. ADN8831ACPZ特征TPS63020DSJR应用 具有 4A 开关转换器
  20. 爬虫 --- 08. 全站爬取(CrawlSpider), 分布式, 增量式爬虫

热门文章

  1. 腾讯急招.NET,但你准备好了吗?
  2. C# 9 新特性 —— 补充篇
  3. 灵魂拷问:你和大佬,技术差距有多大?
  4. 一个情怀引发的生产事故(续)
  5. 【招聘(深圳)】华强方特文化科技集团 .NET工程师
  6. await,async 我要把它翻个底朝天,这回你总该明白了吧
  7. C# 客户端内存优化分析
  8. 【 .NET Core 3.0 】框架之十 || AOP 切面思想
  9. Oracle杀死Java EE:名正言顺转到.NET Core
  10. 【招聘(南京)】南京纳龙科技有限公司招高级.net开发工程师