阅读-MTCNN

2023-11-15

原始数据

人脸数据集WIDER FACE,该数据集仅提供了大量的人脸边框定位数据。

如果使用wider face的 wider_face_train.mat 注解文件需要转换成txt格式的,我这里用h5py写了个 转换脚本. 这里我提供一个已经转换好的wider face注解文件 anno_store/wider_origin_anno.txt, 以下训练过程参数名--anno_file默认就是使用该转换好的注解文件。

在注解文件wider_origin_anno.txt格式如下 :

0--Parade/0_Parade_marchingband_1_849.jpg 448 329 570 478 
0--Parade/0_Parade_marchingband_1_117.jpg 68 359 118 394 226 382 282 425 295 304 339 330 353 279 393 315 884 377 947 418 818 390 853 434 727 341 764 372 598 246 631 275 740 308 785 341 

每四个数字代表该图片中的一个人脸边框定位数据x1, y1, x2, y2(x_left, y_top, x_right, y_bottom),第一张照片有只一个人脸,第二张照片有9个人脸

PNET

输入/输出

输入是12*12*3的图片,以及标签  =  样本类型0/1/-1  +   四个数字为一组的crop_box与真实box之间的偏差,成为回归框(bounding box regressiom)

negative样本:IOU < 0.3,标签为:0 0 0 0 0
positive样本:IOU > =0.65,标签为:1 0.01 0.02 0.01 0.02
part样本:0.4 <= IOU < 0.65,标签为: -1 0.03 0.04 0.03 0.04

P-Net主要用来生成一些候选框(bounding box)以及lable。在训练的时候该网络的顶部有3条支路用来分别做人脸分类、人脸框的回归和人脸关键点定位;在测试的时候这一步的输出只有N个bounding box的4个坐标信息和score,score可以看做是分类的输出(是人脸的概率),源代码中输出就是sigmoid函数值。

PNet训练数据

1、遍历数据集,在每一张照片的基础上:

  • 一张照片可能有多张人脸,所以有boxes。由一张照片裁剪出50张不同的大小为12*12的照片,如果Iou值小于0.3,就写入nagetive样本文件中。

具体方法:在一张照片的基础上随机生成crop_box,计算crop_box与boxes的Iou,然后按照crop_box的尺寸剪切原图片并缩放成12*12大小的图片,转换成12*12*3的结构,根据Iou对新生成的照片归类

2、遍历第一步中的那张照片的boxes,在每个box的基础上

  • # generate negative examples that have overlap with gt
  • 加入随机数,随机生成crop_box,之后步骤同上
  • # generate positive examples and part faces
  • 加入随机数,随机生成crop_box,计算crop_box与box之间的偏差,把这些偏差称为回归框,生成的训练数据的标注lable不仅有positive/part,还要加上回归框信息。计算rop_box与boxes的Iou进行归类。
# compute bbox reg label,其中x1,x2,y1,y2为真实的人脸坐标,x_left,x_right,y_top,y_bottom,width,height为预测的人脸坐标,
# 如果是在准备人脸和非人脸样本的时候,x_left,x_right,y_top,y_bottom,width,height就是你的滑动窗与真实人脸的IOU>0.65(根据你的定义)的滑动窗坐标。
# dface代码中box用的是正方形,即size=width=height代表box窗口的边长
offset_x1 = (x1 - x_left) / float(width)
offset_y1 = (y1 - y_top) / float(height)
offset_x2 = (x2 - x_right) / float(width)
offset_y2 = (y2 - y_bottom ) / float(height)

3、最后的输出

negative样本:IOU < 0.3,标签为:0 0 0 0 0
positive样本:IOU > =0.65,标签为:1 0.01 0.02 0.01 0.02
part样本:0.4 <= IOU < 0.65,标签为: -1 0.03 0.04 0.03 0.04

乱序合并标注文件

将三个样本文件合并到一个文件  PNET_TRAIN_IMGLIST_FILENAME = "imglist_anno_12.txt"

训练PNet模型

训练PNet的训练数据就是上面提到的PNET_TRAIN_IMGLIST_FILENAME

RNET

加载pnet模型,预测图片的bounding box信息

读取WIDER FACE数据集的标注信息

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

阅读-MTCNN 的相关文章

  • 关于Java锁的面试总结

    面试过程中 也被问过几次关于Java中锁的问题 面试官一般是这么问 你了解Java中的锁吗 有几种 都有什么区别 讲一讲 大致可以分为这几点 锁是什么 有什么用 有哪几种锁 锁的区别 一 锁是什么 有什么用 锁主要用来实现资源共享的同步 只
  • Java实战项目(一)---编写聊天室程序

    刚开始学java 参考 java从入门到精通 这本书 学到网络程序设计基础这一章节 尤其与其他计算机进行通信 觉得还挺有意思的 所有深入地试试做一个小程序 聊天室程序 在代码中加入我自己的理解和困惑 希望能和大家一起探讨 每行的代码基本都有
  • [新人向]MySQL和Navicat下载、安装及使用详细教程

    MySQL和Navicat下载和安装及使用详细教程 因为这些软件的安装很多都是纯英文 作为新手安装真的需要摸索好久 包括我自己 所以Pipi酱就把自己的经验分享给大家 MySQL的安装教程 一 下载安装包链接 1 下载MySQL https
  • 广东电信:故障是外力强加导致 警方介入调查

    昨日下午5时50分开始 广东省内电信网络出现故障 省内多个地区均出现网络宽带无法连接 浏览器无法打开网页等现象 消息发布后 不少外省网友跟帖也表示网络塞车 涉及湖北 湖南 广西 海南和上海等省市区 广东本地不少市民在拨打电信 10000 热
  • 第4章(下)基于前馈神经网络完成鸢尾花分类任务

    文章目录 4 5 实践 基于前馈神经网络完成鸢尾花分类 4 5 1 小批量梯度下降法 4 5 1 1 数据分组 4 5 2 数据处理 4 5 2 2 用DataLoader进行封装 4 5 3 模型构建 4 5 4 完善Runner类 4
  • mac 安装打包工具fastlane

    mark ruby gem工具升级相关 查看gem版本 gem version 查看vgem 版本 ruby vgem version ruby版本管理工具更新 gem update system 查看ruby版本 ruby v 查看rub
  • vue3的provide

    provide 和 inject 通常成对一起使用 使一个祖先组件作为其后代组件的依赖注入方 无论这个组件的层级有多深都可以注入成功 只要他们处于同一条组件链上 provide 提供一个值 可以被后代组件注入 inject 注入一个由祖先组
  • fib

    费氏阵列并不是使用递回来解一定不好 事实上单就执行次数上来说 有一个使用递回的演算法可以更快 big o 是以2为底的Logn值 但是要使用到乘法运算 所以实际上要看所使用的机器而定 Procedure FIB N IF n lt 1 RE
  • redis 击穿、穿透、雪崩

    缓存击穿 单个key在缓存中查询不到 转而去查数据库 如果数据量大 或 并发高 则可能会对数据库造成巨大压力 从而导致数据库崩溃 注意 这里的是 单个key 发生高并发 场景 刚好某个时间点 某单个key缓存过期了 恰好这个时间点 针对于这

随机推荐

  • 笔记本重装系统后蓝屏记录

    大白菜制作U盘启动盘 刚好公司有个纯净版的系统iso镜像 然而重装系统的时候手贱勾选了USB3 0的驱动 导致安装后出现蓝屏 原因是驱动与设备不兼容导致 还以为是系统的问题 原先都是安装雨木林风的ghost版本 到没遇到这个问题 今天可把我
  • MySQL笔记(1)安装MySQL5.6

    知识来源 PHP与MySQL程序设计 第四版 yum 安装MySQL 禁用selinux sudo sed i s SELINUX enforcing SELINUX disabled etc selinux config 重启服务器后 查
  • saltstack的配置管理与数据系统

    saltstack的配置管理与数据系统 1 YAML语言 1 1 YAML的基本规则 2 使用SaltStack配置一个apache实例 2 1 在Master上部署sls配置文件并执行 3 使用SaltStack在minion02上配置n
  • 一小时学会js-b站笔记

    Javascript中代理的代码示例 Proxy 代理 const obj name 吴昊 age 18 const container document getElementById const p1 new Proxy obj get
  • 启动roketMq 错误: 找不到或无法加载主类 Files\Java\jdk1.8.0_291\jre\lib\ext

    安装roketMQ出现报错 检查mq的环境变量配置无误 最后锁定到Java环境变量 测试java javac java version都正常 那就蛋疼了 最后一看jdk是安装在Program Files目录下的 问题就出在这里 卸载JDK
  • 在Linux系统里使用Apache搭建Web网站服务器

    使用Apache搭建Web网站服务器 Apache服务 Apache被研发于1995年 是纯开源软件 用于HTTP协议提供web浏览服务 可在Unix Linux Windows上运行 1 配置静态IP vim etc sysconfig
  • 多线程(同步)

    一 为什么要使用线程同步 1 什么是同步 同步就是协同步调 按预定的先后次序进行运行 如 你用完 其它人才能用 同 字从字面上容易理解为一起 其实不是 同 字应是指协同 协助 互相配合 当有一个线程在对内存进行操作时 其他线程都不可以对这个
  • Java学习笔记9——封装

    封装 什么是封装 封装的原则 private关键字的使用 this关键字 this的内存原理 什么是封装 封装是面向对象的三大特征之一 封装 继承 多态 是面向对象编程语言对客观世界的模拟 客观世界的成员变量都是隐藏在对象内部的 外部无法直
  • python: openpyxl写入文件打开后显示文件损坏

    最近在将字典数据写入excel时 运用了openpyxl 点击运行 代码运行正常 但是跑了一晚上数据 打开文件时 居然显示 部分内容有问题 文件已损坏 经过多次测试 上网搜索无结果后 更改代码中的wb active为wb ws Sheet1
  • ESP32引脚参考

    原文链接 ESP32引脚参考 您应该使用哪个GPIO引脚 360doc个人图书馆 总结的相当全面 ESP32简单易懂的GPIO使用注意事项 首先上图 GPIO建议列表 特别的在硬件上要注意使用外接模块时不能将GPIO12拉高 否则将导致ES
  • 依托 axios 实现全局请求防抖

    更新 该方法已过时 此 API 自 v0 22 0 起已弃用 传送门 新的代替方案是 AbortController 并且 前端取消请求无法真实取消 原因在于请求发送到服务器后服务器或许已经做了处理 但是前端只是关闭了返回通道 可是实际上服
  • wr720n刷成网络打印_OPENWRT for TP-LINK TL-WR720N 4M-8M固件,含NAS、3G、Printer,支持3070和8187网卡 20120906 - V2EX...

    还记得好久以前很多朋友团购的WR720N吗 一直等着OPENWRT出patch好让703N的固件能支持720N的硬件开关 很遗憾到现在还没有 今天看到antclan修改的固件 觉得基本上可以刷了 转贴来自 http www right co
  • 基于javaweb+mysql的情缘图书馆管理系统(java+SSM+Tomcat+Maven+mysql)

    基于SSM的情缘图书馆管理系统 SSM框架 适合java初学者 主要功能包括 图书编目管理 图书编目 编目维护 图书信息管理 图书录入 图书信息 图书借阅管理 借阅图书 借阅信息 归还 续借 读者管理 办证 读者信息 读者类别 证件操作 系
  • top k算法讲解

    在实际工作中 我们时常会有寻找长度为n的数组中 排在前k的元素 对于top k的问题 最暴力的处理方式就是直接对数组进行排序 然后再去截取前k个数字 从而达到自己的目的 这种算法的实现复杂度为O nlogn 其实有O n 的算法或者是O n
  • UML常用图的几种关系的总结

    在UML的类图中 常见的有以下几种关系 泛化 Generalization 实现 Realization 关联 Association 聚合 Aggregation 组合 Composition 依赖 Dependency 1 泛化 Gen
  • OpenCV_基于Laplacian算子的图像边缘增强

    Refer from http blog csdn net icvpr article details 8502949 下面代码实现了基于Laplacian算子的图像边缘增强 算法 边缘增强图像 源图像 边缘图像 cpp view plai
  • RFID酒店布草洗涤管理系统应用

    1 行业背景 布草作为酒店服务商领域的传统产业 一直是围绕着酒店业的发展而逐步发展起来的 无论是星级酒店 还是经济连锁酒店 布草都是不可或缺的重要物料 各式酒店都面临着成千上万件布草的交接 洗涤 熨烫 整理 储藏等工序 如何有效地完成洗涤布
  • 2022电赛E题(不使用K210)软硬件方案

    请各位客观移步小黄鱼搜索DreamChuan用户 拍下链接即可获取全部软硬件方案哦 物美价廉 2022电赛E题声源定位 不使用K210相关软硬件 使用MAX9814麦克风加stm32F103ZET6加28BYJ48步进电机方案 部分代码开源
  • log4j 配置文件详解

    log4j logger stdout debug 灵活设置日志格式 log4j appender stdout layout org apache log4j PatternLayout 文件 log4j appender stdout
  • 阅读-MTCNN

    原始数据 人脸数据集WIDER FACE 该数据集仅提供了大量的人脸边框定位数据 如果使用wider face的 wider face train mat 注解文件需要转换成txt格式的 我这里用h5py写了个 转换脚本 这里我提供一个已经