pointrcnn运行_PointRCNN阅读笔记

1、论文提出的背景

相比2d 检测生成proposal,在3d上生成proposal其实可以以更加富有效率的方式进行,因为2d图像信息是稠密的而3d点云信息则更为稀疏(一般一帧点云里有点的空间只占目标空间的3%),在这样的背景下,类似于AVOD那样模仿2d检测在BEV上每个voxel都去放anchor的方法其实并不高效。本文提出了一种bottom-up生成proposal的方法(思路类似于2d图像上的selective search),值得一提的是,在2d上做ss并不高效(所以被rpn替代了),但是在3d上因为信息的稀疏,这样的方法反倒值得一试。论文的名字,包括论文的内容,给我的感觉是想做一篇3d上的rpn。

2、本文提出的方法:

1)stage-1

a.Point feature模块

包括encode和decode两步,实际上就是pointnet++里所做的工作;

b.前景分割模块

对point feature模块的点进行2分类(前景or背景),label的来源来自3d gt框(gt框内的点为前景,否则为背景),由于前景的点远远少于背景的点,为了避免训练的均衡问题,采用focal loss。

c.bin-based 3d box generation模块

本文的重点模块了,虽然文章说前景分割模块和bin-based 3d box generation模块是同步进行的,但是bin-based 3d box generation模块只对前景的点进行regression(对每个点都进行预测,其实没什么问题,一个原因是经过pointnet++之后,已经encode了背景信息,第二个是前景的点很少),regression的目标是(x,y,z,w,h,l,theta),每个点regression的目标gt是该点所属于的3d框的(x,y,z,w,h,l,theta)。文章没有直接用L1或者L2 loss去回归,而是采用了bin-based的方法,先粗分每个点所属的bin,然后在bin内部做offset的regression,看到过不少论文用这样的方法,corse-to-fine的方式理论上会更容易优化一点,所以效果也更好。产生了一堆3d proposal之后,基于BEV图做NMS,输出300个proposal。

2)stage-2

a.region pooling模块

这个名字就有点对标2d检测的roi pooling的意思了,实际上这个模块不做任何的pooling,不仅没有任何的信息损失,还通过扩大3d框的方法加入了更多的点,每个点的特征包括坐标,激光反射值r,0/1背景分类值,还有stage-1.a得到的特征(语义特征)。这一堆点的特征构成了一个roi pooling的特征

b.坐标转化模块

把每个3d proposal的坐标进行转换,转换到以3d center为原点的局部坐标系(数值量纲上的变化,还是和优化有关);但是转化到局部信息之后会丢失深度信息(障碍物距离主车的dist),所以需要预先编码进去;

c.特征编码模块

由两部分组成,第一个部分是spatial feature,顾名思义,就是空间的结构信息,包括坐标,激光反射值r,0/1背景分类值,还有深度信息,把这些信息concate在一起一顿MLP之后,再和语义特征concate在一起,得到最后每个点的特征

d.box refine模块

基于stage-2.c的输出,送入pointnet++之后,回归得到局部坐标系下的(x,y,z,w,h,l,theta),在计算loss项时只考虑IOU>0.55的proposal,loss项的计算依然沿用stage-1.c里的corse-to-fine的方法。

3、思考

感觉有深深深深faster-rcnn的烙印,各个模块都能看到faster-rcnn的影响。另外,segmenatation的结果对proposal生成影响很大,在handle一些边界case时导致的欠分割和过分割的问题上,不知道文章的方法还能不能解决得比较好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值