大白话讲MTCNN

  • MTCNN
  • 图像金字塔
  • P-net
  • R-net
  • O-net

MTCNN

它是2016年中国科学院深圳研究院提出的用于人脸检测任务的多任务神经网络模型,该模型主要采用了三个级联的网络,采用候选框加分类器的思想,进行快速高效的人脸检测。这三个级联的网络分别是快速生成候选窗口的P-Net、进行高精度候选窗口过滤选择的R-Net和生成最终边界框与人脸关键点的O-Net。和很多处理图像问题的卷积神经网络模型,该模型也用到了图像金字塔、边框回归、非最大值抑制等技术。
MTCNN,Multi-task convolutional neural network(多任务卷积神经网络),将人脸区域检测与人脸关键点检测放在了一起,它的主题框架个人感觉和VGG模型有点相像。总体可分为P-Net、R-Net、和O-Net三层网络结构。

图像金字塔


为了大家更好的理解图像金字塔,这里先贴上一张倒金字塔。我们可以看到从上到下,逐渐变小。假设最上层金字塔面积s的话,给人的直观感觉是似乎每一层都按照一个比例因子在渐渐变小。而图像金字塔也是类似的道理。通过不同的缩放系数factor对图片进行缩放,每次缩小为原来的factor大小。这个factor大约是0.709.很多小伙伴会疑惑为什么是这个比例,根据发表mtcnn论文里面的内容,图片金字塔缩放时,默认把宽,高都变为原来的1/2,缩放后面积变为原来的1/4;如果认为1/4的缩放幅度太大那就试试把面积缩放为原来的1/2。很直观的想法,所以这里的缩放因子0.709 ≈ sqrt(2)/2,这样宽高变为原来的sqrt(2)/2,面积就变为原来的1/2。好处有很多,最重要的就是生成了更多的原样本,那么识别起来就更多数据能够更准,缺点也很明显,时间太长。

P-net

到了第一个网络,P-net。刚开始输入进来,经过这个网络之后就产生很多框框。P-net对图像进行人脸识别。咦,我觉得这个耳朵可能是人脸,嘿,我觉得这个花花草草像。P-net当于是筛子一样,把有可能是人脸的全筛选进来了。这一步可能会产生好几百个框。那太多了也影响程序速度啊,就发明了NMS和bbr,他们的作用就是调整框框位置,筛选一些比如说觉得花花草草也是人脸的框框。可以看到基本上框框都在人的脸轮廓附近了。

R-net

如果说P-net是筛子,那R-net就是美图秀秀,美图秀秀功能更强大,精修某个地方。它可以让这个图上的框变得更少,变得更准。同样的也是经过NMS和bbr操作,一步一步优化。

O-net

O-net就是亚洲四大邪术之一–Ps,它可以在R-net基础上优化更多。可以说是非常准。其实不难发现,这三个网络是层层递进的,一步步优化,是不是又有点金字塔的感觉了呢?博主学完这个网络觉得这个很像VGG,但是实际上这三个网络就是一些卷积操作一步步提取特征来的。而且不光能够锁定人脸,还能锁定人面部5个特征:左眼右眼,左嘴角右嘴角,鼻子。

博主的介绍可能对于一些有基础的小伙伴没什么用,但是个人认为对于从来没接触过的小伙伴还是有启蒙意义的哟。下一篇,博主来教你怎么傻瓜式用mtcnn。不需要写几百行代码也能调用。
另外,博主觉得这个作者讲的特别好,有些地方博主讲的不深也是由于水平有限,大家可以看看这个up主讲的mtcnn。
https://www.bilibili.com/video/BV1fJ411C7AJ?from=search&seid=14620475020801029309

小白也能理解的MTCNN(上)相关推荐

  1. 理解ConstraintLayout性能上的好处(转载,仅供学习)

    本文转载自:https://www.jianshu.com/p/fae1d533597b,仅供学习 (译)理解ConstraintLayout性能上的好处 本文介绍了ConstraintLayout对 ...

  2. 从小白的角度理解二项分布、几何分布和泊松分布

    先说一下背景,无意间解出来<吴军的数学讲义>这本书,看到概率论的部分有点疑惑,加上当年概率论基本没去上课,于是自己上网研究了半天,终于算是搞明白了其中的区别,下面就从一个近似数学小白的角度 ...

  3. 【研一小白的白话理解】pytorch-CycleGAN-and-pix2pix

    pytorch-CycleGAN-and-pix2pix 博客简述 项目整体理解 GAN Cycle GAN CGAN DCGAN Pix2pix Pix2pix简介 Auto-encoder U-n ...

  4. 人脸检测算法理解之mtcnn

    最近在一次交流活动中,再次听别人讲人脸检测算法mtcnn,虽然以前也断断续续听过两次,对于一些技术细节仍不清楚,为了解决自己的困惑,笔者又重拾起这一算法,在认真研读论文和思考后有了新的理解,于是记录下 ...

  5. pythonsuper多重继承_小白都能理解的Python多继承

    前言 本文主要做科普用,在真实编程中不建议使用多重继承,或者少用多重继承,避免使代码难以理解. 方法解析顺序(MRO) 关于多重继承,比较重要的是它的方法解析顺序(可以理解为类的搜索顺序),即MRO. ...

  6. ELV局部视图与差分隐私【敏感度到底怎么理解】【上】

    <Analyzing Subgraph Statistics from Extended Local Views with Decentralized Differential Privacy& ...

  7. load average多少是正常_对 cpu 与 load 的理解及线上问题处理思路解读

    (给ImportNew加星标,提高Java技能) 转自:五月的仓颉 前言 2019双11还有几天就要到来了,大家也都知道服务器在大促期间由于流量的增加势必导致机器的cpu与load变高.因此趁着这个时 ...

  8. 最新小白详细描述在centos7.5上安装python3并使用Nginx+virtualenv+supervisor来部署tornado项目(整理集合结合实际)系列2

    4.安装nginx 安装gcc gcc是用来编译下载下来的nginx源码,安装gcc和c++编译器(当然以下都是在切换到root用户下的) yum -y install gcc  gcc-c++ ce ...

  9. 最新小白详细描述在centos7.5上安装python3并使用Nginx+virtualenv+supervisor来部署tornado项目(整理集合结合实际)系列1

    Centos7默认自带了Python2.7版本(选择最小安装可能没有),但是因为项目需要使用Python3.x你可以按照此文的三个方法进行安装.(本文是大致部署好后一段时间才写的,由于中间遇到许多坑导 ...

最新文章

  1. linux常用命令:系统目录说明及命令ls,cp,touch,history,gparted分区
  2. 随时间的反向传播算法 BPTT
  3. SpringMVC拦截器之拦截器接口方法演示
  4. 手机电脑的芯片主要是由_全体起立!苹果自研电脑芯片登场,iOS迎大更新…WWDC20精彩远不止这些...
  5. java 判断是否是list_JAVA从头开始一基础梳理(4-3)
  6. usb4java android,USB audio on Android platform
  7. .NET 指南:属性与方法之间的选择
  8. configure: error: Cannot find the WebServer
  9. 信息安全原理复习资料
  10. 猿辅导(实习800/天)面试算法题详解
  11. matlab求极限分布,中心极限定理的Matlab演示
  12. 【Arch】Android 7 Nougat源码目录结构分析
  13. C++调用JSON-CPP库实现JSON字符串解析
  14. Linux学习笔记—Apache
  15. wazuh-monitord agent连接监控
  16. Chrome浏览器首页被hao123劫持的解决办法
  17. JavaWeb_04_ELJSTL
  18. 下一代云计算模式:Docker正掀起个性化商业革命
  19. 菜鸟弱弱地问:找个薪资待遇差的工作能成长吗?
  20. 摩拜获巨额融资,为何还被曝拖欠底层员工薪水?

热门文章

  1. pycharm中用pandas读取中文表头的csv
  2. 2022建筑电工(建筑特殊工种)考试题库及模拟考试
  3. 革新的教育培训行业,APP是否成为重点
  4. Java多线程中的锁
  5. 微信使用技巧:如何将Mac电脑中的微信暂时锁定!
  6. java 下载pdf 苹果手机乱码
  7. 13_vmware虚拟机设置静态ip
  8. android vts 环境搭建,Android P VTS/GSI 测试配置
  9. 《零基础D编程入门三》
  10. 怎么选一款家用万用表