25FPS!全网首发 | 英伟达开放BEVFusion部署源代码,边缘端实时运行!!!

2023-05-19 20:34:39·  来源:集智书童  
 

英伟达开源BEVFusion边缘部署高达25FPS!

引言:

众所周知,雷达与相机的融合方案由于稀疏卷积的原因导致一直难以落地推广。而没有使用稀疏卷积的方案精度通常会差10-30%左右,并且目前的融合方案在Orin上的性能非常差(例如BEVFusion在3090Ti上只有8.6FPS),这严重地制约了自动驾驶的落地表现。英伟达刚刚发布了部署BEVFusion的方案,以惊人的25FPS同时保持67.66的高精度mAP运行在Orin上,这对于雷达相机融合的感知落地来说,这是一项十分令人兴奋的工作!这意味着雷达感知的精度和速度将会得到大幅度的提升,并且轻易的部署!

代码发布在 https://github.com/NVIDIA-AI-IOT/Lidar_AI_Solution

一、仓库介绍

图片
  • 该仓库主要提供了3个模型(BEVFusion、CenterPoint、PointPillars)和5个libraries(sparse conv, quantization solution, cuPCL, cuOSD, YUVToRGB)

图片
  • 这些模块,通过下面的方式组织起来

图片
  • 下面是一个BEVFusion的执行效果

图片
  • 模型的精度和速度如下表(nuScenes验证集的平均速度)

图片
  • 可以看到,模型在PTQ量化后只有0.3%mAP的损失,是相当不错的

  • 在保持高精度的同时还保持了高的推理速度,这对自动驾驶来说非常友好

  • 仓库提供了模块化的实现,对于按照要求修改会比较友好

图片

二、稀疏卷积(Sparse Convolution)

  • 仓库还提供了稀疏卷积的解决方案,他的实现是独立于tensorRT之外的,纯cuda核函数调用TensorCore实现的一个库

  • 它通过onnx文件加载模型并进行推理加速,轻量且高效

  • 提供了FP16和INT8推理的支持。支持子流形和空间稀疏卷积

  • 同时还提供了CenterPoint和BEVFusion的lidar导出以及PTQ/QAT保证速度和精度的解决方案

图片
  • 详细的精度指标如下

图片
  • 下面是在nuScenes上的耗时统计,稳定性非常好

图片

三、BEVfusion介绍

图片

BEVfusion框架图BEVFusion是一种用于自动驾驶系统的先进技术。它代表着鸟瞰融合(Bird's Eye View Fusion),是一个多任务、多传感器融合框架,极大地提高了自动驾驶汽车的性能[2]。

四、落地部署的挑战

1. ONNX导出复杂

BEVFusion是一种涉及到SparseConv(稀疏卷积)层和自定义CUDA操作(如BEV池化)等复杂特性的模型[4]。这些特性对于转换到 ONNX,以及后续在TensorRT上部署都构成了难题。

我们简单地总结了一下难以转ONNX的主要原因:

  • (1)自定义CUDA操作:BEVFusion使用的自定义CUDA操作在ONNX模型导出中并不被原生支持[5]。这意味着这些操作需要手动在ONNX中注册为自定义操作,这是一项具有挑战性的任务。

  • (2)SparseConv层:在BEVFusion中使用的SparseConv层并不被ONNX原生支持[6]。这使得转换过程变得复杂,因为需要手动处理这些层。

2.Plugin和BEVpooling效率低下

制约BEVfusion广泛落地的另一个原因就是其Plugin和BEVpooling的效率不够高。BEVFusion中的BEVPool使用CUDA来加速,但它仍然需要计算、存储和预处理视锥特征(frustum feature),这在内存和计算上都十分密集[7]。

尽管BEVfusion在框架设计上已经进行了优化,相比于以前的研究,以更高的精度和降低1.9倍[8]的计算成本在nuscenes上设立了新的基准。但是,对于自动驾驶这种高速场景来说,我们应该追求更高的性能,以确保安全驾驶。因此,对某些操作的计算强度进行进一步优化是非常有价值的。

3.项目工程相对复杂

比起普通的单传感器感知,BEVfusion工程也相对复杂,主要体现在下面几个方面:

  • (1)多任务多传感器融合框架:BEVFusion被设计为一个高效且通用的多任务多传感器融合框架。它在共享的鸟瞰视图(BEV)表示空间中统一多模态特征,这既保留了几何信息也保留了语义信息[9]。这种任务和方法的复杂性直接反映在仓库的结构和内容上。

  • (2)坐标系统的修改和体素化(Coordinate system modification and voxelization):BEVFusion项目对其实现进行了重大更改,例如从zyx体素化切换到xyz体素化。在一些头部,xy BEV坐标与先前的实现相比进行了转置。这可能会增加仓库的复杂性,尤其是对熟悉先前版本的人来说[10]。

4. 总结

尽管BEVFusion确实提供了一种新颖且有效的方式来处理多传感器融合任务,但是在实际部署过程中仍存在以上的挑战。包括ONNX导出复杂、插件和BEVpooling效率低下以及项目工程相对复杂等问题。这些问题需要我们在实践中寻找解决方案。而这,正是英伟达提供的方案致力于解决的,新的部署方案在保持67.66的高精度mAP的同时,实现了在Orin上以惊人的25FPS运行,这对雷达和相机的融合感知落地来说无疑是一次重大突破。这项工作不仅证明了BEVFusion的实用性,还展示了其潜力,即在高精度和高效率之间找到平衡,以满足自动驾驶等高速场景的需求。

reference

[1] "Aug 16, 2022 ·  Multi-sensor fusion is essential for an accurate and reliable autonomous driving system URL: https://github.com/mit-han-lab/bevfusion

[2] "In this paper, we break this deeply-rooted convention with BEVFusion URL: https://bevfusion.mit.edu/

[3] "IEI-BEVFusion++. This method is built based on the BEVFusion URL: https://github.com/IEI-AP/IEI-BEVFusion_plus_plus

[4] "Jul 7, 2022 ·  It might be hard to export BEVFusion to onnx currently" URL: https://github.com/mit-han-lab/bevfusion/issues/60

[5] "Jun 4, 2022 ·  It will be a bit hard to export the current model to onNX because of the existence of custom CUDA ops URL: https://github.com/mit-han-lab/bevfusion/issues/18

[6] "Nov 29, 2022 ·  onnx export might be very challenging since sparse convolution operators are not natively supported URL: https://github.com/mit-han-lab/bevfusion/issues/26

[7] "of cumulative sum, BEVPool in BEVFusion URL: https://arxiv.org/pdf/2211.17111v1.pdf

[8] "May 26, 2022 ·  BEVFusion is fundamentally URL: https://paperswithcode.com/paper/bevfusion-multi-task-multi-sensor-fusion-with

[9] "Aug 16, 2022 ·  we break this deeply-rooted convention with BEVFusion URL: https://github.com/mit-han-lab/bevfusion

[10] "Oct 4, 2022 ·  The most important change other than the coordinate system URL: https://github.com/mit-han-lab/bevfusion/issues/163

标签:#英伟达 #稀疏卷积 #BEVFusion #自动驾驶 #技术突破

注:以上内容为英伟达最新的研究成果,具体技术细节和应用可能会有更深入的探索和改进。

来源:集智书童 

分享到:
 
反对 0 举报 0 收藏 0 评论 0
沪ICP备11026620号