博客
关于我
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/

    你可能感兴趣的文章
    NumPy 库详细介绍-ChatGPT4o作答
    查看>>
    NumPy 或 Pandas:将数组类型保持为整数,同时具有 NaN 值
    查看>>
    numpy 或 scipy 有哪些可能的计算可以返回 NaN?
    查看>>
    numpy 数组 dtype 在 Windows 10 64 位机器中默认为 int32
    查看>>
    numpy 数组与矩阵的乘法理解
    查看>>
    NumPy 数组拼接方法-ChatGPT4o作答
    查看>>
    numpy 用法
    查看>>
    Numpy 科学计算库详解
    查看>>
    Numpy.fft.fft和numpy.fft.fftfreq有什么不同
    查看>>
    numpy.linalg.norm(求范数)
    查看>>
    Numpy.ndarray对象不可调用
    查看>>
    Numpy.VisibleDeproationWarning:从不整齐的嵌套序列创建ndarray
    查看>>
    Numpy:按多个条件过滤行?
    查看>>
    Numpy:条件总和
    查看>>
    numpy、cv2等操作图片基本操作
    查看>>
    numpy中的argsort的用法
    查看>>
    NumPy中的精度:比较数字时的问题
    查看>>
    numpy判断对应位置是否相等,all、any的使用
    查看>>
    Numpy多项式.Polynomial.fit()给出的系数与多项式.Polyfit()不同
    查看>>
    Numpy如何使用np.umprod重写range函数中i的python
    查看>>