爱笑的小姐姐 · 2023年08月22日

Fast-BEV的CUDA落地 | 5.9ms即可实现环视BEV 3D检测落地!代码开源

精确的3D感知系统对于自动驾驶至关重要。经典方法依赖于激光雷达点云提供的精确3D信息。然而,激光雷达传感器通常花费数千美元,阻碍了其在经济型车辆上的应用。纯基于相机的鸟瞰图(BEV)方法最近因其令人印象深刻的3D感知能力和经济的成本而显示出巨大的潜力。
为了从2D图像特征中进行3D感知,nuScenes上最先进的BEV方法要么使用隐式/显式基于深度的投影,要么使用基于Transformer的投影。然而,它们很难部署在车载芯片上:

  1. 具有深度分布预测的方法通常需要多线程CUDA内核来加速推理,这不方便在资源受限或推理库不支持的芯片上操作。
  2. Transformer内的注意力机制需要专用芯片来支持。此外,它们在推理方面很耗时,这使它们无法进行实际部署。

1、省流阅读

本文主要对性能优秀、部署友好、推理速度高的Fast-BEV感知框架的讲解和TensorRT的落地部署

1、TensorRT落地效果

image.png

2、量化前后的精度与速度的对比

image.png

3、部署代码列表

image.png

4、环境的配置

image.png

5、开源地址

TensorRT的代码链接:https://github.com/Mandylove1993/CUDA-FastBEV

2、Fast-BEV的原理要点

image.png

1、Fast-BEV的前世

image.png

2、Fast-BEV的今生

image.png

重中之重——优化 View Transformation

image.png

cuda kernel实现如下:

static __global__ void compute_volum_kernel(int num_valid, const half* camera_feature, const float* valid_index, const int64_t* valid_y, const int64_t* valid_x, int num_camera, int feat_height, int feat_width, half* output_feature) {  
  int tid = cuda_linear_index;  
  if (tid >= num_valid) return;  
  
  for (int icamera = 0; icamera < num_camera; ++icamera) {  
    int index = icamera * num_valid + tid;  
    if(valid_index[index] == 1.0){  
      int64_t x = valid_x[index];  
      int64_t y = valid_y[index];  
      for(int c=0; c< 64; c++){  
        output_feature[c*num_valid+tid] = camera_feature[icamera*64*feat_height*feat_width+c*feat_height*feat_width +feat_width*y+x];  
      }  
    }  
  }  
}  

将为每个相机视图存储一个体素特征,然后将其聚合以生成最终的体素特征(见图5)。因为每个相机只有有限的视角,所以每个体素特征都非常稀疏,例如,只有大约17%的位置是非零的。作者认为这些体素特征的聚集由于其巨大的尺寸而非常昂贵。建议生成密集的体素特征,以避免昂贵的体素聚集。

具体来说,让来自所有相机视图的图像特征投影到相同的体素特征,从而在末端产生一个密集的体素。

image.png

在表1中,分析了4种不同方法的视图转换延迟,发现:

  1. BEVDepth在GPU上实现了最佳延迟,但它需要专用的并行计算支持,因此不适用于CPU。
  2. 与 Baseline相比,所提出的快速BEV在CPU上实现了数量级的加速。

3、参考

[1].Fast-BEV: Towards Real-time On-vehicle Bird’s-Eye View Perception.
[2].https://github.com/Mandylove1993/CUDA-FastBEV.

作者: AI视界引擎
文章来源:AI视界引擎

推荐阅读

更多嵌入式AI干货请关注嵌入式AI专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
18838
内容数
1371
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息