PointPillars-TensorRT部署

PointPillars-TensorRT部署

1 env

  • cuda-11.3, tensorRT8.5.1.3, 建议抄作业
  1. 先安装OpenPCDetpython环境, 运行python代码需要:
# 1 创建虚拟环境
conda create -n pointpillars python=3.8

# 2 激活虚拟环境 并进入CUDA-PointPillars目录
conda activate pointpillars
cd Lidar_AI_Solution/CUDA-PointPillars

# 3 安装torch
pip install torch==1.10.0+cu113 torchvision==0.11.0+cu113 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch_stable.html

# 4 安装 pyyaml scikit-image onnx onnx-simplifier
pip install pyyaml scikit-image onnx onnx-simplifier 

# 5 安装onnx-graphsurgeon
pip install onnx_graphsurgeon --index-url https://pypi.ngc.nvidia.com

# 6 安装requirements.txt的包
pip install -r tool/requirements.txt

# 7 运行OpenPCDet的setup.py, 显示Successfully installed pcdet即安装成功
pip install -v e .
  1. 查看onnx相关环境
pip list | grep onnx

# 显示如下:
onnx                          1.14.0
onnx-graphsurgeon             0.3.27
onnx-simplifier               0.4.33
onnxruntime                   1.15.1

2 运行

  1. 生成onnx

直接用git-download中的onnx会 报错1 , 详细参考本文第3节代码复现报错汇总

# 1 进入tool目录
cd tool

# 2 运行exporter.py生成onnx
python exporter.py --ckpt ./pointpillar_7728.pth

# 3 将生成的onnx与params.h放到对应文件
mv pointpillar.onnx ../model/ && mv params.h ../include/
  1. 编译pointpillars-trt源码
  • 编译前需要修改CMakeLists.txt
  • 不改会报错fatal error: NvInfer.h: 没有那个文件或目录,详细参考报错4, 修改如下:
# ...
if(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "aarch64")
set(CMAKE_C_COMPILER /usr/bin/aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER /usr/bin/aarch64-linux-gnu-g++)
set(CUDA_INSTALL_TARGET_DIR targets/aarch64-linux)
elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64")
set(CMAKE_C_COMPILER /usr/bin/gcc)
set(CMAKE_CXX_COMPILER /usr/bin/g++)
set(CUDA_INSTALL_TARGET_DIR targets/x86_64-linux)
endif()

# 增加cuda的安装路径
set(CUDA_TOOLKIT_ROOT_DIR /usr/local/cuda-11.3)
set(CUDA_INCLUDE_DIRS ${CUDA_TOOLKIT_ROOT_DIR}/${CUDA_INSTALL_TARGET_DIR}/include)
# 增加TENSORRT的安装路径
set(TENSORRT_ROOT /home/lin/software/TensorRT-8.5.3.1)
set(TENSORRT_INCLUDE ${TENSORRT_ROOT}/include)
set(TENSORRT_LIBS ${TENSORRT_ROOT}/targets/x86_64-linux-gnu/lib/)
# ...
  • 编译
mkdir build && cd build && cmake .. && make -j12
  1. 运行
# 进入build目录
cd build

# 运行
./demo

运行会先Building TRT engine., 第二次运行就直接推理了,不用重新生成TRT engine,耗时短。

结果保存../eval/kitti/object/pred_velo/目录下。

  1. 使用ros发布结果显示如下
    在这里插入图片描述
  • 效果还将就,不过检测速度比较快10ms(6000显卡)内.

3 代码复现报错汇总

  1. 报错1

报错信息如下:onnx2trt_onnx.ModelProto" has no field named "version".

[libprotobuf ERROR google/protobuf/text_format.cc:298] Error parsing text-format onnx2trt_onnx.ModelProto: 1:9: Message type "onnx2trt_onnx.ModelProto" has no field named "version".
trt_infer: ModelImporter.cpp:735: Failed to parse ONNX model from file: ../model/pointpillar.onnx
: failed to parse onnx model file, please check the onnx version and trt support op!

是由于git拉取的代码中,提供的onnx不完整导致, 重新下载pth然后转onnx即可。pth下载地址 然后运行下面代码:

# 1 进入tool目录
cd tool

# 2 运行exporter.py生成onnx, 跟pth路径,不懂路径直接用pth的绝对路径
python exporter.py --ckpt ./pointpillar_7728.pth

# 3 会在tool生成onnx与params.h,然后安装下面移动
mv pointpillar.onnx ../model/ && mv params.h ../include/
  1. 报错2
    Error Code 1: Internal Error (Unsupported SM: 0x809)
  • 我的cuda11.3的,我使用的tensorRT8.2,换成8.5即可解决。
  • 也可以降低cuda版本,但是我们tensorRT版本变了,TRT提供的api也有可能变了,尽量改变cuda版本,不动tensorRT得版本
  1. 报错3
    Error Code 6: Internal Error (Unable to load library: libnvinfer_builder_resource.so.8.5.3)
    段错误 (核心已转储)

告诉我们找不到libnvinfer_builder_resource.so.8.5.3
是因为我们告诉系统tensorTR的库路径

解决办法:

  1. libnvinfer_builder_resource.so放到/usr/lib下或/usr/lib/x86_64-linux-gnu/
cd TensorRT-8.5.3.1/lib
sudo cp libnvinfer_builder_resource.so.8.5.3 /usr/lib
  1. 报错4
fatal error: NvInfer.h: 没有那个文件或目录
   20 | #include "NvInfer.h"
  • CmakeLists.txt修改TensorRT的安装路径即可
    本人使用的TensorRT-8.5.3.1版本,修改如下:
# 增加TENSORRT的安装路径
set(TENSORRT_ROOT /home/lin/software/TensorRT-8.5.3.1)
set(TENSORRT_INCLUDE ${TENSORRT_ROOT}/include)
set(TENSORRT_LIBS ${TENSORRT_ROOT}/targets/x86_64-linux-gnu/lib/)

  • 如果觉得本文章可以,一键三连一波,^_^
  • 部署有问题的小伙伴欢迎留言和加Q裙-472648720

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全网最菜的Slamer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值