0


CUDA-BEVFusion环境部署与推理运行(Lidar_AI_Solution)

目录

一、下载Lidar_AI_Solution

1、Lidar_AI_Solution

Lidar_AI_Solution是为激光雷达提供高性能解决方案的项目,3个GPU加速激光雷达/相机深度学习网络( sparse convolution/CenterPoint/BEVFusion/OSD/Conversion),对3D激光雷达进行高度优化

该项目依赖于其他项目,加上 --recursive 参数是为了循环克隆子项目

sudo apt-get install git-lfs
git clone --recursive https://github.com/NVIDIA-AI-IOT/Lidar_AI_Solution.git

在这里插入图片描述

2、CUDA-BEVFusion

CUDA-BEVFusion是LiADAR_AI_Solution项目下的小项目,针对BEBFusion-mit版本进行加速和推理。

在这里插入图片描述
CUDA-BEVFusion部署方案可以解决BEVFusion在实际部署中会面临onnx导出复杂、插件和BEVpooling效率低下等问题。可以保持高精度mAP,并以25FPS在orin芯片上运行。

二、CUDA-BEVFusion 的环境配置

系统:ubuntu20.04
GPU:RTX3090
显卡驱动:525
深度学习框架:pytorch1.10.0
cuda11.1++cudnn-8.6.0
TensorRT-8.5.2.2

1、TensorRT部署

1.1 简介与下载

TensorRT可以在NVIDIA各种GPU硬件平台下运行的模型推理框架,将pytorch等框架训练好的模型转化为TensorRT的格式,利用推理引擎去运行该模型,提升模型运行速度。

下载地址:https://developer.nvidia.com/nvidia-tensorrt-8x-download

1.2 安装

Tar文件的安装方式

(1)C++的解压直接用

tar -zxvf TensoRT-8.5.1.7.Linux.x86_64-gnu.cuda-11.8.cudnn8.6.tar.gz  #解压

检验

cd /tensorrt/TensorRT-8.5.2.2/samples/sampleOnnxMNIST
make

进入/tensorrt/TensorRT-8.5.2.2/targets/x86_64-linux-gnu/bin文件夹,找到生成的sample_onnx_mnist

export LD_LIBRARY_PATH=/home/mengwen/tensorrt/TensorRT-8.5.2.2/targets/x86_64-linux-gnu/lib:$LD_LIBRARY_PATH
source ~/.bashrc
./sample_onnx_mnist

在这里插入图片描述
(2)python版本

进入TensorRT-8.5.2.2/python

pip install tensorrt-8.5.2.2-cp38-none-linux_x86_64.whl

在这里插入图片描述

2、部署环境

2.1 查看README.md

在这里插入图片描述
2.2 cudnn安装

下载地址https://developer.nvidia.com/rdp/cudnn-archive

查看安装的cudnn

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

在这里插入图片描述

2.3 创建新的虚拟环境

复制bevfusion命名的conda环境,生成nvi-bev

conda create --name nvi-bev --clone bevfusion

在这里插入图片描述

2.4 修改环境变量

安装库文件

sudo apt install libprotobuf-dev
pip install onnx==1.12.0
pip install protobuf==3.20.0
pip install onnxruntime==1.10.0

3、下载权重及测试图像

模型下载地址:model.zip
测试数据集下载地址:nuScenes-example-data.zip
完成后解压到CUDA-BEVFusion文件夹中

三、推理运行

1、tools下的文件添加权限

chmod +x ./tool/*

2、修改environment.sh文件并运行

export TensorRT_Lib=/home/mengwen/tensorrt/TensorRT-8.5.2.2/lib
export TensorRT_Inc=/home/mengwen/tensorrt/TensorRT-8.5.2.2/include
export TensorRT_Bin=/home/mengwen/tensorrt/TensorRT-8.5.2.2/bin

export CUDA_Lib=/usr/local/cuda11.6/lib64
export CUDA_Inc=/usr/local/cuda11.6/include
export CUDA_Bin=/usr/local/cuda11.6/bin
export CUDA_HOME=/usr/local/cuda

export CUDNN_Lib=/usr/local/cuda/lib64

输入:

cd tool
./environment.sh

在这里插入图片描述

3、利用 tensorRT 构建模型

利用TensorRT的trtexec将ONNX模型构建成对应的engine引擎文件

./tool/build_trt_engine.sh

在这里插入图片描述
TensorRT构建四个模块
(1)camera.backbone.plan :相机主干网络模块
(2)camera.vtransform.plan:相机视角转换模块
(3)fuser.plan:融合模块
(4)head.bbox.plan:检测头模块

4、 编译并运行程序

./tool/run.sh

报错1:没有完整拉取项目

在这里插入图片描述

解决:发现是没有完整拉取子项目,自己将所有的下载下来

在这里插入图片描述

报错2:Compiled against cuBLASLt 11.9.2.0 but running against cuBLASLt 11.2.1.0.
pytorch1.10.0和TensorRT 8.5.2.2同时运行产生的问题,这个问题出现在加载libmyelin.so.1的时候,TensorRT 8.5.2.2中libmyelin.so.1使用的是cuBLAS 11.9.2.0版本, 而Pytorch 1.10.0安装时候使用的是cudatoolkit 11.1,这里的cuBLAS是 cuBLAS 11.2.1.0.版本。造成在import torch的时候再加载libmyelin.so.1出现错误。

在这里插入图片描述
解决:此处我找了很多方法,最后切换到了cuda-11.6版本就解决了这个问题

在这里插入图片描述

查看生成文件

打开build/cuda-bevfusion.jpg

在这里插入图片描述

5、 python接口

(1)在environment.sh文件打开python接口
export USE_python=ON
在这里插入图片描述运行:

cd tool
./environment.sh

在这里插入图片描述
(2)构建libpybev.so

./tool/run.sh

在这里插入图片描述
(3)测试 Python 接口

python tool/pybev.py

报错1:ModuleNotFoundError: No module named ‘libpybev’

在执行python脚本文件之前需要使用source命令来执行environment.sh脚本

解决:

source tool/environment.sh

在这里插入图片描述

参考文章:
1、BEVFustion-TensorRT部署
2、Lidar AI Solution环境配置 3、25FPS!全网首发 | 英伟达开放BEVFusion部署源代码,边缘端实时运行!!!


本文转载自: https://blog.csdn.net/weixin_54678439/article/details/135238383
版权归原作者 雨秒的對望 所有, 如有侵权,请联系我们删除。

“CUDA-BEVFusion环境部署与推理运行(Lidar_AI_Solution)”的评论:

还没有评论