MTCNN 流程
经过三个网络 P-Net,R-Net,O-Net

对于P-Net:
P-Net是一个全卷积层,不涉及到全连接层,所以我们的输入图像的尺寸可以是不固定的。
对于P-Net来说,我们的输入图像是图像金字塔,也就是说对于一张图片,根据不同的factor进行图像的缩小。这里的尺寸不固定的意思是说,我们可以使用图像金字塔中的不同图像作为输入。
在P-Net网络中,我们首席那会设置最小的人脸检测尺寸,minsize=20(这里)[https://www.cnblogs.com/shine-lee/p/10066049.html]。人脸尺寸小于这个的,我们是不考虑的。
P-Net网络是1212大小的框来检测是否具有人脸。这个时候如果我们假设输入图像尺寸为100120,这样我们能够接受的最小的人脸图像尺寸就是2020,最大就是100100.
如果想要把最小的20*20缩小到可以被P-Net来识别,我们就需要设定第一个缩小因子为12/20=0.6。同时我们设定图像金字塔相邻层缩放比例一致为0.7,这样大概就是
[0.6,0.42419999999999997,0.29990939999999994,0.2120359458,0.14990941368059996,0.10598595547218417,0.0749320705188342,0.05297697385681578,0.03745472051676876]。
在这个过程中,我们需要保证图像最小边长度的大于12.

P-Net返回两个结果,一个是分类结果,是否含有人脸。一个是回归结果,返回四个偏移量。在推断阶段,两个结果同时生成,我们首先对分类结果进行处理,对于大于threshold的值(
这个是我们认为规定的,认为大于这个值的才认为含有人脸),然后我们使用NMS进行候选框的排除(在每个缩放比例的条件下生成的候选框我们都会进行NMS),随后我们把所有缩放比例之下生成的额候选框进行一个NMS,随后我们结合offsets对筛选之后的筛选框进行调整。

R-Net
我们把从P-Net中获得的候选框进行resize到24*24. 然后我们进行卷积核全连接,对每一个候选框进行分类和回归。首先对候选框进行NMS,然后结合回归结果进行回归调整。

O-net
将R-Net的候选框进行resize到48*48,返回三个结果:关键点位置,回归结果,分类结果

人脸检测--MTCNN从头到尾的详解 - 丘学文的文章 - 知乎 这篇文章对于推理过程讲解的很好
https://zhuanlan.zhihu.com/p/58825924

MTCNN自己的学习理解的更多相关文章

  1. MTCNN算法与代码理解—人脸检测和人脸对齐联合学习

    目录 写在前面 算法Pipeline详解 如何训练 损失函数 训练数据准备 多任务学习与在线困难样本挖掘 预测过程 参考 博客:blog.shinelee.me | 博客园 | CSDN 写在前面 主 ...

  2. 全面学习理解TLB(Translation Look-aside Buffer)地址变换高速缓存

    全面学习理解TLB(Translation Look-aside Buffer)地址变换高速缓存 前言: 本文学习思路是:存在缘由   --> 存在好处 --> 定义性质 --> 具 ...

  3. MLT的学习理解

    MLT的学习理解 MLT是一个开源的多媒体库,我们的音视频编辑工具,是使用它作为底层支持,某司的'快剪辑'pc版和安卓版,也是用的它. MLT简介 它的GitHub地址,这个库比较老了,现在只有一个作 ...

  4. 菜鸟之路——机器学习之SVM分类器学习理解以及Python实现

    SVM分类器里面的东西好多呀,碾压前两个.怪不得称之为深度学习出现之前表现最好的算法. 今天学到的也应该只是冰山一角,懂了SVM的一些原理.还得继续深入学习理解呢. 一些关键词: 超平面(hyper ...

  5. batch normalization学习理解笔记

    batch normalization学习理解笔记 最近在Andrew Ng课程中学到了Batch Normalization相关内容,通过查阅资料和原始paper,基本上弄懂了一些算法的细节部分,现 ...

  6. Source Xref 与 JavaDocs 学习理解

    最近学习Mybatis的官方文档,看到了[项目文档]一节有很多内容没有见过,做个笔记,理解一下. 没找到java相关代码的解释,其实用下面这个php版本解释,也非常不错. What is SOURCE ...

  7. TLD网络资源汇总--学习理解之(四)

    原文:http://blog.csdn.net/mysniper11/article/details/8726649 引文地址:http://www.cnblogs.com/lxy2017/p/392 ...

  8. TLD算法概述--学习理解之(一)

    liuyihai@126.com http://www.cnblogs.com/liuyihai/ TLD(Tracking-Learning-Detection)是英国萨里大学的一个捷克籍博士生Zd ...

  9. face recognition[翻译][深度学习理解人脸]

    本文译自<Deep learning for understanding faces: Machines may be just as good, or better, than humans& ...

随机推荐

  1. JavaScript 系列--JavaScript一些奇淫技巧的实现方法(一)简短的sleep函数,获取时间戳

    一.前言 有些东西很好用,但是你未必知道:有些东西你可能用过,但是你未必知道原理.实现一个目的有多种途径,俗话说,条条大路通罗马.发散一下大家的思维以及拓展一下知识面. 二.实现一个简短的sleep函 ...

  2. vuex文档(附加个人理解)

    Vuex是什么? Vuex 是一个专为 Vue.js应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到Vue 的 ...

  3. chrome浏览器表单自动填充默认样式-autofill

    Chrome会在客户登陆过某网站之后, 会自动记住密码 当你下次再次进入该网站的时候, 可以自由的选择登陆的账号, Chrome会为你自动填充密码. 而你无需再输入密码 这本身是一个很好的功能, 但是 ...

  4. java反射-使用反射获取类的所有信息

    在OOP(面向对象)语言中,最重要的一个概念就是:万事万物皆对象. 在java中,类也是一个对象,是java.lang.Class的实例对象,官网称该对象为类的类类型. Class 类的实例表示正在运 ...

  5. Linux常用命令汇总(渐更)

    后台启动jar nohup java -jar xxxxx.jar > xxxx.out 2>&1 & 封禁ip iptables -I INPUT -s 200.194. ...

  6. JavaSE之Java基础(4)

    16.String.StringBuilder和StringBuffer的区别 String类是final的,不可变,StringBuilder和StringBuffer可变: 大部分情况下的执行效率 ...

  7. [LeetCode]9. Palindrome Number回文数

    Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same back ...

  8. AngularJS(九):路由

    本文也同步发表在我的公众号“我的天空” AngularJS路由 AngularJS路由可以让我们通过不同的URL访问不同页面(似乎是废话),其价值主要体现在单页面的web应用中(single page ...

  9. 学习笔记:location.hash和history.pushState()

    在浏览器中改变地址栏url,将会触发页面资源的重新加载,这使得我们可以在不同的页面间进行跳转,得以浏览不同的内容.但随着单页应用的增多,越来越多的网站采用ajax来加载资源.因为异步加载的特性,地址栏 ...

  10. axios使用配置

    axios 配置 下载cnpm install axios vue-axios --save-dev main.js文件中配置 import axios from 'axios' import Vue ...