基于统一BEV表征的多任务多传感器融合技术

作者:young  | 来源: 半杯茶的小酒杯
为了实现多传感器数据的统一表达(unified representation),以前常规的方法:
1)lidar-to-camera: 将激光雷达点云投影到图像上,使用2d cnn算法来完成数据处理。它会造成严重的几何扭曲(如下图a),影响3d object recognition等geometric-oriented任务的效果。
2)camera-to-lidar: 用semantic labels、cnn特征等信息增强点云,然后使用lidar-based detector来预测3d bounding boxes。这种point-level fusion的方法丢失了语义信息,在semantic-oriented任务中表现不佳(如下图b)。
bev fusion method
bevfusion在bev空间实现了统一的多模态特征表达,同时保留几何结构和语义信息。
bevfusion对不同模态的输入采取不同的编码器(encodes)来提取features,这种方法既保留了几何信息,又保留了语义特征信息;然后使用fully-convolutional bev encoder融合多模态的features,缓解不用特征之间的局部偏准(local misalignment);最后添加一些特定head来支持不同的3d场景理解。
bevfusion优化后的bev pooling实现了40x的速度提升;它比camera-only的模型实现了6%的miou提升,比lidar-only的模型实现了13.6%的miou的提升。
camera-to-bev transformation
camera-to-bev的变换首先要解决每个像素的depth问题,文中采用了与论文lss(lift, splat, shoot)的方法来预测每个像素的离散深度分布。
如下图所示,对每个feature pixel沿射线假设d个离散点(每个像素对应d个空间位置),每个离散点的可能性对应一个归一化的概率。
所有的camera特征组合在一起,形成nhwd的camera feature点云,n是camera的个数,hw是每个camera feature map的大小。
沿着x,y两个方向,按照rxr的bev网格,使用bev pooling对camera feature点云进行聚合量化。
最后,沿z轴flatten这些特征。
这个过程中的bev pooling耗时严重,作者提出了precomputation和interval reduction解决这个问题。
precomputation
相机的外参是固定的,内参也是固定的,相机的射线上采样的d个离散点的采样间隔也是已知的,因此camera feature点云的每个点的x和y坐标是固定的,每个点在哪个bev grid中也是不变的。因此可以通过预计算的方式提前计算好,之后直接用即可。
interval reduction
lss使用prefix sum计算每个bev grid的聚合结果。
如上图所示,index是网格的编号,bev pooling的目标是将相同index的value加起来,即将同一个网格内的特征聚合在一起。
pref.sum是一个累加和。1=1,4=1+3,11=1+3+7,10=1+3+7+(-1),…
pref.sum只是一个中间结果,用来辅助计算最终的聚合值。在index变化时,减去前一个index的pref.sum值,得到聚合结果result。
lss的prefix sum可以看做是单线程的计算过程,本文直接使用specialized gpu kernel对多个bev grid独立并发计算,没有计算和存储前缀和的开销,大大加速了计算过程。
优化后的bev pooling将camera-to-bev transformation提升了40倍,latency从500+ms降低到12ms。
fully-convolutional fusion
lidar和camera的bev features可以简单的用elementwise operator(比如concatenation)来做fusion。
由于depth估计的误差,lidar bev features和camera bev features可能会存在spatially misaligned的问题,因此需要convolution-based bev encoder来解决这类问题。
class convfuser(nn.sequential): def __init__(self, in_channels: int, out_channels: int) -> none: self.in_channels = in_channels self.out_channels = out_channels super().__init__( nn.conv2d(sum(in_channels), out_channels, 3, padding=1, bias=false), nn.batchnorm2d(out_channels), nn.relu(true), ) def forward(self, inputs: list[torch.tensor]) -> torch.tensor: return super().forward(torch.cat(inputs, dim=1)) 效果测试
c是camera模态,l是lidar模态,macs用于评估计算量,latency是延时,bevfusion结合了camera模态和lidar模态,达到了sota,并且计算量和latency也比较低。
在nuscenes的bev map segmentation中,bevfusion达到了sota,并且对不同的地图元素的segmentation performance都有提升。
在晴天、雨天、白天、夜晚场景下,bevfusion都有不错的表现。
bevfusion对于大物体、小物体、远处的物体、近处的物体的performance都有提升;并且它在稀疏的lidar波束上仍有不错的表现。


集成英特尔这款200G以太网端口实现了哪些性能突破?
使用 Windows 10 UWP制作一个扎啤机
勃肯特专为食药行业设计了一款IP68防水并联机器人
英国IPU智能处理器的制造商Graphcore E轮融资中筹集了2.22亿美元
LED调光闹钟设计
基于统一BEV表征的多任务多传感器融合技术
万兆光模块的价格相比千兆光模块贵多少?
智能门铃门锁解决方案 | 搭载ESP32-S3的3.5寸IPS彩屏
英国和法国展开紧密合作 推动人工智能发展
一分钟带你深入了解!是谁消耗了我所有的DB
不得不关注的六个LED照明技术细节
全国首条智慧地下电缆线路的监控信息正式接入
助力低碳,深耕低温锡膏技术引领行业工艺发展
有哪些平价的蓝牙耳机?四款适合学生的平价蓝牙耳机推荐
冠层分析仪的作用是什么,它有哪些应用
传感器前级信号处理
UWB室内定位高精度定位应用的宠儿
ADI新数字隔离器封装确保医疗和工业应用安全
基于A2DP框架的近距离无线音频通信研究
联发科公布第三季财报 营收达670亿元并表示对AI的投入已有相当的成果