您现在的位置是:首页 > 唯美句子

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

作者:言安琪时间:2024-04-27 15:05:34分类:唯美句子

简介  文章浏览阅读1.2k次,点赞21次,收藏22次。TensorRT可以在NVIDIA各种GPU硬件平台下运行的模型推理框架,将pytorch等框架训练好的模型转化为TensorRT的格式,利用推理引擎去运行该模型,提升模型运行速度。_cuda bevfusion

点击全文阅读

目录

一、下载Lidar_AI_Solution1、Lidar_AI_Solution2、CUDA-BEVFusion 二、CUDA-BEVFusion 的环境配置1、TensorRT部署2、部署环境3、下载权重及测试图像 三、推理运行1、tools下的文件添加权限2、修改environment.sh文件并运行3、利用 tensorRT 构建模型4、 编译并运行程序5、 python接口

一、下载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-lfsgit 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/sampleOnnxMNISTmake

进入/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_PATHsource ~/.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-devpip install onnx==1.12.0pip install protobuf==3.20.0pip 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/libexport TensorRT_Inc=/home/mengwen/tensorrt/TensorRT-8.5.2.2/includeexport TensorRT_Bin=/home/mengwen/tensorrt/TensorRT-8.5.2.2/binexport CUDA_Lib=/usr/local/cuda11.6/lib64export CUDA_Inc=/usr/local/cuda11.6/includeexport CUDA_Bin=/usr/local/cuda11.6/binexport CUDA_HOME=/usr/local/cudaexport 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

报错1ModuleNotFoundError: No module named ‘libpybev’

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

解决

source tool/environment.sh

在这里插入图片描述

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

点击全文阅读

郑重声明:

本站所有活动均为互联网所得,如有侵权请联系本站删除处理

我来说两句