voxelnet_voxelnet和pointpillars几个值得记录的点

生成target的时候,计算anchor和GT的 IOU有几种方式,因为GT是有偏航角的,重点要把这点处理好;

一是用GT的扩大框去和anchor计算IOU,相对准确,也就是代码里面的 stand_up iou;

二是用旋转 IOU 去计算,这是最准确的一种, rotate iou;

三是用GT的垂直或者水平框与anchor计算IOU,主要根据GT 是和水平的anchor更加接近还是和垂直的 anchor 更加接近,相对准确;

三种方法如图所示:

802ff44a2b935052f42a51853a384eac.png

对于偏航角通常的处理会有这么一个步骤:

rz = -ry - np.pi / 2

加负号是因为在图像坐标系中,kitti数据集的汽车方向是反的,在朝向前方的时候是-90度而不是90度;

再次减去90度是因为相机坐标系 xz 平面和激光坐标系 xy 平面存在90度的角度差,需要逆时针旋转90度;


在 3D 体格化点云数据的过程中,有以下几个点:

3D 体格化的原始数据都是0,根据点的位置放入该3D体格,放入点的格子需要进行标记,最后返回每个位置是否存在点数据的 mask,这个mask后续在卷积的过程中会用到,用它把mask为 0 的位置的特征清除掉;
由于每个体格 35、45 个点的数量限制,对点数据进行了一次随机的丢弃,根据 Waymo 的 mvf 方法报告,这种丢弃是会损失信息和影响精度的;
用 jit 的方法可以对3D 体格化点云数据过程进行加速一倍以上;

体格的大小是怎么影响最后的效果的?

在 mvf和pointpillars 里面,voxel_size 是[0.05, 0.05, 0.1] , 比起voxelnet 的 0.2,0.2,0.4 大大增加了,每个里面的点数量也从35降低到了5,这是一个比较需要通过做实验来确定的参数。


RPN 网络怎么使用的是2D卷积?

最后它实际只在2维的层面进行了RPN,可以理解为把高度维度的信息也合并到了通道信息里面去了;


在进入 3D卷积和 RPN 之前,是对压缩过的体格局部特征(K*T*35)进行处理,因此,进入 3D卷积和 RPN 之前需要进行一次把体格特征重新打散回到 3D 空间的操作,也就是 scatter 操作。

第一步 通过 max pooling : [K, T, 128] > [K, 128]
第二步 通过 K, 4 indices 索引 scatter_nd : [N * 10 * 400 * 352 * 128]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值