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

首先介绍一下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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊一聊Redis的离线分析

背景 Redis 或许是我们大部分场景都会用到的一个利器,虽然是利器,用的姿势不对的话,终究还是会整出幺蛾子的。比较常见的问题,不外乎内存暴增,慢查询等情况。那么对于内存问题,可以借助redis自带的bigkey分…

C# 实现Winform全屏后不遮挡任务栏,显示任务栏

最近在忙中抽闲,看我的桌面太过死了,不生动,不可爱。。。 然后默默的想写一个动态桌面的一个小东西活泼一下。。。 随后拿起来了N久不碰的C#(本人C#渣,不,应该说什么都渣。。。) 结果在winfo…

SQL Server 2005登录名,用户名,角色,架构之间的关系

SQL Server 2005对2000进行了很大的改进,而用户关系这部分也变得相当复杂了,很多朋友都对此一知半解!下面,我将把我应用中总结的和大家分享下,先从概念入手,希望对不理解的朋友有点提示。 今天我们要说的包括服务器登录名ServerLogin,服务器角色Server Role,数据库用户…

【模拟】【codeforces】599B Spongebob and Joke

http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id282385 就是一个人最开始有一串数a1 a2 ... am 他的熊孩子队友用一组函数f1 f2 ... fn 以及bi fai 把串A换成了串B 现在告诉你B和F,让你把A换回来,能换回来输出A,换回来可能有…

linux磁盘第一个扇区分析,Linux磁盘分区

一、磁盘连接方式与设备文件名的关系计算机常见的磁盘接口有两种,分别是IDE与SATA接口,目前主流接口已经是SATA接口了。一个IDE扁平电缆可以连接两个IDE设备,通常主机又都会提供两个IDE接口,因此最多可以接到四个IDE设备。也就是说…

剑指offer之分行从上到下打印二叉树

1 题目 分行从上到下打印二叉树 23 5 1 4 2 3 我们打印如下 23 51 4 2 3 2 分析 之前这篇博客写了通过队列按层打印剑指offer之按层打印树节点 现在无非就是还要按照条件打印,第一次打印1个,然后第二次打印2个&…

转:char*, char[] ,CString, string的转换

转:char*, char[] ,CString, string的转换 (一) 概述string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C标准之中;CString(typedef CStringT > CString&am…

虚拟机VMware安装XP系统错误解决办法

虚拟机给我的编程工作确实带了很多方便,但是虚拟机的一个最大挑战是硬件赶不上,速度太慢了。最近一直在致力于虚拟机上Win7专业版平台上SQL Server 2005Visual Studio 2012系统开发,最初还可以,但是越到后面速度越慢。最后决定重新…

[TP5填坑]关于助手函数input一不小心取不到get值的解决办法

声明:适用于懒人 常规对于这个什么鬼取不到值我也是很绝望的,通常都是看一遍手册就开始写,除非是在没事才跟你认认真真看,所以,我们这类懒人就非常尴尬了,只能动不动查手册。 tp5也出很久了,本…

【Python】猜数小游戏(文件操作)

人生苦短,我用Python 关键词 1.多用户 2.字典记录所有成绩 3.每次游戏轮数&总游戏次数&平均每次游戏需要多少轮 字典Dictionary、列表List、元组Tuple差异化理解 from random import randintname input(请输入你的名字:)#输入玩家名字 #读取文件…

100ms的SQL把服务器搞崩溃了

前言一个项目上线了两个月,除了一些反馈的优化和小Bug之外,项目一切顺利;前期是属于推广阶段,可能使用人员没那么多,当然对于项目部署肯定提前想到并发量了,所以早就把集群安排上,而且还在测试环…

剑指offer之分行从上到下之字行打印二叉树

1 问题 分行从上到下之字行打印二叉树 比如二叉树 23 5 1 4 2 3 3 2 1 5 1 4 2 3 分行从上到下之字行打印二叉树结果如下 2 5 3 1 4 2 3 3 2 4 1 5 1 …

python中sendkeys.sendkeys_python的webbrowser模块和SendKeys模块

今天工作的时候突然遇到个问题,就尝试着按照领导所说要天马行空的想东西,于是那点scrapy的代码逐渐忘了的差不多了,想到用迅雷去下载一些东西,迅雷不知道怎么回事,但知道一点,他监控计算机浏览器&#xff0…

linux dns 动态更新时间,CentOS 7实现DNS+DHCP动态更新详解

然后再安装bind-chroot 执行/usr/libexec/setup-named-chroot.sh /var/named/chroot on 停用named,。昨天运维帮组织线下的沙龙,照着做又遇到各种问题,相信就能搞定了,最后不不知道到底什么原理实现的,man 5 dhcpd.con…

数组方法

json数据格式 <!DOCTYPE HTML><html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8"><title>无标题文档</title> <script>var json { name : leo, age : 32 };// alert( json.name )…

需求分析工程师岗位的职责描述(合集)

需求分析工程师岗位的职责描述1 职责&#xff1a; 1&#xff0c;负责需求调研&#xff0c;对需求进行分析&#xff0c;编写解决方案、需求规格说明书等 2&#xff0c;根据需求制作原型&#xff0c;并负责原型展示以及客户沟通等工作 3&#xff0c;负责向技术团队精确地传达业务…

基于.NET的系统开发需要注意的问题总结

从2009年进入大学校园以来,笔者渐渐对程序设计产生了浓厚的兴趣,对程序人生产生了深度的思考。记得刚开始学的第一门计算机语言就是风靡一时的Visual Basic,时至今日,时间已过了六年有余,已初步掌握了VB,C,C++,C#,Python,T-SQL等多种语言。回头想想,一路走来,真的很…

nginx 下配置使用Thinkphp5解决跨目录活动并且设置网站根目录

由于TP5框架的一些特性规则&#xff0c;在nginx下导致跨目录的一些访问不能执行 最开始我尝试配置文件夹目录&#xff0c;导致出现各种奇葩错误&#xff0c;然后搜了以下资料发现原来只要简单的修改几个配置文件即可。 声明系统环境&#xff1a; **系统&#xff1a;Centos6.版本…

剑指offer之先序非递归打印二叉树

1 问题 先序非递归打印二叉树 比如二叉树如下 * 2* 3 5 * 1 4 2 3 * 3 2 1 5 1 4 2 3 先序原则&#xff1a;中左右打印节点&#xff0c;如果左边有节点继续要打做节点&…

如何使用CPU来加速你的Linux命令

我们都知道 grep, bzip2, wc, awk, sed等等&#xff0c;都是单线程的&#xff0c;只能使用一个CPU内核。那么如何才能使用这些内核? 要想让Linux命令使用所有的CPU内核&#xff0c;我们需要用到GNU Parallel命令&#xff0c;它让我们所有的CPU内核在单机内做神奇的map-reduce操…