NVIDIA Jetson AGX Orin配置OpenPCDet环境部署PointPillar

环境: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版本问题

onnx-simplifier · PyPI

卸载重新安装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博客

出现错误“subprocess.CalledProcessError: Command ‘[‘ninja‘, ‘-v‘]‘ returned non-zero exit status 1”解决方法_放屁带出翔丶的博客-CSDN博客_subprocess.calledprocesserror

fatal error: THC/THC.h: No such file or directory_o0stinger0o的博客-CSDN博客 

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年2月28日 下午10:28
下一篇 2023年2月28日 下午10:29

相关推荐