博客
关于我
MTCNN论文实现细节详解 附疑难点纯手绘讲解图 python
阅读量:215 次
发布时间:2019-02-28

本文共 1237 字,大约阅读时间需要 4 分钟。

论文解读:P、R、O网络结构与实现

本文对P、R、O网络结构进行解读,详细分析网络的工作流程及其实现步骤,并探讨其中的难点。


1. 论文概述

本研究基于P、R、O网络框架,旨在实现面部关键点检测。网络由三个部分组成:P网络、R网络和O网络,分别负责初步检测、精确检测和优化检测。


2. P、R、O网络结构图解

P网络、R网络和O网络通过多级特征学习,逐步提升人脸检测的精度。以下是网络的主要组成部分:

  • P网络:负责初步的人脸框定,采用全卷积结构,支持多尺度输入。
  • R网络:基于P网络的结果,进一步精确人脸框定。
  • O网络:对R网络的输出进行优化,提升检测精度。

3. 代码实现步骤

代码实现分为以下几个阶段:

  • 样本预处理

    数据集采用celeba,生成三种尺寸(12×12、24×24、48×48),每种尺寸包含正样本、负样本及部分中性样本。

  • P网络实现

    • 写P网络:设计包含多个卷积层的网络结构,支持多尺度输入。
    • 训练网络:利用预处理后的数据集进行训练,输出pkl权重文件。
  • 测试流程

    • P网络测试:

      • 输入任意大小的图像(min(w,h) ≥ 12),将图像转换为数据格式并升维到4维。
      • 经过P网络(_cls, _offset = self.pnet(img_data))得到置信度与偏移量。
      • 选取置信度大于阈值(0.6)的框定结果,经边框回归(平移、缩放逆操作)得到原图人脸附近的预测框坐标,并补充金字塔操作生成更多框定候选。
    • R网络测试:

      • 将P网络输出的框定结果补充为正方形(convert_to_square),在原图上剪裁可能为人脸的区域并缩小至24×24。
      • 经过R网络(_cls, _offset = self.rnet(imgdataset))输出置信度与偏移量,选取置信度大于0.6的框定结果,经边框回归得到原图坐标。
    • O网络测试:

      • 与R网络类似流程,但置信度阈值由0.6提高至0.7,且非极大值抑制(NMS)时设置isMin=True。

  • 4. 难点分析

    本实现的难点在于对多个方法的理解与应用,尤其是以下几个方面:

  • 图像金字塔:

    图像金字塔仅在推理阶段使用,训练时不需要多尺度样本。P网络可看作一个12×12的大卷积核,以stride=2的步长在全图上做滑窗操作。

  • iou(交叠度):

    计算两个框的交叠程度,值越高表示交叠越大。

  • nms(非极大值抑制):

    根据iou值将重叠度较低的框排除。

  • convert_to_square:

    将P网络输出的框定结果补充为正方形。

  • 边框回归(box_reg):

    根据偏移量和缩放因子,计算框定框的最终坐标。


  • 5. 效果图展示

  • 原图

    输入图像可能包含多个人脸区域。

  • P网络输出:

    得到多个候选框定框,部分框可能局部化。

  • R网络输出:

    精确筛选出高置信度的框定框。

  • O网络输出:

    对最终框定框进行优化,提升检测精度。


  • 后续进度展望

    本研究基于P、R、O网络框架,计划依次研究YOLO系列(v1、v2、v3),探讨其优缺点与应用场景。

    转载地址:http://trpi.baihongyu.com/

    你可能感兴趣的文章
    Python接口自动化测试实战系列
    查看>>
    python下载_安装_配置_以及第一行python程序---python工作笔记009
    查看>>
    Python不协调机器人消息.内容
    查看>>
    Python与C#之间内存共享互传信息
    查看>>
    python与c语言混合编程_你试过C语言和Python一起混合编程吗?两者相加不是已经无敌了!...
    查看>>
    python与excel
    查看>>
    Python与Excel的完美邂逅:深入浅出,手把手教你轻松玩转Excel数据操作
    查看>>
    python与flask_Python编程中flask的简介与简单使用
    查看>>
    python与图灵机器人交互(WXPY版本)
    查看>>
    python与运算符_python运算符
    查看>>
    python两个列表获取交集,并集,差集
    查看>>
    python两个字典合并,两个list合并
    查看>>
    Python两个版本共存时,命令行升级pip
    查看>>
    Python两个版本共存时,怎么验证是否安装成功 scrapy
    查看>>
    Python两个版本共存时,通过pip安装Scrapy
    查看>>
    python两组变量的相关关系散点图_变量是什么?变量间的两种关系——函数关系和相关关系(小学版)...
    查看>>
    Python中 pass语句的作用
    查看>>
    python中 urllib, urllib2, httplib, httplib2 几个库的区别
    查看>>
    python中 yaml库 & json库 & xmltodict库使用
    查看>>
    python中 将你的名字转化成为二进制并输出
    查看>>