目标检测 | Point Cloud RoI Pooling

Point Cloud RoI Pooling 概述

Points Cloud RoI Pooling(点云RoI池化)是3d点云目标检测中一个相对重要的机制,RoI Pooling Layer是two-stage detector(二阶段检测网络)中最为核心的模块之一,使其与one-stage detector(一阶段检测网络)区别。据调研,其最早出自于Shaoshuai Shi等人的文章PointRCNN: 3D Object Proposal Generation and Detection from Point Cloud,在文章中被称为Point cloud region pooling(点云区域池化)

Point Cloud RoI Pooling机制顾名思义,是为了处理点云而在RoI Pooling基础上进行改进得到的,与RoI Pooling的目的和原理基本一致。

Pooling

首先,我们先从深度学习中,最基础且最熟悉不过的Pooling说起。Pooling最早是使用在LeNet,其用于减少特征图的尺寸并提取最显著的特征,从而降低模型复杂性并减少计算量,有助于防止过拟合,相对于是一个对特征subsampling的过程。

一般常用的有Max Pooling和Average Pooling,在某些做global descriptor的网络中还会使用Global Pooling

  • Max Pooling(最大池化):对每个池化窗口内的特征取最大值作为该区域的代表特征。
  • Average Pooling(平均池化):对每个池化窗口内的特征取平均值作为该区域的代表特征。
  • Global Pooling(全局池化):将整个特征图进行池化,通常是全局平均池化或全局最大池化,将整个特征图降为一个单一的值或向量。

就以Max Pooling为例,其实现是通过滑动固定大小的\(N\times N\)窗口(图中是\(2\times 2\))在特征图上移动,对每个窗口内的特征进行汇总或提取,产生一个新的特征图。这个过程可以减小特征图的尺寸,保留最重要的特征信息,并减少参数数量和计算量。

此外如果是Average Pooling,还可以看作是卷积核为\(N\times N\)的全\(1\)矩阵,\(\text{stride}=N\)的卷积操作。

RoI Pooling

RoI Pooling最早出现Ross Girshick等人的文章Fast R-CNN。这篇文章提出了一种称为Fast R-CNN的目标检测方法,其中RoI Pooling被用于从卷积特征图中提取固定大小的特征表示,以用于后续的分类和边界框回归任务。

RoI Pooling机制的引入,使得网络可以将不同尺寸的RoI映射到固定大小的特征图上,这样就可以通过一个固定维度的全连接层处理所有的RoI了。

我们首先回顾一下two-stage detector的结构,如下图所示,其一共可以被分为三个部分:

  • Backbone Network (骨干网络)

    Backbone Network负责从原始输入图像中提取特征。通常是一系列的卷积层、池化层和其他操作的堆叠,用于捕获图像的低级到高级特征。

    其输出一般为比原始图像要小且通道数更高的\(B\times C^\prime\times W^\prime\times H^\prime\)矩阵

  • Region Proposal Network(RPN,区域建议网络)

    RPN 是用于提出RoI(Region of Interest,感兴趣区域)的神经网络组件。它在骨干网络的基础上,通过滑动窗口或锚框技术,生成可能包含物体的RoI。

    其输出一般为\(B\times N \times 4\)的矩阵,每一个RoI由\((x,y,w,h)\)的四维向量所表示,\((x,y)\)表示该RoI的中心点坐标,\((w,h)\)表示该RoI的长与宽,共有\(N\)个。

  • Classification Head(分类头)与Regression Head(回归头)

    Classification Head用于对候选框内的目标物体进行分类,而Regression Head用于对候选框进行细化。Classification Head和Regression Head一般都是由固定大小的全连接层组成,通过RoI提取特征之后输入其中得到最终的目标检测结果。

如果我们关注RPN与Classification Head之间的连接,我们就会发现一个问题:得到的每一张RoI区域形状不一(长与宽不是固定的),那么其中包含的feature也将不是固定维度的,无法输入固定大小的Classification Head进行处理。

为此,我们需要通过一种机制将所有不同的\(W^\prime\times H^\prime\)的特征图处理为固定长度为\(M\)的特征,这就是RoI Pooling机制在发挥的作用了。

RoI Pooling任意的大小为\(C\times W^\prime \times H^\prime\)的RoI特征映射为固定大小为\(M=C\times W^{\prime\prime} \times H^{\prime\prime}\)的RoI特征,其中RoI Pooling可以被分为三步。

  • 对齐RoI区域
  • 划分RoI区域
  • 池化RoI区域

下图简单地描述了RoI Max-pooling中的三个步骤

此外,还有一种称为RoI Align的机制是在RoI Pooling的基础上通过爽线性插值进行池化,因为与本随笔主题关系不大就不在此赘述了。

Point Cloud RoI Pooling

Point Cloud RoI Pooling顾名思义,是点云3d目标检测版本的RoI Pooling,据调研,最早见于Shaoshuai Shi等人的文章PointRCNN: 3D Object Proposal Generation and Detection from Point Cloud,在文章中被称为Point cloud region pooling(点云区域池化)

点云的RoI Pooling相比于RGB图像的RoI Pooling发生了如下的改变:

  • RoI和目标框由2d变为3d,这就意味着其参数由四维的\((x,y,w,h)\)上升为七维的\((x,y,z,l,w,h,\theta)\),其中\(\theta\)是目标框的yaw(偏航角)。虽然是3d目标检测,但是一般来说很少会有超过两个自由度的任务,所以使用一个七个参数就足以表示了。
  • RGB图像是有序的点阵图,可以直接通过坐标查询,而点云的结构化程度低,无法直接通过坐标查询。其中点云是通过大小为\(B\times N\times(3+C)\)的矩阵进行表示,\(N\)是点云数量,\(3+C\)表示每个点云的特征(\(x,y,z\)坐标以及提取特征)。

同样的,给定采样数量\(S^\prime\),Point Cloud RoI Pooling也可以被划分为以下几个步骤:

  • pts assign,计算出每个点所属的RoI区域,输出大小为\(B\times M \times N\)的布尔矩阵pts assign,如果第\(B\)个batch中第\(M\)个点处于第\(N\)个RoI,那么\([B][M][N]=\textbf{true}\),反之\([B][M][N]=\textbf{false}\)。
  • pts pool,通过第一步得到的布尔矩阵pts assign,计算出每个RoI区域中所拥有的点,并通过随机采样的方式将点的数量由\(S\)对齐为固定大小的\(S^\prime\),输出大小为\(B\times M \times S^\prime\)的index矩阵pts pool,其中每个元素都是点在点云中的index。
  • feature forward,,将从第二步得到的大小为\(B\times M \times S^\prime\)的index矩阵pts pool映射成大小为\(B\times M \times S^\prime \times (3+C)\)的pooled feature(池化特征)

最后我们所得到固定大小为\(B\times M \times S^\prime \times (3+C)\)的池化特征,输入到分类头中,其输入大小为\(I=S^\prime \times (3+C)\),这样就完成了Point cloud pooling的操作。

Point Cloud RoI Pooling 实现细节

(未完待续)

目标检测 | Point Cloud RoI Pooling的更多相关文章

  1. CVPR2020论文解读:3D Object Detection三维目标检测

    CVPR2020论文解读:3D Object Detection三维目标检测 PV-RCNN:Point-Voxel Feature Se tAbstraction for 3D Object Det ...

  2. ROI pooling

    R-CNN需要大量的候选框,对每个候选框都提取特征,速度很慢,无法做到实时检测,无法做到端到端.ROI pooling层实现training和testing的显著加速,并提高检测accuracy. R ...

  3. 目标检测(二)SSPnet--Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognotion

    作者:Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun 以前的CNNs都要求输入图像尺寸固定,这种硬性要求也许会降低识别任意尺寸图像的准确度. ...

  4. 目标检测--Spatial pyramid pooling in deep convolutional networks for visual recognition(PAMI, 2015)

    Spatial pyramid pooling in deep convolutional networks for visual recognition 作者: Kaiming He, Xiangy ...

  5. 目标检测中的pooling操作

    1.SPPnet池化过程 假设这个feature map的尺寸是M*N*256,将这个feature map的每一个channel以4*4,2*2和1*1来划分格子,每个格子里面做max poolin ...

  6. 目标检测中roi的有关操作

    1.roi pooling 将从rpn中得到的不同Proposal大小变为fixed_length output, 也就是将roi区域的卷积特征拆分成为H*W个网格,对每个网格进行maxpooling ...

  7. 定位、识别;目标检测,FasterRCNN

    定位: 针对分类利用softmax损失函数,针对定位利用L2损失函数(或L1.回归损失等) 人关节点检测 针对连续变量和离散变量需要采用不同种类的损失函数. 识别: 解决方案: 1.利用滑动窗口,框的 ...

  8. 目标检测方法总结(R-CNN系列)

    目标检测方法系列--R-CNN, SPP, Fast R-CNN, Faster R-CNN, YOLO, SSD 目录 相关背景 从传统方法到R-CNN 从R-CNN到SPP Fast R-CNN ...

  9. 目标检测之R-CNN系列

    Object Detection,在给定的图像中,找到目标图像的位置,并标注出来. 或者是,图像中有那些目标,目标的位置在那.这个目标,是限定在数据集中包含的目标种类,比如数据集中有两种目标:狗,猫. ...

  10. 利用更快的r-cnn深度学习进行目标检测

    此示例演示如何使用名为“更快r-cnn(具有卷积神经网络的区域)”的深度学习技术来训练对象探测器. 概述 此示例演示如何训练用于检测车辆的更快r-cnn对象探测器.更快的r-nnn [1]是r-cnn ...

随机推荐

  1. 其它——paramiko模块的使用

    文章目录 paramiko 一 介绍 二 通过用户名密码方式远程执行命令 三 通过用户名密码方式上传下载文件 四 通过公钥私钥远程执行命令 五 通过公钥私钥远程上传下载文件 六 通过私钥字符串远程连接 ...

  2. 圆角android

    资源地址 <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid an ...

  3. vue 基于原生动画的自动滚动表格

    前言 公司展示大屏需要写滚动表格,通过滚动播放数据,自己随便摸了一个基于动画的自动滚动表格 原理 根据每行的大小和设置的每行滚动时间设置滚动位置,动态添加动画,并把数组第一项移动到最后一项,并订阅该动 ...

  4. IEEE754浮点数与字节数互转工具

    前段时间做的一个小工具,分享一下. 提供浮点数和字节的相互转换. 下载

  5. Building Bridges 题解

    Building Bridges 题目大意 连接两根柱子 \(i,j\) 的代价是 \((h_i-h_j)^2+\sum\limits_{k=j+1}^{i-1}w_k\),连接具有传递性,求将 \( ...

  6. 【pwn】[SWPUCTF 2021 新生赛]nc签到 --shell过滤字符

    附件下载打开: import os art = '''    ((  "####@@!!$$    ))       `#####@@!$$`  ))    ((  '####@!!$:  ...

  7. python中四种方法提升数据处理的速度

    在数据科学计算.机器学习.以及深度学习领域,Python 是最受欢迎的语言.Python 在数据科学领域,有非常丰富的包可以选择,numpy.scipy.pandas.scikit-learn.mat ...

  8. 关于微信小程序中如何实现数据可视化-echarts动态渲染

    移动端设备中,难免会涉及到数据的可视化展示.数据统计等等,本篇主要讲解原生微信小程序中嵌入echarts并进行动态渲染,实现数据可视化功能. 基础使用 首先在GitHub上下载echarts包 地址: ...

  9. 用友NCC产品API使用指南

    轻易云用友NCC产品API集成专题 open api简介 Open API即开放API,也称开放平台. 所谓的开放API(OpenAPI)是服务型网站常见的一种应用,网站的服务商将自己的网站服务封装成 ...

  10. preparedStatement.setString()方法

    PreparedStatement作用:PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程. 1.预编译sql语句,效率高 2.安全,避免sql注入 3 ...