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嵌入式平台的交叉编译环境(其他环境平台可借鉴)
文档发布于【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
520
0 条评论
转发文档
收藏文档
上一篇
下一篇
评论
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码