环境:Ubuntu20.04+jetpack5.0-b114
CUDA11.4+cudnn8.3.2
TensorRT版本:8.4.0
配置OpenPCDet环境
conda create -n OpenPCDet5 python=3.8
conda activate OpenPCDet5
1.安装pytorch
因为 Orin是ARM架构,直接从pytorch官网安装pytoch会导致安装不上或者缺少相关依赖导致出错,应该从NVIDIA提供的网址下载pytorch的whl文件编译,注意下载时要对应Python版本和jetpack版本。
下载地址:PyTorch for Jetson – version 1.11 now available – Jetson Nano – NVIDIA Developer Forums
安装pytorch之前,先确保pytorch安装所需要的系统包安装好,不然安装过程中会报错
sudo apt-get -y update
sudo apt-get -y install autoconf bc build-essential g++-8 gcc-8 clang-8 lld-8 gettext-base gfortran-8 iputils-ping libbz2-dev libc++-dev libcgal-dev libffi-dev libfreetype6-dev libhdf5-dev libjpeg-dev liblzma-dev libncurses5-dev libncursesw5-dev libpng-dev libreadline-dev libssl-dev libsqlite3-dev libxml2-dev libxslt-dev locales moreutils openssl python-openssl rsync scons python3-pip libopenblas-dev
下载好对应版本的安装包后开始安装torch
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev libomp-dev
pip3 install Cython
pip3 install numpy torch-1.11.0-cp38-cp38m-linux_aarch64.whl
安装torchvison
torchvison下载:选择main–>TagsGitHub – pytorch/vision: Datasets, Transforms and Models specific to Computer Vision
cd torchvision
export BUILD_VERSION=0.12.0
python3 setup.py install --user
cd ../
pip install 'pillow<7'
查看版本:
python
import torch
import torchvision
torch.__version__
torchvision.__version__
torch.cuda.is_available()
至此,pytorch安装完成,安装教程主要参考这位博主:Jeston AGX Orin安装Pytorch1.11.0+torchvision0.12.0_beautifulback的博客-CSDN博客
2.安装cumm和spconv
参考:NVIDIA Jetson AGX Xavier安装OpenPCDet完整踩坑记录_Popuffu的博客-CSDN博客
安装之前先pip list看一下有没有cumm和spconv,结果没有输出再进行安装,如果有先卸载在安装
pip list | grep spconv
pip list | grep cumm
cumm:从GitHub下载,选择main–>Tags,下载对应版本
GitHub – FindDefinition/cumm: CUda Matrix Multiply library.
这里选用自己编译whl的方式
export CUMM_CUDA_VERSION="11.4" # 11.4为cuda版本
export CUMM_DISABLE_JIT="1" # 不用JIT编译cumm,而是编译成whl后再安装
export CUMM_CUDA_ARCH_LIST="8.7" # xavier是7.2,TX2是6.2,orin是8.7
git clone -b v0.2.8 https://github.com/FindDefinition/cumm # v0.2.8为cumm对应tag版本
cd cumm # cd到cumm的代码根目录
python setup.py bdist_wheel # 编译生成cumm的whl在dist文件夹内
pip install dists/xxx.whl # 安装编译好的cumm的whl,名字应该类似cumm_cu114-0.2.8-cp38-cp38m-linux_aarch64.whl
编译完成后输入python,import cumm验证,静默为正常
spconv:同样选用自己编译whl的方式,安装版本为2.1.22,注意把文件夹中pyproject.toml里的cumm依赖删掉
GitHub – traveller59/spconv: Spatial Sparse Convolution Library
export CUMM_CUDA_VERSION="11.4" # 11.4为cuda版本
export SPCONV_DISABLE_JIT="1" # 不用JIT编译spconv,而是编译成whl后再安装
export CUMM_CUDA_ARCH_LIST="8.7" # xavier是7.2,TX2是6.2,orin是8.7
git clone -b v2.1.22 https://github.com/traveller59/spconv --recursive # v2.1.22换成你想要用的github代码的spconv对应tag版本,注意需要加recursive
cd spconv # cd到spconv的代码根目录
pip install pccm wheel # 安装一些依赖包
python setup.py bdist_wheel # 编译生成spconv的whl在dist文件夹内
pip install dist/xxx.whl # 安装编译好的spconv的whl,名字应该类似spconv_cu114-2.1.22-cp38-cp38m-linux_aarch64.whl
安装好后import验证
3.安装llvm,llvmlite
llvm从对应的github仓库的release里面下载aarch64的对应版本的预编译好的文件,解压以后添加环境变量
Releases · llvm/llvm-project · GitHub
export PATH=$PATH:/home/ls/下载/clang+llvm-11.0.0-aarch64-linux-gnu/bin/ # your path to llvm
export LLVM_CONFIG=/home/ls/下载/clang+llvm-11.0.0-aarch64-linux-gnu/bin/llvm-config # your path to llvm-config
接下来安装llvmlite:
pip3 install llvmlite==0.37.0 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
此处llvm版本为11.0,llvmlite为0.37
二者对应关系:llvmlite · PyPI
4.安装OpenPCDet
git clone -b v0.5.0 https://github.com/open-mmlab/OpenPCDet.git
cd OpenPCDet
pip install -r requirements.txt
python setup.py develop
安装过程中报错:subprocess.CalledProcessError: Command ‘[‘ninja‘, ‘-v‘]‘ returned non-zero exit status 1.
网上有的说将['ninja','-v']改成['ninja','–v'] 或者['ninja','–version'],这样会导致g++报错,也有的说pytorch版本太高,但是因为要采用jetson版本的pytorch很难降级,因此将cpp_xtension.py中的
self.use_ninja = kwargs.get('use_ninja', True)
true改为false.
安装过程中报错:fatal error: THC/THC.h: No such file or directory
主要是pytorch版本太高导致,可将版本降低至1.11以下,或者更改./OpenPCDet/pcdet/ops/pointnet2/pointnet2_batch/src和./OpenPCDet/pcdet/ops/pointnet2/pointnet2_stack/src文件夹下的几个cpp文件
//#include <THC/THC.h>
...
//extern THCState *state
将这两行注释掉之后重新编译
幸运的是,openpcdet安装成功。
5.生成ONNX模型
pointpillar推理:https://github.com/NVIDIA-AI-IOT/CUDA-PointPillars
模型转换在./tool文件夹下
https://github.com/NVIDIA-AI-IOT/CUDA-PointPillars/tree/main/tool
cd ../OpenPCDet
python setup.py develop
pip install pyyaml scikit-image onnx onnx-simplifier
pip install onnx_graphsurgeon --index-url https://pypi.ngc.nvidia.com
python exporter.py --ckpt ./pointpillar_7728.pth
mv pointpillar.onnx ../model/ && mv params.h ../include/
安装onnx时会自动将numpy升级,导致报错ImportError: numpy.core.multiarray failed to import
import SharedArray
ImportError: numpy.core.multiarray failed to import
尝试升级、降级,多次更换版本以后:最终numpy版本为1.17.3
以后安装包时前面添加python -m,只针对当前python环境
导出时报错:onnx报错IndexError: Input 731 is undefined
onnxsimplifier版本问题
卸载重新安装0.3.3
最后放一张环境
ca-certificates 2022.6.15
ccimport 0.3.7
commonmark 0.9.1
cumm-cu114 0.2.8
cython 0.29.30
easydict 1.9
fire 0.4.0
flatbuffers 2.0
imageio 2.19.3
lark 1.1.2
ld_impl_linux-aarch64 2.36.1
libffi 3.4.2
libgcc-ng 12.1.0
libgomp 12.1.0
libnsl 2.0.0
libuuid 2.32.1
libzlib 1.2.12
llvmlite 0.37.0
ncurses 6.3
networkx 2.8.4
ninja 1.10.2.3
numba 0.54.0
numpy 1.17.3
onnx 1.8.1
onnx-graphsurgeon 0.3.19
onnx-simplifier 0.3.3
onnxoptimizer 0.2.7
onnxruntime 1.7.0
openssl 3.0.5
packaging 21.3
pccm 0.3.4
pcdet 0.5.0+d1368b0
pillow 9.2.0
pip 22.1.2
portalocker 2.5.1
protobuf 3.20.1
pybind11 2.10.0
pygments 2.12.0
pyparsing 3.0.9
python 3.8.13
python_abi 3.8
pywavelets 1.3.0
pyyaml 6.0
readline 8.1.2
rich 12.5.1
scikit-image 0.19.3
scipy 1.8.1
setuptools 63.2.0
sharedarray 3.2.1
six 1.16.0
spconv-cu114 2.1.22
sqlite 3.39.1
tensorboardx 2.5.1
termcolor 1.1.0
tifffile 2021.8.8
tk 8.6.12
torch 1.11.0
tqdm 4.64.0
typing-extensions 4.3.0
wheel 0.37.1
xz 5.2.5
zlib 1.2.12
参考:
Jeston AGX Orin安装Pytorch1.11.0+torchvision0.12.0_beautifulback的博客-CSDN博客
NVIDIA Jetson AGX Xavier安装OpenPCDet完整踩坑记录_Popuffu的博客-CSDN博客
fatal error: THC/THC.h: No such file or directory_o0stinger0o的博客-CSDN博客
文章出处登录后可见!