一、MTCNN关键参数

nms_threshold:非极大值抑制nms筛选人脸框时的IOU阈值,三个网络可单独设定阈值,值设置的过小,nms合并的少,会产生较多冗余计算。示例nms_threshold[3] = { 0.5, 0.7, 0.7 };。

threshold:人脸框得分阈值,三个网络可单独设定阈值,值设置的太小,会有很多框通过,也就增加了计算量,还有可能导致最后不是人脸的框错认为人脸。示例threshold[3] = {0.8, 0.8, 0.8};
minsize :最小可检测图像,该值大小,可控制图像金字塔的阶层数的参数之一,越小,阶层越多,计算越多。示例minsize = 40;
factor :生成图像金字塔时候的缩放系数, 范围(0,1),可控制图像金字塔的阶层数的参数之一,越大,阶层越多,计算越多。示例factor = 0.709;

​​​​

二、生成图像金字塔

前面提到,输入图片的尺寸,minsize和factor共同影响了图像金字塔的阶层数。也就是说决定能够生成多少张图。
缩放后的尺寸minL=org_L*(12/minisize)*factor^(n),n={0,1,2,3,…,N},缩放尺寸最小不能小于12,也就是缩放到12为止。n的数量也就是能够缩放出图片的数量。

三、Pnet运算

一般Pnet只做检测和人脸框回归两个任务。忽略下图中的Facial landmark。

虽然网络定义的时候input的size是12123,由于Pnet只有卷积层,我们可以直接将resize后的图像喂给网络进行前传,只是得到的结果就不是112和114,而是mm2和mm4了。这样就不用先从resize的图上截取各种12123的图再送入网络了,而是一次性送入,再根据结果回推每个结果对应的1212的图在输入图片的什么位置。
针对金字塔中每张图,网络forward计算后都得到了人脸得分以及人脸框回归的结果。人脸分类得分是两个通道的三维矩阵m
m2,其实对应在网络输入图片上mm个12*12的滑框,结合当前图片在金字塔图片中的缩放scale,可以推算出每个滑框在原始图像中的具体坐标。
首先要根据得分进行筛选,得分低于阈值的滑框,排除。

四、Rnet

Rnet仍然只做检测和人脸框回归两个任务。忽略下图中的Facial landmark。

Rnet的作用是对Pnet得到的人脸框进一步打分筛选,回归人脸框。
将Pnet运算出来的人脸框从原图上截取下来,并且resize到24243,作为Rnet的输入。输出仍然是得分和BBox回归结果。
对得分低于阈值的候选框进行抛弃,剩下的候选框做nms进行合并,然后再将BBox回归结果映射到原始图像的像素坐标上。
所以,Rnet最终得到的是在Pnet结果中精选出来的人脸框。

五、Onet

Onet将检测,人脸框回归和特征点定位,一起做了。
Onet的作用是对Rnet得到的人脸框进一步打分筛选,回归人脸框。同时在每个框上都计算特征点位置。

将Rnet运算出来的人脸框从原图上截取下来,并且resize到48483,作为Onet的输入。输出是得分,BBox回归结果以及landmark位置数据。
分数超过阈值的候选框对应的Bbox回归数据以及landmark数据进行保存。
将Bbox回归数据以及landmark数据映射到原始图像坐标上。
再次实施nms对人脸框进行合并。

经过这层层筛选合并后,最终剩下的Bbox以及其对应的landmark就是我们苦苦追求的结果了。

MTCNN解读:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks
https://blog.csdn.net/fuwenyan/article/details/73201680

MTCNN人脸及特征点检测—代码应用详解(基于ncnn架构)
https://blog.csdn.net/fuwenyan/article/details/77573755

如何应用MTCNN和FaceNet模型实现人脸检测及识别
https://www.itcodemonkey.com/article/3536.html

深度学习自学(二):人脸检测MTCNN学习总结相关推荐

  1. 人脸检测——MTCNN学习笔记

    论文:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks 论文地址:https:// ...

  2. 学习笔记:人脸检测和人脸识别

    人脸检测( Face Detection )和人脸识别技术是深度学习的重要应用之一.本章首先会介绍MTCNN算法的原理, 它是基于卷积神经网络的一种高精度的实时人脸检测和对齐技术.接着,还会介绍如何利 ...

  3. OpenCV与图像处理学习十七——OpenCV人脸检测(含代码)

    OpenCV与图像处理学习十七--OpenCV人脸检测(含代码) 一.人脸识别概要 1.1 人脸检测 1.2 人脸对齐(Face Alignment) 1.3 人脸特征提取(Face Feature ...

  4. 人脸检测MTCNN和人脸识别Facenet(附源码)

    原文链接:人脸检测MTCNN和人脸识别Facenet(附源码) 在说到人脸检测我们首先会想到利用Harr特征提取和Adaboost分类器进行人脸检测(有兴趣的可以去一看这篇博客第九节.人脸检测之Haa ...

  5. Keras框架:人脸检测-mtcnn思想及代码

    人脸检测-mtcnn 概念: MTCNN,英文全称是Multi-task convolutional neural network,中文全称是多任务卷积神经网络, 该神经网络将人脸区域检测与人脸关键点 ...

  6. 人脸检测实战:使用opencv加载深度学习模型实现人脸检测

    使用 OpenCV 和深度学习进行人脸检测 今天的博文分为三个部分. 在第一部分中,我们将讨论更准确的 OpenCV 人脸检测器的起源以及它们在 OpenCV 库中的位置. 然后我将演示如何使用 Op ...

  7. python视频人脸检测_Python学习案例之视频人脸检测识别

    前言 上一篇博文与大家分享了简单的图片人脸识别技术,其实在实际应用中,很多是通过视频流的方式进行识别,比如人脸识别通道门禁考勤系统.人脸动态跟踪识别系统等等. 案例 这里我们还是使用 opencv 中 ...

  8. (转)第三十七节、人脸检测MTCNN和人脸识别Facenet(附源码)

    http://www.cnblogs.com/zyly/p/9703614.html 在说到人脸检测我们首先会想到利用Harr特征提取和Adaboost分类器进行人脸检测(有兴趣的可以去一看这篇博客第 ...

  9. 人脸检测MTCNN详解

    <Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks>论文解读. 本文来 ...

最新文章

  1. 80%的人都混淆的BI和报表之不同
  2. 第二十二章 李逵为什么不可爱
  3. Linux出现NOKEY
  4. 在JDK 10中不可变与不可修改
  5. React Router教程–如何使用代码示例渲染,重定向,切换,链接等
  6. 干货 | YOLOv5在建筑工地中安全帽佩戴检测的应用
  7. java获得map内存_[java]测试static的map的内存
  8. hadoop2.2.0 MapReduce求和并排序
  9. 29.优化 MySQL Server
  10. mysql 数据库自动备份(bat+计划任务方式)--亲测备份及还原成功
  11. 为什么要使用Keil MDK-ARM中间件库?
  12. 华东师范数学分析第4版笔记和课后答案
  13. DOSBOX怎么使用 从编译到连接到执行操作全过程 + debug
  14. TensorFlow Serving 入门教程(Windows)
  15. Incapsula 反爬虫
  16. vue3的setup的使用和原理解析
  17. C++ 实现一个复数类
  18. TDCS刺激强度对健康受试者工作记忆的影响
  19. MATLAB批量读取航摄相片EXIF信息和GNSS信息以及MATLAB批量经纬度坐标转换空间直角坐标
  20. mac mini u盘安装系统_用u盘安装win7系统详细步骤

热门文章

  1. 人工智能 深度学习(Deep learning)开源框架
  2. 在Visual Studio 2015中使用Grunt、Bowe
  3. 远程开发工作具备因素有哪些?
  4. uni-app 封装请求
  5. Vue学习笔记之10-组件化开发
  6. Android开发 装ubuntu,Ubuntu系统安装Android开发环境
  7. linux一次性密码确保ssh登录安全,使用 SSH 时确保 EC2 Linux 实例安全的最佳实践
  8. IP地址 0.0.0.0 是什么意思?
  9. python-字典方法(dict)知识整理
  10. springcloud- FeginClient 调用统一拦截添加请求头 RequestInterceptor ,被调用服务获取请求头...