Jetson Nano部署TensorRT加速的YOLO V8
使用TensorRT加速的YOLO V8部署在Jetson Nano开发板中。
Jetson Nano部署YOLO V8
刷JetPack镜像
Step1:格式化SD卡
下载NVIDIA官方推荐的 SD Card Formatter 软件对SD卡进行格式化。
Step2:下载镜像文件
从官网的 Jetson下载中心 下载Jetson Nano对应版本的JetPack镜像文件。
Step3:烧录镜像文件
下载NVIDIA官方推荐的 balenaEtcher 软件将JetPack镜像烧录到SD卡中。
值得注意的是,最新版本的balenaEtcher可能会烧录镜像失败(暂时不知道是由于什么原因),因此建议使用更加稳定的一些版本。在部署过程中我使用了[1]中提供的 balenaEtcher安装包,提取码:28pm。
Python环境配置
Jetson Nano自带的Python版本为3.6.9,而很多库(尤其是更新较快的库)依赖的Python版本较高。
因此自带的Python环境并不推荐使用,针对这样的情况共有如下两种解决方案:
Solution1:更改默认的Python环境
这样做比较麻烦,且有可能使Jetson Nano中的Python环境更糟。
Solution2:使用conda管理Python环境
这样做比较方便,而且有利于不同任务的Python开发(强烈推荐!)。
但要注意的是,Jetson Nano的系统架构为aarch架构(arm64),而Anaconda官方并不存在aarch64的相关编译版本,因此我们需要使用的是GitHub上的开源项目:Archiconda。
当下载完成后,使用如下命令进行安装:
# 1、为文件赋可执行权限755
sudo chmod 755 ArchicondaXXX.sh(XXX为Archiconda的版本号)
# 2、执行安装脚本
./ArchicondaXXX.sh(XXX为Archiconda的版本号)
Archiconda的命令与Anaconda的命令使用方法一致。
YOLO V8部署
YOLO V8的TensorRT部署主要参考了[3]中的方法。
打开Jetson Nano的Terminal,逐行输入以下命令:
conda create -n yolo8 python=3.7
pip install --upgrade pip
pip intsall cmake
pip install onnx==1.13.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
这些命令创建了一个Python版本为3.7、名为yolo8的环境,其中安装了cmake、onnx和ultralytics等库及其依赖库。
Step1:源码下载
通过输入以下命令,从GitHub获取源码:
git clone https://github.com/shouxieai/infer.git
Step2:trtexec环境变量设置
通过输入以下命令,完成trtexec环境变量的设置:
# 打开bashrc文件
vim ~/.bashrc
# 按i进入输入模式,在最后一行添加如下语句
export PATH=/usr/src/tensorrt/bin:$PATH
# 按下esc,输入:wq!保存退出即可,最后刷新下环境变量
source ~/.bashrc
注:bashrc文件是根目录下的隐藏文件,要想查看隐藏文件,同时按住Ctrl+H
即可,再同时按住Ctrl+H
即可重新隐藏文件。
Step3:pt权重文件导出为ONNX格式
这部分与[3]中的二、3部分基本一致,不过在Jetson Nano中一直安装onnxoptimizer、onnxsim库失败,所以采用的是在个人电脑将模型转出,放置在Jetson Nano中。
注:在不同系统之间直接传输文件可能导致文件的系统时间不一致,针对这样的情况,输入以下命令即可统一:sudo find ./* -exec touch {} +
。
Step4:ONNX文件生成engine
这部分与[3]中的二、4部分完全一致。
值得注意的是,生成的engine依赖于生成环境,因此需要保持生成环境、生成engine、使用环境一致。
Reference
[1] NVIDIA Jetson Nano刷机保姆级教程
[2] NVIDIA Jetson Nano安装和使用Anaconda
[3] Jetson Nano部署YOLO V8
![Logo](https://devpress.csdnimg.cn/79de2bf0b7994defa4242ef90d5513fa.jpg)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)