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

慈云数据 2024-03-13 技术支持 71 0

目录

  • 一、下载Lidar_AI_Solution
    • 1、Lidar_AI_Solution
    • 2、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-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部署源代码,边缘端实时运行!!!

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon