一、本机环境



二、前期工作


1、配置cuda环境

烧录Jetpack时已经内置好了cuda,但需要配置环境变量才能调用,需要在终端输入

sudo gedit ~/.bashrc

//在底部添加如下

export PATH=/usr/local/cuda/bin:PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:LD_LIBRARY_PATH
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda

source ~/.bashrc

测试,输入nvcc -V

2、给Jetson更换一个国内的镜像源

//sudo gedit /etc/apt/sources.list

deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb http://ports.ubuntu.com/ubuntu-ports/ bionic restricted main universe multiverse

deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic restricted main universe multiverse Added by software-properties

deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security universe multiverse main restricted

// 更新

sudo apt-get update

sudo apt-get upgrade

3、依赖

pip

sudo apt-get update
sudo apt-get install python3-pip python3-dev -y
sudo apt-get install build-essential make cmake cmake-curses-gui -y
sudo apt-get install git g++ pkg-config curl -y
sudo apt-get install libatlas-base-dev gfortran libcanberra-gtk-module libcanberra-gtk3-module -y
sudo apt-get install libhdf5-serial-dev hdf5-tools -y
sudo apt-get install nano locate screen -y

所需的依赖

sudo apt-get install libfreetype6-dev -y
sudo apt-get install protobuf-compiler libprotobuf-dev openssl -y
sudo apt-get install libssl-dev libcurl4-openssl-dev -y
sudo apt-get install cython3 -y

安装opencv的系统级依赖和一些编解码的库

sudo apt-get install build-essential -y
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev -y
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev -y
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev -y
sudo apt-get install libxvidcore-dev libx264-dev -y
sudo apt-get install libatlas-base-dev gfortran -y
sudo apt-get install ffmpeg -y

4、安装torch+torchvision

当前的jetpack是4.5.1 的所以我下载的版本是torch1.8+torchvision0.9.0

首先我们创建一个conda虚拟环境,此处笔者创建了一个python3.6的虚拟环境并激活

下面提供了两种方式来驱动我的pytorch

依赖

安装一些我们需要的构建依赖项

sudo apt install -y python3-pip python3-venv python3-dev libpython3-dev
sudo apt install -y libopenblas-base
sudo apt install -y gfortran libopenmpi-dev liblapack-dev libatlas-base-dev

安装 Cython

pip3 install Cython

升级 pip 和其他 python 设置工具

pip3 install --upgrade pip
pip3 install --upgrade protobuf

升级数据科学库

pip3 install --upgrade numpy
pip3 install --upgrade pandas

升级 matplotlib 到 3.3.4(matplotlib 3.4 需要 python>=3.7)

pip3 install "matplotlib==3.3.4"

升级 scipy(可能需要很长时间)

pip3 install --upgrade scipy

安装 scikit-image(可能需要很长时间)

pip3 install sklearn scikit-image

①自己在Nvidia官网找到适合的版本下载Torch1.8wheel

下载torch

wget https://nvidia.box.com/shared/static/p57jwntv436lfrd78inwl7iml6p13fzh.whl -O torch-1.8.0-cp36-cp36m-linux_aarch64.whl

进入Wheel所在的目录 通过

pip install torch-1.8.0-cp36-cp36m-linux_aarch64.whll

检查torch是否正确检测到 CUDA 设备

python3 -c 'import torch; print(torch.cuda.is_available())'

下载[torch vision 0.9.0](https://github.com/pytorch/vision torchvision) 并进入文件夹执行

sudo apt install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
pip3 install --upgrade pillow
git clone --branch v0.9.0 https://github.com/pytorch/vision torchvision
cd torchvision
export BUILD_VERSION=0.9.0
python3 setup.py install --user

②通过脚本一步到位把torch和torchvision搞定

curl https://raw.githubusercontent.com/cognitivexr/edge-node/main/scripts/setup-xavier.sh | bash
//可能因为网络原因出错,down不下来轮子,翻墙!

---

5、测试

python

import torch

import torchvision

print(torch.cuda.is_available()) # 这一步如果输出True那么就成功了!

quit()


三、YoloV5测试

克隆项目

git clone git@github.com:ultralytics/yolov5.git

确保在pytorch环境进入目录下载项目

pip install -r requirements.txt

python detect.py


四、Tensorrt加速

下载

git clone -b yolov5-v5.0 https://github.com/wang-xinyu/tensorrtx.git

食用步骤

​ ① 把yolov5s.pt放到yolov5工程的weights文件夹下
​ ② 把tensorrtx工程yolov5文件夹下的gen_wts.py复制到yolov5工程下
​ ③ 进入yolov5工程,执行代码,实现:根据.pt文件生成.wts文件
​ 把下载好的YOLO的权重文件,比如说YOLOv5x.pt放到weights文件夹里面。
​ 将tensorrtx的YOLOv5文件夹里面的gen_wts.py复制到第一步下载的YOLOv5文件夹里面
​ python3 gen_wts.py -w weights/yolov5s.pt
​ ④ 在tensorrtx工程的yolov5文件夹下,新建build文件夹
​ ⑤ 在build文件夹下进入terminal,执行代码,实现:根据.wts文件生成.engine文件
生成yolov5x.wts文件,这一步要先cd进入到YOLOv5的文件夹里面。

​ ⑥生成引擎文件,先cd进入tensorrt文件夹下面的yolov5文件夹新建build,并进入。

​ ⑦把第五步生成的yolov5s.wts 文件复制到build文件夹里面然后进行编译。cmake .. & make

sudo ./yolov5 -s yolov5s.wts yolov5s.engine s

​ ⑧编译完成后,可以进行测试,测试使用的图片是sample 文件夹里面的两张图

sudo ./yolov5 -d yolov6s.engine ../sample

测试:使用摄像头实时检测加速


注意

Jetson出现设备无法挂载

sudo apt-get install exfat-utils

执行“python3 setup.py install”出现了illegal instruction(core dumped)的错误。

gedit ~/.bashrc

将下面这段加到最底部:

export OPENBLAS_CORETYPE=ARMV8

source ~/.bashrc

CMake上找不到CURL

sudo apt-get install curl
sudo apt-get install libssl-dev libcurl4-openssl-dev

使用conda不要翻墙,会报错

ProxyError: Conda cannot proceed due to an error in your proxy configuration.
Check for typos and other configuration errors in any '.netrc' file in your home directory,
any environment variables ending in '_PROXY', and any other system-wide proxy
configuration settings.

使用pytorch查看cuda 和cudnn版本

import torch

print(torch.version)

print(torch.version.cuda)

print(torch.backends.cudnn.version())