当前位置:   article > 正文

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

cuda-bevfusion

一、下载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
  • 1
  • 2

在这里插入图片描述

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  #解压
  • 1

检验

cd /tensorrt/TensorRT-8.5.2.2/samples/sampleOnnxMNIST
make
  • 1
  • 2

进入/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
  • 1
  • 2
  • 3

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

进入TensorRT-8.5.2.2/python

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

在这里插入图片描述

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
  • 1

在这里插入图片描述

2.3 创建新的虚拟环境

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

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

在这里插入图片描述

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
  • 1
  • 2
  • 3
  • 4

3、下载权重及测试图像

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

三、推理运行

1、tools下的文件添加权限

chmod +x ./tool/*
  • 1

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

输入:

cd tool
./environment.sh
  • 1
  • 2

在这里插入图片描述

3、利用 tensorRT 构建模型

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

./tool/build_trt_engine.sh
  • 1

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

4、 编译并运行程序

./tool/run.sh
  • 1

报错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
  • 1
  • 2

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

./tool/run.sh
  • 1

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

python tool/pybev.py
  • 1

报错1ModuleNotFoundError: No module named ‘libpybev’

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

解决

source tool/environment.sh
  • 1

在这里插入图片描述

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/369789
推荐阅读
相关标签
  

闽ICP备14008679号