NVIDIA Jetson系列安装torch, mmdetection+mmaction2的环境配置全流程,并成功部署open-mmlab的中时空动作检测的项目

0、更新源并创建conda环境

  • aarch与arm架构的边缘设备需要下载: Archiconda (arm架构下的Anaconda替代品,Anaconda仅仅支持amd架构!!!) 安装参考博文:
    NVIDIA Jeston Nano下载Anaconda代替品,点我进入博文~

  • amd架构下linux下载Anaconda可以参考博文:
    linux下载Anaconda,点我进入博文~

sudo apt-get update
sudo apt-get full-upgrade

conda create -n mmaction2 python=3.8 && conda activate mmaction2

1、安装pytorch

1.1 查看jetson的CUDA与cudnn版本

CUDA: (如果指令无法使用,则查看第6.1节,已给出解决方案)

nvcc -V

打印日志: 得出CUDA版本为11.4

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_May__4_00:02:26_PDT_2022
Cuda compilation tools, release 11.4, V11.4.239
Build cuda_11.4.r11.4/compiler.31294910_0

cudnn:

cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR

打印日志: 得出 CUDNN_MAJOR为8

#define CUDNN_MAJOR 8
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
cat /usr/include/cudnn_version.h | grep CUDNN_MINOR

打印日志: 得出 CUDNN_MINOR为3

#define CUDNN_MINOR 3
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL

最终可得出,cudnn的版本为8.3!!!

1.2 安装对应版本的torch

方法1:在NVIDIA官方去找专门对应jetson系列边缘设备的pytorch,官方网站如下:

点我进入官方的PyTorch for Jetson!!!

注:查看Ubuntu版本信息: lsb_release -a ;   linux信息: uname -a ;
查看自己的Jetson版本:

uname -a 

输出为: (5.10.65)

Linux ubuntu 5.10.65-tegra #1 SMP PREEMPT Mon May 16 20:58:07 PDT 2022 aarch64 aarch64 aarch64 GNU/Linux

根据版本作者下载的jetson版本torch为: JetPack 5.0 (L4T R34.1.0) / JetPack 5.0.1 (L4T R34.1.1) / JetPack 5.0.2 (L4T R35.1.0)

cd /home/ai/workspace/
wget https://developer.download.nvidia.com/compute/redist/jp/v50/pytorch/torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl
pip install torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl

验证torch与torchvision是否成功安装:

import warnings
import torch
import torchvision
# import paddle

from torch.backends import cudnn

warnings.filterwarnings("ignore", category=DeprecationWarning)
print("==============================================>>>>>>")
print("torch version:", torch.__version__)
print("cuda version:", torch.version.cuda)
print("cudnn version:", torch.backends.cudnn.version())
print("torchversion -V:", torchvision.__version__)
print("==============================================>>>>>>")

v = torch.Tensor([1.])  # 如正常则静默
print("将v值放到cuda上: ", v.cuda())  # 如正常则返回"tensor([ 1.], device='cuda:0')"
print("cudnn 是否正常: ", cudnn.is_acceptable(v.cuda()))  # 如正常则返回 "True"
print("==============================================>>>>>>")

# print("paddle.__version__ :: ", paddle.__version__)
# print("paddleversion :: ", paddle.version.cuda())
# paddle.utils.run_check()
# print("==============================================>>>>>>")


成功安装输出日志为:

==============================================>>>>>>
torch version: 1.12.0a0+2c916ef.nv22.3
cuda version: 11.4
cudnn version: 8302
torchversion -V: 0.13.0
==============================================>>>>>>
将v值放到cuda上:  tensor([1.], device='cuda:0')
cudnn 是否正常:  True
==============================================>>>>>>

方法2 :(只适合amd架构和少部分aarch架构安装torch,不推荐)
这边我有写一篇CUDA-cudnn-torch-torchvision版本对应的博文,可参考:参考博文)
https://blog.csdn.net/qq_37700257/article/details/120617200

torch版本下载链接: Links for torch 清华镜像

torchvision版本下载链接: Links for torchvision 清华镜像)
这边我选择的是torch-1.12,`torchvision-0.13

2、 安装编译必要依赖项

此处注意!!! , 安装mmcv-full依赖时候版本一定要对,这里根据自己的cudn与torch安装,否则后续会报6.2的错。
下载网址为:
https://download.openmmlab.com/mmcv/dist/{cuda版本}/{torch版本}/index.html。

# install prerequisites (TF需要的包)
# sudo apt install libhdf5-serial-dev
# sudo apt install libhdf5-dev
# sudo apt install zlib1g-dev
# sudo apt install zip
# sudo apt install libjpeg8-dev
# sudo apt install liblapack-dev
# sudo apt install libblas-dev
# sudo apt install gfortran
# sudo apt install hdf5-tools

# (torch需要的包)
sudo apt install libopenblas-base
sudo apt install libopenmpi-dev
sudo apt install libjpeg-dev
sudo apt install python3-opencv


pip install openmim
# 下面二选一

# 方法1. 使用自动匹配安装(推荐)
MMCV_WITH_OPS=1 pip install mmcv-full
# 方法2. 注意安装mmcv-full一定要注意,版本一定要对,这里根据自己的cudn与torch安装,否则后续会报6.2的错
mim install mmcv-full==1.6.2 -f https://download.openmmlab.com/mmcv/dist/cu114/torch1.12.0/index.html

mim install mmdet
mim install mmpose
pip install Cython
pip install pycocotools
pip install terminaltables
pip install moviepy

3、源码编译安装mmcv

cd /home/ai/workspace/
git clone https://github.com/open-mmlab/mmcv.git  # 有则不用拉取
cd mmcv
MMCV_WITH_OPS=1 pip install -v -e .

4、安装并编译mmdetection

cd /home/ai/workspace/
git clone https://github.com/open-mmlab/mmaction2.git
cd mmaction2
MMCV_WITH_OPS=1 pip install -v -e .

5、安装并编译mmaction2

这里会遇见6.1的报错,可以查看解决方法。

cd /home/ai/workspace/
git clone https://github.com/open-mmlab/mmaction2.git
cd mmaction2
MMCV_WITH_OPS=1 pip install -v -e .

6、过程中可能遇见的错误

6.1 decord无法导入

出错原因: 在第5节编译mmaction2,会报错:decord无法导入,该原因是decord只支持amd架构,而不支持arm(与aarch)架构。

解决办法: 项目中暂时没有用到decord这个包,把第一行的decord >= 0.4.1给删除,保存退出。

vim ~/workspace/wjl_work/mmaction2/requirements/build.txt
# 把第一行的decord >= 0.4.1给删除,保存退出

也可以把decord的包换成cv的包,去分解视频,因为我这边是没有用到decord这个包的,所以不安装也能运行。

6.2 No module named ‘mmcv._ext’

报错信息如下:

ModuleNotFoundError: No module named 'mmcv._ext'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "normal_action.py", line 20, in <module>
    raise ImportError('Failed to import `inference_detector` and '
ImportError: Failed to import `inference_detector` and `init_detector` form `mmdet.apis`. These apis are required in this demo! 

出错原因: 安装mmcv-full的时候,没有指定版本

解决办法:

  1. 查看cuda版本,nvcc -V, 如果不能使用,则在 /usr/local/文件目录下查看jetson已经安装的CUDA,这边我选用系统自带的CUDA,路径为:/usr/local/cuda

  2. vim ~/.bashrc
    

    在末尾添加如下两行:

    export LD_LIBRARY_PATH=/usr/local/cuda/lib
    export PATH=$PATH:/usr/local/cuda/bin
    

    更新配置文件:

    source ~/.bashrc 			
    
  3. 在第1节安装torch的时,我选用的是torch-1.12.0,所以最终安装的版本为mmcv-full==1.7.0 网址的cuda与torch版本选择为 cu114/torch1.12.0,导入指令如下:

    pip install mmcv-full==1.7.0 -f https://download.openmmlab.com/mmcv/dist/cu114/torch1.12.0/index.html
    

(注:如果还不能解决,直接使用方法二)
方法2:

输入以下指令,然后从第二节重新安装依赖:

sudo apt --fix-broken install -o Dpkg::Options::="--force-overwrite"

7、成功安装open-mmlib的套件环境,包含(mmcv, mmdet, mmaction),并附上solofast动作检测成功部署到NVIDIA Jetson 系列边缘的运行截图

成功推理出视频结果,截图展示:
NVIDIA Jetson系列安装torch, mmdetection+mmaction2的环境配置全流程,并成功部署open-mmlab的中时空动作检测的项目_第1张图片

你可能感兴趣的:(神经网络模型部署,NVIDIA,Jetson环境搭建,服务器安装深度学习环境,Jetson,mmdetection,mmaction2,conda,部署)