论文标题:Group-Free 3D Object Detection via Transformers
iccv2021 本文主要是针对votenet等网络中采用手工group的问题提出的改进 我们首先回忆一下vote中group是怎么做的:首先选出vote种子后进行采样与聚类 采样与聚类的方式一般是knn寻找vote种子的临近点 请注意 这里的选取的group数 和聚类临近点的数目都是我们手工设计的 那么这么设计会有一些什么不好的地方呢? 首先vote数目是fps选取出来的 为了选取到覆盖所有目标的vote 我们必须要选择足够多的vote 这样便会在背景点上选择不少vote 进行聚类生成质量很差的proposals 其次 这些选取的超参数是否是最优的呢 我们需要进行大量的对比实验 而且一个算法在室内与室外环境下应用这样的超参数也是不太能直接移植的 因为两种环境下点云的密度是不一样的。 例如下图中 我们可以看到对于中心临近的物体 他很容易选择到其他物体上的点: 那么 如何根据物体进行点的选取呢? 这便是这篇文章做的事情。 老规矩 上图 文章的结构很类似votenet 主要创新在于vote种子的选取及种子之间的feature操作 首先简单介绍一下backbone 主要是首先利用pointnet++的sa层进行8倍下采样 随后上采样至2x得到1024个点 对于这1024个点我们选取vote种子点 文章提出了三种方法 首先是进行fps选取最远的k个点 其次是选取k个种子点 简单来说就是选取最邻近物体中心的k个点 这便涉及到设计网络 寻找前景中心点。最后一种方法是基于nms的k临近点选取 主要是将物体中心的点进行一个确定半径的抑制。 文章选择kps作为defualt的方法。 随后对于这k个点进行编码: 主要是首先对于这k个点计算他们的self attention 然后以这k个点作为query计算与其他选出来的1024个点的cross attention 还是transformer的一些基本的公式: 作者补充介绍了文章是怎么就行proposals检测和位置编码的: 文章提出的位置编码是stage by stage进行的 在一个transfomer模块中预测出来的box来进行下一个stage的位置编码。 而对于多个transfoemer预测出来的结果我们进行一个整合 随后nms处理输出最终的结果。 loss function主要包括decoder和sampler两个阶段的损失。 实验结果没啥好看的 可以看看推理速度:
|