[paper reading]|IC-FPS: Instance-Centroid Faster Point Sampling Module for 3D Point-base

摘要:

  • 本文说首次实现了大规模点云场景中基于点的模型的实时检测(<30ms);
  • 首先指出FPS采样策略进行下采样是耗时的,尤其当点云增加的时候,计算量和推理时间快速增加;
  • 本文提出IC-FPS;包含两个模块:local feature diffusion based background point filter (LFDBF)Centroid Instance Sampling Strategy (CISS);LFDBF用来排除大量的背景点,而CISS用来替代FPS;

简介:

早期的工作将点云投影为多视图,或体素点云,并通过3D卷积提取特征。这些方法虽然取得了很好的效果,但在将点云转换为block等中间表示时,不可避免地会丢失信息,导致模型性能下降。目前的方法依赖于复杂的下采样策略和SA层提取邻居特征;用来区分前景点背景点;这种方法是低效的;

  1. 首先为了提高下采样速度。提出了CISS替代FPS;
  2. 其次提出质心点偏移模块,用来恢复实例目标的原始的几何结构;
  3. LFDBF可以区分前/背景点,减少计算量;
  4. 为了进一步提高LFDBF的性能,提出了Density-Distance Focal Loss,以确保对远距离处稀疏的前景点进行有效采样;
  5. 结合CISS和LFDBF,提出IC-FPS;

相关工作:

实例质心特征扩散采样模块:

总览

3D检测更加关注目标对象;通常将大量的背景点作为输入,导致后续计算效率低下;

此外,现有的基于点的方法存在FPS等复杂的下采样策略,增加了计算成本和推理时间;

IC-FPS结合LFDBF和CISS对前景和背景区域进行分类,并对点云进行高效下采样;

邻域特征扩散模块(NFDM)进一步扩大前景块特征的扩散范围,减少下采样造成的信息损失;

IC-FPS可以插入到任何基于点的三维物体检测模型中,进行端到端训练;

[paper reading]|IC-FPS: Instance-Centroid Faster Point Sampling Module for 3D Point-base

图2.IC-FPS框架框图。B到P表示块中的所有点都被选中。n、m、ms、m1、m2分别表示输入的点云个数、有效块个数、选中块个数、选中质心个数、选中实例个数。橙色的块被选为前景块。c和c1分别表示输入通道数和特征通道数。

LFDBF

算法可以有效的去除背景点;

给定一组点P={pi|i=1,...,N} ∈RN×c;N表示点的数量和c表示通道数;如图2所示,我们将点P的集合划分为块,并推导出大小为[m, s, c]的矩阵,其中m为有效块的个数,s为块中的点个数;

为了高效提取每个块的局部特征,采用PointPillars方法获取块内的相对位置信息;

然后将矩阵大小折叠为[m, s, (c + 6)],其中额外的六个维度包括每个块中点到中心点的相对距离和质心位置;{∇x,∇y,∇z,xc,yc,zc}? 图2中的标注和原文不一致

有效的分类前景点和背景点需要每个块的邻居特征,而MLP仅提取每个块的特征;构造NFDM代替3D卷积,有效的提取块间的邻居信息;

NFDM采用多尺度球查询作为RANDLA-Net中KNN的替代,以提高处理速度;

如图3所示,在得到每个块的邻域范围后,将每个块的邻域特征扩散到邻域中的其他块;

[paper reading]|IC-FPS: Instance-Centroid Faster Point Sampling Module for 3D Point-base

图3.邻域特征扩散模块图。(a)表示块特征,(b)表示第一个NFDM有效块的特征扩散范围,(c)表示第二个NFDM有效块的特征扩散范围。黄色区域为有效块,橙色区域为特征扩散范围。每个块使用球查询来获取其邻域,并将其特征扩散到邻域内其他有效块中。

使用NFDM后得到的特征来评估每个块。采用MLP作为分类网络计算块的置信度。置信度越高,该块就越有可能是“前景块”。

将置信度大于阈值α的块视为前景块,其特征表示为Fi∈R(ms×c1),其中c1为通道数,ms为前景块数。前景块中的所有点都定义为前景点。

为了更好地对点云中距离较远的稀疏前景区域进行采样,我们提出了一种基于正态分布的密度-距离焦损失LDDFL,以防止距离较远的实例被过滤掉。密度约束MDen根据块中的点密度分配不同的权重。

[paper reading]|IC-FPS: Instance-Centroid Faster Point Sampling Module for 3D Point-base

其中,µ、σ为正态分布的位置参数和尺度参数。NvNmax分别表示block中的有效点数和最大值。距离约束MDis对远距离的对象赋更多的权值,表示为:

[paper reading]|IC-FPS: Instance-Centroid Faster Point Sampling Module for 3D Point-base

其中D为点到坐标系原点的距离,MD为最远点到原点的距离。密度-距离焦距损耗LDDFL表示为:

[paper reading]|IC-FPS: Instance-Centroid Faster Point Sampling Module for 3D Point-base

CISS

CISS的目标是高效采样中心点,并在第一层SA层中替代FPS。我们认为FPS的成功有两个原因:1️⃣FPS根据点密度自适应选择中心点,即在高密度区域中选择更多的中心点。2️⃣FPS从原始点云中采样样本并保留几何结构信息,有利于提高后续检测框回归的精度。

因此,我们将部分前景点添加到中心点中,以增加实例对象的样本密度。构造质心点偏移模块来恢复点云原始几何结构。

原始实例点采样:导出前景块后,计算块的质心位置,记为Di∈Rms×3。根据分类置信度从高到低对质心点进行排序,选择最高的m1点。此外,同时选择到原点距离最短的m2点。在后续模型中,将实例点和质心点作为第一SA层的中心点。算法1是CISS的详细程序。

块质心点偏移:将原始点云的位置信息逐层添加到之后的网络中,有利于适应原始点云结构。但质心与实际点云位置存在偏差。直接使用质心可能会丢失原始的位置信息,模型在回归过程中无法准确预测边界盒的大小。因此,我们提出了质心点偏移模块,将质心移动到最近的实例点,以有效地恢复目标的原始大小。质心点偏移损失函数LCB表示为:

[paper reading]|IC-FPS: Instance-Centroid Faster Point Sampling Module for 3D Point-base

其中b是质心点到最近实例点之间的预测偏移量,˜b表示质心点到最近实例点的实际偏移量。⌊⌋表示centroid是否出现在实例框中。

[paper reading]|IC-FPS: Instance-Centroid Faster Point Sampling Module for 3D Point-base

质心特征扩散采样框架

在图2中,我们应用另一个NFDM来扩大每个中心点特征的扩散范围。通过叠加两个NFDMs,IC-FPS可以有效地减少由于降采样造成的信息损失,并取代复杂的第一个SA层。

总损失包括密度-距离焦距损失LDDFL、质心点偏移损失LCB、分类损失Lcls和包围盒生成损失Lbox,如式5所示。

[paper reading]|IC-FPS: Instance-Centroid Faster Point Sampling Module for 3D Point-base

实验

实施细节

我们选择3DSSD [30]/SASA [3]/IA-SSD[35]作为基线构建模型。首先对输入点云进行块划分。块大小设置为[0.075,0.075,1]。在LFDBF模块中,点云通过类似于PointPillars的方法进行扩展,然后输入到三个大小为(16,16,32)的MLP层。第一个NFDM的扩散半径设置为4.0,最大扩散点个数设置为16个。置信阈值设置为0.45。我们在DDFL中设µ= 0.5和σ = 0.5(方程3)。CISS中质心偏移模块包含两个MLP层,其大小为(16,3),对于第二个NFDM,扩散半径设为[0.2,0.8],最大扩散点数设为16。

我们在实验中配置了三个不同数量的IC-FPS模块,分别是IC-FPS- S /ICFPS-M/IC-FPS- L。采样的质心点和实例点的最大个数分别为16384/2048、26000/4096和30720/8197。

我们的实验采用了相同的训练策略和每个基线的模型结构,只是第一个SA层被IC-FPS取代。在IA-SSD实验中,batch size设置为8,学习率设置为0.01,使用Adam[8]优化器,weight decay设置为0.01。在3DSSD和SASA实验中,batch size设置为2,学习率设置为0.002。实验在NVIDIA A40 GPU和AMD EPYC 7402 CPU上进行。

 

原文链接:https://www.cnblogs.com/ymzcch12/p/17292920.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:[paper reading]|IC-FPS: Instance-Centroid Faster Point Sampling Module for 3D Point-base - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • EM算法的python实现的方法步骤

    以下是关于“EM算法的Python实现的方法步骤”的完整攻略: 简介 EM算法是一种常用的统计学习算法,用于估计含有隐变量的概率模型参数。在本教程中,我们将介绍如何使用Python实现EM算法,并提供两个示例。 方法步骤 EM算法的Python实现方法步骤如下: 初始化模型参数,包括隐变量的初始值和模型参数的初始值。 E步骤:根据当前模型参数和观测数据,计算…

    python 2023年5月14日
    00
  • 跟老齐学Python之啰嗦的除法

    在Python中,除法运算符/的结果可能会出现小数,这是因为Python默认使用浮点数进行除法运算。但是在某些情况下,我们需要使用整数进行除法运算,这时候就需要使用Python中的整除运算符//。 下面是“跟老齐学Python之啰嗦的除法”的完整攻略: 1. Python中的除法运算符 在Python中,除法运算符/的结果可能会出现小数,例如: >&g…

    python 2023年5月14日
    00
  • 详解插入排序算法原理与使用方法

    插入排序算法是一种简单直观的排序算法,其基本思路是从序列的第二个元素开始,逐个将每个元素插入到已排序的序列中,直到所有元素都被插入完成。它的时间复杂度是O(n²),因此适用于小规模数据的排序。 下面我们来详细讲解一下插入排序算法的使用方法和实现过程: 算法思路 从序列的第二个元素开始,逐个将每个元素插入到已排序的序列中 对于未排序的元素,依次与已排序的元素进…

    算法 2023年3月27日
    00
  • 【ACM组合数学 | 错排公式】写信

    题目链接:https://ac.nowcoder.com/acm/contest/54484/B 题意很简单,但是数据范围偏大。 错排公式 首先来推导一下错排公式: \[D(n) = n!\sum_{k=0}^{n}\frac{(-1)^k}{k!} \] 设一个函数: \[S_i表示一个排列中p_i = i的方案数 \] 那么我们可以知道: \[D(n) …

    算法与数据结构 2023年4月17日
    00
  • C++ 二叉树的实现超详细解析

    C++ 二叉树的实现超详细解析 在本篇文章中,我们将详细讲解如何使用C++语言实现二叉树数据结构。我们将分为以下几个部分: 二叉树的定义 二叉树的基本操作 C++实现 1. 二叉树的定义 二叉树是一种树形数据结构,其中每个节点最多有两个子节点。二叉树有以下几个特点: 树中的每个节点最多有两个子节点 左子节点的键值比父节点的键值小 右子节点的键值比父节点的键值…

    数据结构 2023年5月17日
    00
  • C语言数据结构深入探索顺序表

    C语言数据结构深入探索顺序表攻略 一、概述 顺序表是一种线性结构,是计算机程序中最常见的数据结构之一。在C语言中,顺序表可以用数组来实现。本篇文章将深入讲解顺序表的原理和实现方法,帮助读者加深对顺序表的理解,并掌握如何用C语言代码实现顺序表。 二、顺序表的定义和特点 顺序表是指用一组地址连续的存储单元依次存储线性表中的各个元素,用于表示具有相同数据类型的n个…

    数据结构 2023年5月17日
    00
  • Java中使用数组实现栈数据结构实例

    下面是Java中使用数组实现栈数据结构实例的完整攻略: 步骤一:定义栈类 我们可以通过定义一个名为 Stack 的类来创建栈类,其中包含以下属性: 一个整型的变量 top,用于存储当前栈顶的位置 一个整型的数组 items,用于存储栈中的元素 一个整型的变量 capacity,用于表示栈的容量 代码如下所示: public class Stack { pri…

    数据结构 2023年5月17日
    00
  • Halcon学习教程(一) 之提取十字线中心 图像分割

      原文作者:aircraft   原文链接:https://www.cnblogs.com/DOMLX/p/17266405.html      废话不多说,因为毕业后工作原因比较忙,好久没更新博客了,直接上图。。。     上图有个十字线,我们要提取出十字线的中心(Hhhh这个线是我随手画的 没画直!!) 第一步:肯定是读取图像进行灰度提取处理啦。   …

    算法与数据结构 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部