英伟达 Jetson Nano, Orin 系列加速板初始化安装

英伟达 Jetson Nano, Orin 系列加速板初始化安装

1、Jetson Nano的系统安装

1.1 安装准备

参考资料:https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit

Jetson Nano 的系统通过SD卡镜像安装,安装完成即包含所有软件

镜像地址:https://developer.nvidia.com/jetson-nano-sd-card-image

1.2 安装步骤

1)准备好高质量SD卡,容量>=64G

2)格式化SD卡,软件:https://www.sdcard.org/downloads/formatter_4/eula_windows/

image

3)烧写SD卡,软件:https://www.balena.io/etcher

image

4)等待烧写完成,完成后弹出的格式化窗口务必不要格式化

5)插入带有Jetson镜像的SD卡、U盘等介质疯狂弹窗是正常现象,不用怀疑中毒。

1.3 初始化系统

1)插入SD卡到板卡上

image

2)供电开机

寻找载板上J48跳线座

5v micro USB供电时拔掉跳线

直流供电时跳线J48

3)第一次登录时的选项

  • Review and accept NVIDIA Jetson software EULA

    • 同意英伟达的条款
  • Select system language, keyboard layout, and time zone

    • 选择系统语言。。。
  • Create username, password, and computer name

    • 创建用户,密码和计算机名
  • Select APP partition size—it is recommended to use the max size suggested

    • 选择分区大小-建议直接选择推荐的最大值

4)第一次登录时的选项

  • Review and accept NVIDIA Jetson software EULA

    • 同意英伟达的条款
  • Select system language, keyboard layout, and time zone

    • 选择系统语言。。。
  • Create username, password, and computer name

    • 创建用户,密码和计算机名
  • Select APP partition size—it is recommended to use the max size suggested

    • 选择分区大小-建议直接选择推荐的最大值

进入桌面,分别验证系统软件的版本

//查看系统版本
cat /proc/version

//查看python版本
python3 --version //应为python3.6


//验证JetPack
sudo apt-cache show nvidia-jetpack //jetpack版本号
cat /etc/nv_tegra_release //L4T(linux for tegra)版本号



//查看cuda版本
nvcc --version
// nvcc会找不到,要将cuda加入环境变量

//查找cuda路径
whereis cuda

//修改bash启动文件
vim ~/.bashrc
//在文件末尾增加内容
export PATH=/usr/local/cuda-xx.x/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-xx.x/lib64:$LD_LIBRARY_PATH

//source bash启动文件
source ~/.bashrc
nvcc --version //应为cuda-10.2

验证完成,安装成功

2、Jetson Nano部Yolo v8项目

2.1背景与限制

Jetson nano最高只能安装Jetpack4.6.x版本的系统,对应的python版本为3.6.x。py36因对应cuda、tensorrt,因此也不建议升级使用。ultralytics的最低要求为python3.8,因此无法在Jetson nano上像其他途径一样使用yolov8。因此,为了安装ultralytics需要创建虚拟环境,安装python3.8及对应的torch、torchvision。

2.2 安装ultralytics

1)创建虚拟环境

sudo apt update
sudo apt install -y python3.8 python3.8-venv python3.8-dev python3-pip \
libopenmpi-dev libomp-dev libopenblas-dev libblas-dev libeigen3-dev libcublas-dev
// 安装python3.8(系统ln不变,不影响系统主环境为py3.6)
python3.8 -m venv venv // 创建名为venv的虚拟环境
source venv/bin/activate // 激活venv虚拟环境

2)安装torch,torchvision

大神已预编译,下载地址:

torch:https://drive.google.com/uc?id=1hs9HM0XJ2LPFghcn7ZMOs5qu5HexPXwM

torchvision:https://drive.google.com/uc?id=1m0d8ruUY8RvCP9eVjZw4Nc8LAwM8yuGV

pip install -U pip wheel
pip install torch*.whl torchvision*.whl

验证torch与是否可以加速

python3 -c "import torch; print(torch.cuda.is_available())"
// True表示cuda可以加速

3)安装ultralytics

pip install ultralytics 

4)运行yolov8

yolo task=detect mode=predict model=yolov8n.pt source=0 show=True
yolo task=segment mode=predict model=yolov8n-seg.pt source=0 show=True

3、tensorrt加速yolov8-detect

由于在python 3.8的环境下无法安装对应jetpack版本的tensorrt,因此也不能使用ultralytics提供的export engine功能。这时候需要借助第三方的帮助。

1)clone以下仓库:https://github.com/wang-xinyu/tensorrtx

2)进入yolov8文件夹

3)复制gen_wts.py到yolo权重目录

4)转换yolo的pt权重到wts中间格式

5)回到tensorrtx/yolov8目录

6)创建build文件夹

7)刚刚生成的wts文件放到build文件夹中

8)编译:

cmake ..
make 
sudo ./yolov8_det -s [.wts] [.engine] [n/s/m/l/x] //转换权重到engine
sudo ./yolov8_det -d yolov8n.engine ../images g //运行yolov8n

加速效果:在python3.8环境中推理yolov8n detection约140ms一图,使用tensorrt加速后yolov8n为50ms一图

4、Jetson Orin nano/Nx 系统安装

4.1 先给一个正常流程(不使用SDK Manager)

Jetson Orin不建议使用SD卡作为镜像硬件,配备NVMe固态硬盘作为存储介质,因此镜像烧录和启动与jetson nano差别较大。需要使用SDK Manager或命令行烧写。

0)准备ubuntu18.04 or ubuntu20.04主机用来烧写设备

全新安装一个ubuntu18.04虚拟机,授予虚拟机USB权限,不要配置国内的apt镜像源(非常重要)。

安装必要组件

sudo apt-get install qemu-user-static
sudo apt-get install python // python2.7

1)下载喜欢的Jetson Linux版本

https://developer.nvidia.com/embedded/jetson-linux-archive

Jetson Linux(L4T),JetPack(cuda, tensorrt)的版本关系后面再列个表出来。

本文档使用R35.3.1。千万别用R35.5.0(2024年3月8日)其它版本理论上随意选择。

下载Driver Package(BSP)和Sample ROOT Filesystem

安装过程官方参考:https://docs.nvidia.com/jetson/archives/r35.3.1/DeveloperGuide/text/IN/QuickStart.html

2)解压镜像

在下载文件的根目录中执行命令

tar -xf Jetson_Linux_R35.3.1_aarch64.tbz2 //解压Linux基础文件
sudo tar xpf Tegra_*.tbz2 -C Linux_for_Tegra/rootfs/ //解压文件系统到L4T的rootfs文件夹
cd Linux_for_Tegra/
sudo ./apply_binaries.sh
sudo ./tools/l4t_flash_prerequisites.sh

至此文件准备完成,设置jetson orin为recovery模式,准备烧写

3)jetson orin设置recovery模式

短接引脚REC-GND,直流电源供电,USB-C接口与主机相连

主机发现设备“Nvidia AGX”则状态正确

4)烧写启动 to NVMe

直接运行官网的指令,官网提供了烧写到各种介质的指令,根据实际情况选择。我们烧写到NVMe SSD中

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 \
  -c tools/kernel_flash/flash_l4t_external.xml -p "-c bootloader/t186ref/cfg/flash_t234_qspi.xml" \
  --showlogs --network usb0 jetson-orin-nano-devkit internal

等待直到完成。

期间Jetson orin会重启一次,使用虚拟机需要及时响应USB硬件分配,否则超时需要重新烧写过程。

4.2 系统安装的注意事项

实际使用虚拟机烧写镜像非常非常慢,无论是SDK Manager还是命令行。主要是镜像制作、打包时间非常长,对虚拟机的配置、内存有很高的要求。我的i5-16G内存笔记本中这个过程以小时记。

后改为基础系统为ubuntu的志强-64G内存工作站,使用命令行模式安装,整个烧写过程大约15分钟。差别非常巨大。

坑货英伟达,烧写过程非常吃硬件配置。

4.3 启动Jetson Orin 安装推理环境

4.3.1 第一次登录时的选项(可能要退出刷机模式,拔掉跳线)

  • Review and accept NVIDIA Jetson software EULA

    • 同意英伟达的条款
  • Select system language, keyboard layout, and time zone

    • 选择系统语言。。。
  • Create username, password, and computer name

    • 创建用户,密码和计算机名
  • Select APP partition size—it is recommended to use the max size suggested

    • 选择分区大小-建议直接选择推荐的最大值

进入桌面,分别验证系统软件的版本

//查看系统版本
cat /proc/version //Ubuntu 20.04

//查看python版本
python3 --version //应为python3.8.10

// 安装Jetpack
sudo apt update
sudo apt install nvidia-jetpack // 9G大小

//验证JetPack
sudo apt-cache show nvidia-jetpack //jetpack版本号 5.1.1
cat /etc/nv_tegra_release //L4T(linux for tegra)版本号 35.3.1

//查看cuda版本
nvcc --version
// nvcc会找不到,要将cuda加入环境变量

//查找cuda路径
whereis cuda

//修改bash启动文件
vim ~/.bashrc
//在文件末尾增加内容
export PATH=/usr/local/cuda-xx.x/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-xx.x/lib64:$LD_LIBRARY_PATH

//source bash启动文件
source ~/.bashrc
nvcc --version //应为cuda-11.4

至此基础镜像安装全部完成

5 Jetson Orin YOLO v8部署

Jetson orin 对应的L4T版本所带python为3.8,满足ultralytics的最低要求,因此可以直接pip安装

1)完善python3

sudo apt-get install python3-pip
sudo pip3 install -U pip
sudo pip3 install -U jetson-stats //jetson的性能监控组件

// 安装torch使用依赖
sudo apt-get install -y libopenblas-base libopenmpi-dev libjpeg-dev zlib1g-dev

2)安装torch, torchvision

找到你喜欢的pytorch版本:

https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048

_知道为什么不用L4T 35.5了吧!它没有预编译的对应pytorch版本!坑!

也可以自己从源码编译pytorch

pip3 install torch-*.whl

互联网冲浪,找到你的pytorch对应的torchvision版本

git clone https://github.com/pytorch/vision --tag=0.14.1
cd vision
python3 setup.py install --user
// 等待非常漫长

3)安装ultralytics

pip3 install ultralytics
pip3 install onnx
pip3 install numpy==1.20.3

4)验证功能

yolo obb predict model=yolov8n-obb.pt source=0 save=False show=False device=0

由于安装目录不在PATH中,这个验证是会报错的。我们编写一个python脚本来验证

from ultralytics import YOLO
model = YOLO('yolov8n-obb.pt', task='obb')
model('img.png')

6 Jetson Orin YOLO v8 tensorrt 加速

参考文件:https://docs.ultralytics.com/modes/export/#arguments

从里面找好export函数的format参数与格式对应的其他参数

编写权重转换脚本,并python运行

from ultralytics import YOLO
model = YOLO('yolov8n-obb.pt', task='obb')
model.export(format='engine', imgsz=1024, int8=True, device=0) // int8量化

测试加速效果

from ultralytics import YOLO
model = YOLO('yolov8n-obb.engine', task='obb')
model('img.png')

完成!!!

Jetson Orin由于使用高版本Jetpack,拥有更强的性能同时对当今SOTA模型的支持更好。大大简化了部署的工作量。

6、安装虚拟环境并复制tensorrt推理

Jetson无法安装miniconda,需要安装miniforge或者mambaforge

下载地址:https://github.com/conda-forge/miniforge/releases/tag/23.11.0-0

sh manba*.sh

安装完成后重新进入shell激活虚拟环境

python的安装与其它包安装与conda一致,tensorrt由于要与jetpack版本保持对应,直接从系统包中复制

使用如下指令

cp -r /usr/bin/python3.8/site-packages/tensorr* ~/mambaforge/envs/yolo/lib/python3.8/site-packages
  • 14
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值