企业网站运营外包费用,新增备案 网站名字,易企秀在线制作免费,泉州网站设计制作目录 Lidar AI Solution环境配置前言1. Lidar AI Solution1.1 Pipeline overview1.2 GetStart 2. CUDA-BEVFusion2.1 3D目标检测(nuScenes验证集)2.2 演示2.3 模型和数据2.4 前置条件2.5 快速开始推理2.5.1 下载模型和数据到CUDA-BEVFusion文件夹2.5.2 配置environment.sh2.5.3… 目录 Lidar AI Solution环境配置前言1. Lidar AI Solution1.1 Pipeline overview1.2 GetStart 2. CUDA-BEVFusion2.1 3D目标检测(nuScenes验证集)2.2 演示2.3 模型和数据2.4 前置条件2.5 快速开始推理2.5.1 下载模型和数据到CUDA-BEVFusion文件夹2.5.2 配置environment.sh2.5.3 编译运行 2.6 可能遇到的问题2.6.1 问题1/usr/bin/ldcannot find -lspconv2.6.2 问题2/libspconv.sofile format not recognized 3. CUDA-CenterPoint3.1 模型和数据3.2 前置条件3.3 环境3.4 编译运行 4. CUDA-PointPillars4.1 模型和数据4.2 前置条件4.3 环境4.4 编译运行 结语下载链接参考 Lidar AI Solution环境配置
前言 开源项目 Lidar AI Solution 的环境配置记录自己环境配置过程仅供自己参考只进行最最最基本的运行不涉及任何原理分析(主要是不会) 博主环境如下 系统Ubuntu20.04 显卡RTX3060 显卡驱动510.108.03 CUDA11.6 cuDNN8.4.0 TensorRT8.4.1 整个环境配置的重点和难点在于整个项目的完整拉取 以下内容均 Copy 自 Lidar AI Solutin 的 README 文档请大家熟读熟读熟读文档 1. Lidar AI Solution Lidar AI Solution 项目为自动驾驶 3D-Lidar 提供了一个高性能的解决方案在加速 sparse convolution/CenterPoint/BEVFusion/OSD/Conversion 方面做得非常好 图1-1 title 1.1 Pipeline overview 图1-2 pipeline.png 1.2 GetStart
sudo apt-get install git-lfs
git clone --recursive https://github.com/NVIDIA-AI-IOT/Lidar_AI_Solution
cd Lidar_AI_Solution一定一定一定要按照上述方法完整拉取整个项目(PS:完整项目在 Linux 下大概有 365M 的大小)不要去直接点击 Code DownZIP 下载也不要直接 git clone 下载因为该项目依赖于其他项目因此加上 --recursive 指令是为了循环克隆子项目。
注意项目的完整拉取非常非常非常重要后续的问题基本上都是因为没有完整的拉取整个项目所导致的
接下来我们就来聊聊如何完整的拉取整个 repo
首先如果在 Linux 下执行上述指令你会发现由于访问的是外网会非常缓慢当然你如果有一个好的代理应该是没有问题的博主之前下了一晚上才下完但是由于网络经常断开因此也不能确保整个项目是否完整。当然网上也提供了一些快速高效下载方法博主也没去折腾了感兴趣的可以看看 git clone --recursive快速高效下载方法
由于在 Linux 上没有找到合适的代理也不愿去折腾高速下载方法因此博主决定在 Windows 下去拉取整个 repo (主要是因为 Windows 下有代理)
在此之前你需要在 Windows 下面安装 git 和 git lfs比较简单这里提供博主主要参考的文章
git 安装Windows系统Git安装教程git 下载地址https://git-scm.com/downloadsgit lfs 安装Windows安装Git LFSgit lfs 下载地址https://github.com/git-lfs/git-lfs/releases/tag/v3.3.0
将 git 和 git lfs 安装完成后就可以在 cmd 窗口正常执行 git 指令了指令如下(PS一定要记得开代理)
sudo apt-get install git-lfs
git clone --recursive https://github.com/NVIDIA-AI-IOT/Lidar_AI_Solution完整的项目拉取如下图所示 图1-3 LiDAR-AI-Solution完整项目拉取 下载完成以后把整个项目拷贝到 Linux 进行后续操作就行值得注意的是从 Windows 拉取的代码放在 Linux 下会有一个小小的 bug这个我们之后也会提到。
这里博主也提供下博主自己拉取的整个 repo感兴趣的可以自行下载下载链接 Baidu Drive (注意该代码下载于 2023/5/25 日若有改动请参考最新)
至此整个项目文件就准备好了对于每个任务可以查看对应子文件夹下的 README 文档
2. CUDA-BEVFusion Copy 自 CUDA-BEVFusion 的 README.md 文档 这个 repo 包含使用 CUDA TensorRT 进行 BEVFusion 推理的源码和模型 图2-1 cuda-bevfusion推理 2.1 3D目标检测(nuScenes验证集)
对于所有模型我们使用 BEVFusion-Base 配置 相机分辨率为 256x701 对于相机的 backbone 我们选择 SwinTiny 和 ResNet50
ModelFrameworkPrecisionmAPNDSFPSSwin-Tiny BEVFusion-BasePytorchFP32FP1668.5271.388.4(on RTX3090)ResNet50PytorchFP32FP1667.9370.97-ResNet50TensorRTFP1667.8970.9818(on ORIN)ResNet50-PTQTensorRTFP16INT867.6670.8125(on ORIN)
注我们在 ORIN 测试的时间是基于 nuScenes 6019 验证集样本的平均值 因此激光雷达点的数量是影响 FPS 的主要原因请参考 3DSparseConvolution 的 README 查看更多细节
2.2 演示 图2-2 cuda-bevfusion演示 2.3 模型和数据
为了快速体验我们提供了 nuScenes 的样例数据你可以从 Baidu Drive 下载它包含如下内容 6 视角的相机图像camera/lidar/ego 的转换矩阵用于 bevfusion-pytorch 数据的 example-data.pth允许导出 onnx 不用依赖于完整的数据集 所有的模型都可以从 Baidu Drive 下载它包含如下内容 swin-tiny onnx modelsresnet50 onnx 和对应的 pytorch modelsresnet50 int8 onnx 和对应的 PTQ models
2.4 前置条件
为了构建 bevfusion我们需要以依赖以下库
CUDA 11.0CUDNN 8.2TensorRT 8.5.0libprotobuf-dev 3.6.1Compute Capability sm_80Python 3.6
上面性能表中的数据是我们在 Nvidia Orin 平台上使用 TensorRT-8.6、cuda-11.4 以及 cudnn8.6 得到的
关于 CUDA、CUDNN、TensorRT 的安装可以参考 Ubuntu20.04部署YOLOv5 或者 Ubuntu20.04软件安装大全 这里不再赘述
你可能会发现博主的 TensorRT 版本似乎并不满足要求是的但博主没去安装高版本的 TensorRT先将就用吧后续推理也就提示了一个 API 的警告并没有太大的错误。软件版本不要求完全一致但是需要尽可能的对应
2.5 快速开始推理
注在安装完 apt install git-lfs 以后请使用 git clone --recursive 来拉取整个项目确保依赖的完整性
2.5.1 下载模型和数据到CUDA-BEVFusion文件夹
从 Baidu Drive 下载 model.zip从 Baidu Drive 下载 nuScenes-example-data.zip
# 下载模型和数据到 CUDA-BEVFusion 文件夹
cd CUDA-BEVFusion# 解压模型和数据压缩文件
unzip model.zip
unzip nuScenes-example-data.zip# 下面是解压后整个文件夹的结构
CUDA-BEVFusion
|-- example-data|-- 0-FRONT.jpg|-- 1-FRONT_RIGHT.jpg|-- ...|-- camera_intrinsics.tensor|-- ...|-- example-data.pth-- points.tensor
|-- src
|-- qat
|-- model|-- resnet50int8| |-- bevfusion_ptq.pth| |-- camera.backbone.onnx| |-- camera.vtransform.onnx| |-- default.yaml| |-- fuser.onnx| |-- head.bbox.onnx| -- lidar.backbone.xyz.onnx|-- resnet50-- swint
|-- bevfusion
-- tool2.5.2 配置environment.sh
好在正式配置之前我们需要解决一个小bug也就是之前提到过的当你在 Windows 下面拉取代码放到 Linux 上面时会导致执行 shell 脚本时报错如下图所示 图2-3 执行shell脚本出错 原因是 Windows 和 Linux 的 .sh 脚本文件格式不同如果在脚本中有空行脚本是在 Windows 下进行编辑之后传到 Linux 上去执行的话就会出现这个问题
Windows 下的换行符是\r\n而 Linux 下的换行符是 \n没有识别/r所以会导致上述错误这个属于脚本编码的问题
解决办法是在对应脚本文件目录下执行以下命令即可
vim enviroment.sh
:set ffunix
:wq上述通过 vim 编辑器打开脚本文件后设置格式为 Linux 格式并保存退出
参考自 Linux下执行Shell脚本出现$‘\r‘: command not found解决方法
因此如果你的项目是从 Windows 复制到 Linux 下的话可能存在上述问题请将 tools 文件夹下的所有脚本文件均按照上述方法修改为 Linux 格式请确保 tools 下所有 .sh 文件格式均修改完成
OK 解决了上述小 bug 之后按照 README.md 就可以正常执行推理了
1. 安装 python 依赖库
sudo apt install libprotobuf-dev
pip install onnx如果需要使用 Python 推理的话需要安装
这里有些问题需要和大家讨论下我看 Issues 里面有人提问说推理遇到了一些问题杜老师是说 sudo apt install libprotobuf-dev3.6.1 但是我安装时说找不到对应版本如下图所示 图2-4 libprotobuf-dev版本找不到 我们可以使用 apt-cache show package 查找指定包的详情参考自 【Linux】使用apt-get查询并安装指定版本的软件
sudo apt update
sudo apt-cache show package图2-5 查找libprotobuf-dev 可以看到查找有多个版 3.6.1.3-2ubuntu5.2、3.6.1.3-2ubuntu5博主随便安装了一个指令如下
sudo apt install libprotobuf-dev3.6.1.3-2ubuntu5.2但是在后续执行 Python 推理的时候出现如下警告最终能编译完成但是执行的时候直接 Segmentation fault 崩溃了 图2-6 python推理时出错 从编译警告不难看出protobuf编译的版本是 3.20.3 与要求的版本 3.6.1 并不匹配博主之前有安装过 protobuf而 CMakeLists.txt 中是通过 find_pakcage 去找 protobuf 的找到了之前下载的 3.20.3 版本还有一些其它的警告也是与 protobuf 相关的因此可能需要自己手动指定下 protobuf 的头文件和库文件路径让它正常匹配到所对应的 3.6.1 版本而不是其它的版本。
因此博主最终也没解决 Python 推理等有时间再去折腾吧C 的推理一切正常下面我们继续。
2. 在 environments.sh 文件中修改 TensorRT/CUDA/CUDNN/BEVFusion 变量
# 修改为你当前使用的路径
export TensorRT_Lib/path/to/TensorRT/lib
export TensorRT_Inc/path/to/TensorRT/include
export TensorRT_Bin/path/to/TensorRT/binexport CUDA_Lib/path/to/cuda/lib64
export CUDA_Inc/path/to/cuda/include
export CUDA_Bin/path/to/cuda/bin
export CUDA_HOME/path/to/cudaexport CUDNN_Lib/path/to/cudnn/lib# resnet50/resnet50int8/swint
export DEBUG_MODELresnet50int8# fp16/int8
export DEBUG_PRECISIONint8
export DEBUG_DATAexample-data
export USE_PythonOFF博主修改后如下所示
export TensorRT_Lib/opt/TensorRT-8.4.1.5/lib
export TensorRT_Inc/opt/TensorRT-8.4.1.5/include
export TensorRT_Bin/opt/TensorRT-8.4.1.5/binexport CUDA_Lib/usr/local/cuda-11.6/lib64
export CUDA_Inc/usr/local/cuda-11.6/include
export CUDA_Bin/usr/local/cuda-11.6/bin
export CUDA_HOME/usr/local/cuda-11.6/export CUDNN_Lib/usr/local/cuda-11.6/lib64# resnet50/resnet50int8/swint
export DEBUG_MODELresnet50int8# fp16/int8
export DEBUG_PRECISIONint8
export DEBUG_DATAexample-data
export USE_PythonOFF3.在终端上执行 enviroment.sh 文件
bash tool/enviroment.sh博主执行完之后如下图所示 图2-7 执行enviroment.sh文件 2.5.3 编译运行
1.利用 tensorRT 构建模型
bash tool/build_trt_engine.sh博主执行完之后如下图所示 图2-8 执行build_trt_engine.sh文件 2.编译并运行程序
bash tool/run.sh博主执行完之后如下图所示 图2-9-1 执行run.sh文件 图2-9-2 执行run文件 图2-9-3 执行run文件 图2-9-4 执行run文件 build/cuda-bevfusion.jpg 如下图所示 图2-10 build/cuda-bevfusion.jpg 至此CUDA-BEVFusion 的环境配置到这里就结束了
后续的 onnx 和 PTQ 模型导出的细节、Python推理、进一步的性能提升相关内容需要大家自行去了解了
2.6 可能遇到的问题
2.6.1 问题1/usr/bin/ldcannot find -lspconv 分析没有找到稀疏卷积的库文件其库文件位于 libraries/3DSparseConvolution/libspconv 中如果你没有完整拉取整个项目会发现该文件夹下的 lib 文件为空导致无法找到库文件 解决办法完整拉取整个项目 图2-11 问题1 2.6.2 问题2/libspconv.sofile format not recognized 分析这个问题在 Issues 17 有人遇到博主遇到这个问题是因为在问题 1 中的 libspconv.so 找不到时利用手动添加的方式手动下载库文件导致的 解决办法完整拉取整个项目 图2-12 问题2 3. CUDA-CenterPoint Copy 自 CUDA-CenterPoint 的 README.md 文档 这个 repo 包含使用 CUDA TensorRT 进行 CenterPoint 推理的源码和模型 整个推理分为以下几个阶段 Voxelization with CUDA kernel3D backbone with NV spconv-scnRPN CenterHead with TensorRTDecode NMS with CUDA kernel 3.1 模型和数据
这个 demo 使用 nuScenes Dataset 中的激光雷达数据onnx 模型可以通过给定的脚本从下面给出的 checkpoint 中导出
DatasetCheckpointConfignuScenesepoch_20.pthnusc_centerpoint_voxelnet_0075voxel_fix_bn_z
3.2 前置条件
为了构建 centerpoint 推理需要 CUDA、TesorRT、libspconv 库注意 libspconv 在 Tesla 平台只支持 sm_80 sm_86在嵌入式平台只支持 sm_87
3.3 环境
Tesla 平台 Ubuntu20.04 x86_64 with Nvidia Tesla A30 CUDA 11.4 cuDNN 8.4.1 TensorRT 8.4.12.5
嵌入式平台 Nvidia Drive Orin 6.0.3.0 CUDA 11.4 cuDNN 8.3.3 TensorRT 8.4.10.4
3.4 编译运行
在编译运行之前还需要做几件事情
首先如果你的项目是从 Windows 下面复制到 Linux 下面的请按照之前 CUDA-BEVFusion 所讲将 tool 文件夹下的所有 .sh 脚本文件格式均修改为 Linux 格式具体方法请参照 2.5.2 小节这里不再赘述
然后你需要修改 CMakeLists.txt 中的内容具体修改如下
# 30行 修改tensorRT路径
set(TENSORRT_ROOT /opt/TensorRT-8.4.1.5)# 31行 修改CUDA路径
set(CUDA_TOOLKIT_ROOT_DIR /usr/local/cuda-11.6)最后在 data 文件夹下创建一个 prediction 文件夹用于保存预测结果信息
在测试数据上运行检测过程指令如下
cd CUDA-CenterPoint
bash tool/build.trt.sh
mkdir -p build cd build
cmake .. make -j
./centerpoint ../data/test/ --verbose图3-1 CUDA-CenterPoint模型构建过程 图3-2 CUDA-CenterPoint编译过程 图3-3 CUDA-CenterPoint运行过程 至此CUDA-CenterPoint 的环境配置到这里就结束了
后续的可视化推理结果以及推理结果评估博主没有尝试感兴趣的可以自己看看 图3-4 CUDA-CenterPoint结果可视化 4. CUDA-PointPillars Copy 自 CUDA-PointPillars 的 README.md 文档 这个 repo 包含使用 TensorRT 进行 pointpillars 推理的源码和模型模型由 OpenPCDet 创建由 onnx_graphsurgeon 修改 整个推理分为 4 个阶段 Convert points cloud into 4-channle voxelsExtend 4-channel voxels to 10-channel voxel featuresRun TensorRT engine to get 3D-detection raw dataParse bounding box, class type and direction 4.1 模型和数据
这个 demo 使用 KITTI 数据集中的激光雷达数据onnx 文件可以通过 tool 文件夹下的脚本从预训练模型中导出
4.2 前置条件
为了构建 pointpillars 推理需要 TensorRT、CUDA 以及在 TensorRT 中的 PillarScatter layer 插件
4.3 环境
Nvidia Jetson Xavier/Orin Jetpack 5.0CUDA 11.4 cuDNN 8.3.2 TensorRT 8.4.0
4.4 编译运行
由于我们拉取的 Lidar_AI_Solution 项目已经包含了 CUDA-PointPillars 因此不需要单独去拉取该 repo 了
在正式编译运行之前还需要修改下对应的 CMakeLists.txt 文件修改内容如下
# 61行 修改TensorRT头文件路径
set(TENSORRT_INCLUDE_DIRS /opt/TensorRT-8.4.1.5/include)# 62行 修改TensorRT库文件路径
set(TENSORRT_LIBRARY_DIRS /opt/TensorRT-8.4.1.5/lib)修改完成后执行如下指令完成编译
mkdir build cd build
cmake .. make -j$(nproc)
./demo${nproc} 会显示当前进程可用的CPU数量博主的数量为12上述指令等价于
cmake .. make -j12
编译过程如下图所示 图4-1 CUDA-PointPillars编译过程 图4-2 CUDA-PointPillars运行过程 至此CUDA-PointPillars 的环境配置到这里就结束了
结语 这篇博客主要介绍了 Lidar_AI_Solution 的环境配置也就是将 README 文档重新 Copy 了一次没有涉及到任何的原理分析大家在环境配置过程中一定要熟读 README 文档不要忘记安装对应的库和包除此之外可以到 Issues 里面多看看别人遇到的一些问题可能你也遇到过。 该 repo 中涉及到了大量的知识包括剪枝、量化、部署、BEV感知、Lidar点云、3D检测…集大成者感觉把前面所学的剪枝、量化、自动驾驶CV课程全都串起来了呀如果大家对这个 repo 感兴趣的话可以自行研究。 最后如果大家觉得这个 repo 对你有帮助的话不妨帮忙点个 ⭐️ 支持一波 下载链接 git 下载地址 git lfs 下载地址 Lidar AI Solution 完整项目下载地址 CUDA-BEVFuison 数据下载 CUDA-BEVFusion 模型下载
参考 Lidar AI Solution git clone --recursive快速高效下载方法 Windows系统Git安装教程 Windows安装Git LFS Ubuntu20.04部署YOLOv5 Ubuntu20.04软件安装大全 Linux下执行Shell脚本出现$‘\r‘: command not found解决方法 【Linux】使用apt-get查询并安装指定版本的软件