Public Docs
【模型量化】深度学习模型量化 & 量化理论 & 各平台的量化过程 & 硬件加速
【TVM】TI关于TVM的使用测试与分析
【LLM&LVM】大模型开源工程思维导图
【北航卓越工程师】《汽车前沿技术导论:智能驾驶》讲义
【工具链】Yocto使用介绍——使用Yocto创建一个树莓派的系统镜像
【工具链】使用ssh+dialog指令设定服务器指定用户仅容器访问
【推理引擎】一篇关于模型推理的详细对比与学习
【推理引擎】关于TVM中的Schedule优化详解(On going)
【LLM微调】使用litgpt进行私有数据集模型微调的测试总结
【TVM】在TVM Relay中创建一个自定义操作符
【STT+LLM+TTS】如何使用语音转文字模型+大预言模型+语音生成模型完成一个类人的语音交互机器人
【RAG】 通过RAG构建垂直领域的LLM Agent的方法探索
【RAG】GraphRAG精读与测试(On going)
【AI Agent】MetaGPT精读与学习
【AI Base】Ilya Sutskever 27篇必读论文分享清单
【Nvidia】Jetson AGX Orin/ Jetson Orin nano 硬件测试调试内容(On going)
【BI/DI】LLM Using in BI Testing Scenario (On going)
【Nvidia】How to Activate a Camera on Nvidia Platform in Details
【RAS-PI】树莓派驱动开发
【行业咨询阅读】关注实时咨询和分析
【mobileye】2024 Driving AI
【mobileye】SDS_Safety_Architecture
【yolo】yolov8测试
【nvidia】Triton server实践
【alibaba】MNN(on updating)
【OpenAI】Triton(on updating)
【CAIS】关于Compound AI Systems的思考
【Nvidia】关于Cuda+Cudnn+TensorRT推理环境
【BEV】BEVDet在各个平台上的执行效率及优化(On Updating)
【Chip】AI在芯片设计和电路设计中的应用
【Chip】ChiPFormer
【Chip】关于布线的学习
【Chip】MaskPlace论文精读与工程复现优化
【gynasium】强化学习初体验
【Cadence】X AI
【transformer】MinGPT开源工程学习
【中间件】针对apollo 10.0中关于cyberRT性能优化的深度解读和思考
【Robotics】调研了解当前机器人开发者套件(on updating)
【Robotics】ROS CON China 2024 文档技术整理与感想总结(上2024.12.7,中2024.12.8,下场外产品)
【algorithm】关于模型、数据与标注规范的平衡问题
【nvidia】DLA的学习了解与使用
【nvidia】构建nvidia嵌入式平台的交叉编译环境(其他环境平台可借鉴)
【2025AI生成式大会】2025大会个人总结
【Robotics】 Create Quadruped Robot RL FootStep Training Environment In IsaacLab
文档发布于【Feng's Docs】
-
+
首页
【BEV】BEVDet在各个平台上的执行效率及优化(On Updating)
# 1. Brief BEV范式从Tesla的Regnet提出以来作为改变自动驾驶感知方案的经典范式被广为推广。而BEVDet是基于CNN骨干网的经典。下图是整个基于BEVDet的演进。  * 最开始的BEVDet是一个多V纯视觉的方案,核心使用CNN骨干网对不同视角的图像进行编码,LSS进行从图像空间到3D空间的转化,再将整个3D空间映射到BEV视角下,再使用CNN骨干网进行BEV视角的特征编码,之后用一个3D输出头进行解算。  * 由于深度信息不够准确,之后的BEVDet4D核心是将一个显示的深度估计模块融合到了模型架构中,这使得网络可以更精确地估计每个像素的深度信息,解决了 BEVDet 依赖相机内参和图像本身隐含深度信息的不足。在 BEVDepth 中,使用了来自 LiDAR 数据的深度作为监督信号,从而增强了 BEV 特征图的准确性。  * 基于BEVDepth在深度监督上取得的效果,BEVStereo和MatrixVT则是对时许深度估计和深度编码方面的两个进一步的延申。BEVStereo中通过融合连续两针之间的特征信息,将两个时刻得到的最终的BEV特征进行融合,从而对多帧信息的关联进行了体现  而考虑到部署和BEV特征的计算效率MatrixVT则是提出了一种构建非笛卡尔坐标系下的BEV。将BEV特征分别拆解成沿着径向方向和切向方向的两个矩阵,通过两个矩阵的交叉,得到BEV视角下每个BEV像素块的特征。该方案在编码方式上有较大创新,使得运行效率有较大提升,且在部分场景下的性能较好。但是由于非规则编码对BEV尺度选择的要求,和实际场景的表现一般,该方案相较于主分支,没有获得更进一步的表现。   * BEVPoolv2则是对BEVPool计算的部分做了进一步的性能优化。相较于BEVPool,先将已知的Voxel incdex和Frustum Index进行预处理,然后查表得到深度分数,再直接进行乘加运算。 * DAL则是直接与lidar进行进一步的多模态融合。Lidar分支不论是pointpillar还是centerpoint都是天然在bev下,直接与视觉得到的BEV特征进行融合得到稠密的热力图,之后解算出物体。  * 梳理完整个BEVDet基于CNN的演化,本文重点尝试BEVDepth融合时许的纯视觉方案的结果。在Nvidia的多个平台上进行性能分析。并针对部署尝试进行进一步的优化。 * 假设不论是Jetson还是服务器已经完成CUDA+CuDNN+TensorRT的配置。 有问题可以查看该文档进行安装 https://blackmanba.top/doc/89/ # 2. Introduction 相关测试通过c++版本的tensorRT实现在nv系列平台下的bevdepth+longterm的实现。整个过程使用附件1的开源工程,同时针对部分环节进行进一步优化。 # 2.1. 模型ONNX导出  * 整个BEV的Backbone可以分为3个部分,第一部分为image_encoder及通过cnn骨干网如ResNet50,将多路图像数据转换为feature。这部分能够在计算阶段进行优化的点有如下几个: * 这部分一方面是如果芯片支持的情况下,可以将多路图像数据并行执行,核心性能耗时来源于最大能支持的处理路数 * 第二因为本身就是cnn,骨干可以通过CONV+BN+激活的合并进行算子融合。 * image stage还需要各个相机的内参,外参等5个输入本身就是定值,可以事先做融合计算,减少推理时的计算开销。(如果不使用深度信息当然没有这部分,但是性能表现较差) * 第二部分是BEVPool这部分核心是视锥和深度的计算融合,BEVPoolv2版本相较于第一版性能有数量级提升 * 第三部分为bev_stage,实际上是对BEV特征图进行cnn。这部分的优化逻辑与第一部分相同 * 最后基于6个输出头进行后处理,这部分可以放到cpu上运行 * ==如果是nvidia平台,可以不用对模型进行拆分而直接使用TensorRT-Plugins,AlignBEV_plugin, Preprocess_plugin, BEVPool_plugin, GatherBEV_plugin== # 2.2. TensorRT模型优化 将多个onnx模型通过tensorRT的默认指令工具trtexec进行优化,将最终结果导出为engine文件,这一步比较简单 # 2.3. CPP部署 # Annexe 1. * https://github.com/LCH1238/bevdet-tensorrt-cpp # Annexe 2. 在进行模型pth转onnx时,pip install 安装相关库及对应版本是个问题,版本问题严格遵循requirements种的说明,如果遇到错误如:`buntu #error You need C++17 to compile PyTorch` 可以参考`pip install --no-cache-dir git+https://github.com/thomas-bouvier/horovod.git@compile-cpp17` # Annexe 3. [【附件】data_infos.zip](/media/attachment/2024/11/data_infos.zip) data_info.zip文件是一个用来测试bevdet的连续帧数据包,是从nuScenes的训练数据集中抽取的。为了方便索引原始数据。对数据中的信息进行了检索: | 时间| 所在训练集index(v1.0-tran XX.tar.gz)| |:------:| :--: | |n015-2018-08-02-17-16-37+0800| 04| |n015-2018-07-18-11-41-49+0800| 01| |n015-2018-07-24-10-42-41+0800| 01| |n008-2018-08-01-15-16-36-0400| 01| |n015-2018-07-16-11-49-16+0800| 03| |n015-2018-07-11-11-54-16+0800| 03| |n008-2018-08-22-15-53-49-0400| 04| |n015-2018-08-02-17-16-37+0800| 04| |n008-2018-08-30-10-33-52-0400| 05| |n008-2018-08-28-16-43-51-0400| 06| |n008-2018-08-31-11-37-23-0400| 06| |n008-2018-09-18-14-35-12-0400| 06| |n008-2018-08-30-15-31-50-0400| 08| |n015-2018-10-02-10-50-40+0800| 08| |n008-2018-09-18-15-12-01-0400| 09| |n015-2018-10-08-15-36-50+0800| 09| |n015-2018-10-08-15-44-23+0800| 09| |n015-2018-09-25-13-17-43+0800| 09| |n015-2018-11-21-19-21-35+0800| 10|
dingfeng
2024年11月5日 10:54
898
0 条评论
转发文档
收藏文档
上一篇
下一篇
评论
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码