【论文阅读】【3d目标检测】Density Based Clustering for 3D Object Detection in Point Clouds

论文标题:Density Based Clustering for 3D Object Detection in Point Clouds

cvpr2020,新加坡国立大学
一部分工作来自这个实验室2019年的一篇iros(标题是EPN: Edge-Aware PointNet for Object Recognition from Multi-View 2.5D Point Clouds),需要看懂这篇文章还需要看一下前文。看完这篇文章觉得有些地方写的有些不太规范,但是作者提出的非监督的方法及目标检测分任务训练的方法还是很值得学习的。
老规矩 先摆出论文架构:
【论文阅读】【3d目标检测】Density Based Clustering for 3D Object Detection in Point Clouds_第1张图片
可以看出论文主要由三个级联的部分组成:

1 Base network

这个部分主要是对于输入点云进行前景和背景的分类。
采用的方法很简单主要是采用pointnet++为backbone,首先对于点云进行编码操作,包括encoder和decoder的操作,encode操作主要是进行mlp编码。decode则是上采样操作。主要是进行feature的插值处理。
【论文阅读】【3d目标检测】Density Based Clustering for 3D Object Detection in Point Clouds_第2张图片

注意的是这一部分作者为了提升运行速度是随机采样了N个点,因此对于预测出来的前景及背景的label也需要进行一个插值处理,这里作者说采用的是NN-UPs操作:
在这里插入图片描述

Class Agnostic Instance Segmentation

这里作者采用了无监督的方法进行点云的聚类。作者认为前一阶段得到了前景点,但是对于尺寸大小变化的室内场景物体来说,直接进行目标检测操作是比较难回归其中心及尺寸关系的,这里作者便提出了一种DBSCAN操作,先对于一个物体的点云进行聚类操作。这种聚类操作是无监督的,同时也是由超参数来决定聚类成几类。
【论文阅读】【3d目标检测】Density Based Clustering for 3D Object Detection in Point Clouds_第3张图片
主要是给定半径和最小聚类点数目来进行聚类。最开始我也有点担心:如果同一物体的点云被聚类到两类那岂不是会输出两个bbox吗?这就是需要调节这两个超参数需要解决的问题,后来实验结果表明这样的操作效果还不错。
聚类完成后每一类会有一个重心,将聚类后的点云输入到backbone中预测与物体实际重心的偏移量δC。设计loss fcn来进行监督。
【论文阅读】【3d目标检测】Density Based Clustering for 3D Object Detection in Point Clouds_第4张图片

这里作者说了该方法相对于votenet的几个优点:
1.首先这个方法是一个无监督的聚类算法,不需要考虑物体的尺寸、大小,单纯对于点云进行聚类。这改进了密集的点云采样,相比FPS和随机采样难免会在一些密集的点云多采样。votenet首先是利用pointnet++的多个sa进行k个聚类点的采样,难免受到点云的density的影响。
2.这样的基于点与点之间距离的聚类也是对于重心的回归的收敛速度有作用的。

随后我们便可以对偏移后的重心进行k个聚类操作,这其中是否还对于位移后的重心点进行采样在进行聚类,文章中没有说。其他的操作类似于votenet,输出了k个聚类的结果。

EPN: Edge-Aware PointNet

这一块作者便使用了自己iros2019上发表文章做得工作,主要是对于pointnet进行了改进,增加了一个分支,实际上做的是对每个聚类的一个classification的操作。生成bbox则是作者新加的一些head。

【论文阅读】【3d目标检测】Density Based Clustering for 3D Object Detection in Point Clouds_第5张图片
文章框架如图所示,首先作者利用rule based的一个方法进行了edge的检测。对于检测到的edge点,作者将他们投影到3个视图上,最终输出2d的二值图(就纯纯表明这个pixel上有没有角点),进行cnn卷积操作,与前面进行sa的聚类点云得到的feature vector相加后得到的vector进行classification及bbox regression。
角点检测算法:
在这里插入图片描述
【论文阅读】【3d目标检测】Density Based Clustering for 3D Object Detection in Point Clouds_第6张图片
投影:
【论文阅读】【3d目标检测】Density Based Clustering for 3D Object Detection in Point Clouds_第7张图片
最后的loss设计:
【论文阅读】【3d目标检测】Density Based Clustering for 3D Object Detection in Point Clouds_第8张图片

我的思考:

cvpr2020的论文,我主要想拿他和votenet进行一个比较。
先写写二者思路的不同:
votenet主要是利用pointnet++的4个sa层进行vote原始点的得到,随后利用mlp得到相对位移来将vote往中心靠拢。而本文则是首先聚类,随后将聚类得到的重心点作为vote原始点,最后进行类似的vote操作。本文相比votenet多了一步提取前景点,而这种无监督的聚类得到的中心显然是要比votenet提出的方法更加容易收敛的。那么如果不去除背景点,直接进行聚类会有什么后果呢,能否在牺牲一定ap的情况下提升速度呢?我感觉这个提取前景点还是有必要的:首先作者只选取了整个点云的一小部分进行处理,大大缩短了计算时间,其次仅仅用前景点做聚类从某种意义上讲又缩短了计算时间。
其次,对于vote的处理:votenet直接将得到的vote进行k聚类,把聚类结果丢进pointnet进行bbox预测。而本文则是使用了一个加强版的pointnet,把角点考虑了进行,生成2d图,随后与pointnet的feature vector进行特征融合从而预测结果。这一点上本文又是强于votenet的。
综上所述,本文可以看做是一个加强版的votenet,主要是在聚类原始点及目标角点上进行了改进。

你可能感兴趣的:(论文阅读,深度学习,计算机视觉,算法)