这个操作在 LSS 中叫做 Voxel Pooling,在 BEVDet 以及 BEVFusion 中叫做 BEVPool。先大致说下原理:首先,预设 BEV 空间为 H*W*L 个 Voxel。然后对于每个 Voxel,找之前 2D -> 3D 时 lift 的 d*h*w 个点中,属于这个 voxel 的点的特征向量全部加起来,作为这个 voxel 的特征向量。因为 voxel 是规则的,所...
Splat操作的第一步是构建BEV空间下的特征,这个过程在voxel_pooling函数中实现。该函数有两个输入,一个自车坐标系下的视锥点云坐标点geom,维度为(1,6,41,8,22,3);另一个是camencode模块输出的图像特征点云x,维度为(1,6,41,8,22,64)。voxel_pooling函数的处理过程如下: 将x的维度变换为(1 * 6 * 41 ...
Splat操作的第一步是构建BEV空间下的特征,这个过程在voxel_pooling函数中实现。该函数有两个输入,一个自车坐标系下的视锥点云坐标点geom,维度为(1,6,41,8,22,3);另一个是camencode模块输出的图像特征点云x,维度为(1,6,41,8,22,64)。voxel_pooling函数的处理过程如下: 将x的维度变换为(1 * 6 * 41 ...
def voxel_pooling(self, geom_feats, x): ... # flatten x x = x.reshape(Nprime, C) # flatten indices geom_feats = ((geom_feats - (self.bx - self.dx/2.)) / self.dx).long() geom_feats = geom_feats.view(Nprime, 3) ... # filter out points that are outside box kept = ...
我们在提供的源代码中使用了每个voxel使用了10个点,如果想要提升精度可以考虑增加每个voxel的有效点。 精度优化 多任务模型的精度优化 参考BEVerse模型对多任务根据不同粒度进行细化,在分割头做解码之前,将BEV feature的分辨率增大,map size为[200,400],实现上由grid_sample完成。 浮点模型精度的优化 在浮点模型的...
Voxel Pooling 代码: defvoxel_pooling(self, geom_feats, x):# geom_feats;(B x N x D x H x W x 3):在ego坐标系下的坐标点;# x;(B x N x D x fH x fW x C):图像点云特征B, N, D, H, W, C = x.shape Nprime = B*N*D*H*W# 将特征点云展平,一共有 B*N*D*H*W 个...
Voxel Pooling 总结 前言 目前在自动驾驶领域,比较火的一类研究方向是基于采集到的环视图像信息,去构建BEV视角下的特征完成自动驾驶感知的相关任务,所以如何准确的完成从相机视角向BEV视角下的转变就变得尤为重要。 目前比较主流的方法大体分为两类: 1)显式估计图像的深度信息,完成BEV视角的构建,也被称为自上而下的...
自底向上方法的另一重要论文——BEVDepth——在保持LSS框架的基础上,重点优化深度估计的准确性,并引入高效计算体素池化(Voxel Pooling)方法,以及多帧融合(Multi-frame Fusion),显著提升了BEVDepth的性能。据2022年9月18日的记录,BEVDepth在nuScenes Camera-only Detection Task中位列第四,其纯版本...
使用Voxel Pooling结合图像特征点云与ego坐标系下的点,构建BEV特征。此过程中,首先准备Voxel Pooling前工作,然后通过cumsum_trick完成运算,图示展示区间索引与点特征关系。BEV特征通过ResNet-18进行多尺度特征提取,输出融合后应用于BEV网格上的语义分割。算法最终通过基于像素的交叉熵损失,与binimgs真值...
LSS是英伟达在ECCV2020上发表的文章《Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D》中提出的一个BEV感知算法,后续很多BEV感知算法如CaDDN