Jetson AGX Xavier 安装配置深度学习环境并部署 yolo 进行检测识别

一. Jetson 开发板系统相关

1. jetson AGX Xavier 系统烧录

相关步骤:https://blog.csdn.net/tracy_baker/article/details/113741443

注意事项:

  • 虚拟机必须为 ubuntu16.04 或 ubuntu18.04
  • 虚拟机分配的空间必须大于100G
  • 使用虚拟机安装 jetson SdkManager 时必须按照步骤进行换源,否则会有安装失败可能
  • Jetson 开发板及后续使用的 python 版本必须为 python3.6
  • jetson 系统中 python 虚拟环境不能使用 anaconda 进行管理,anaconda 会有无法安装 python3.6 虚拟环境的情况
  • SdkManager 默认安装的 CUDA 的版本为 10.2
  • jetson 中 CPU 为 ARMv8 架构,安装软件时必须选择 带有 ARMv8 或 aarch64 的安装包,一般的安装包无法安装

2. jetson AGX Xavier 系统信息查看

  • 使用 jtop 命令查看系统 CPU、GPU、内存等的占用
  • 安装:sudo pip install jetson-stats
  • 使用:jtopsudo jtop jinru
  • 介绍: 使用 jtop 可以图形化查看系统相关资源占用情况,并修改相关系统参数(具体可自行搜索)
    jetson上配置深度学习环境并部署yolo进行检测识别-1649643141865-2022411101222.png

二、jetson 安装深度学习环境

1. CUDA 与 opencv

  • CUDA10.2 与 opencv 4.1 在系统刷入中会被自动安装

2. pytorch 与 torchvision

  • pytorch for Jetson 安装教程:Nvidia 官方教程
  • 注意事项:
    • python (虚拟)环境必须为 python3.6,Nvidai 提供的所有安装包都是基于 python3.6 版本的

    • pytorch 选择 PyTorch v1.10.0 (根据需要执行选择)

    • torchVision 选择与 torch 相对应版本(torch v1.10.0对应 torchVision v0.11.1)

      jetson上配置深度学习环境并部署yolo进行检测识别-1649645086861-2022411104447.png

Nvidia Jetson 开源插件包与框架合集:https://elinux.org/Jetson_Zoo

三、jetson 运行 yolo 相关程序

1. 下载 yolov5 默认程序

  • 执行 pip install -r requirements.txt 安装 yolov5 需要的环境
  • 默认下载的是 yolov5_t6 版,运行 python detect.py --weights yolov5s.py --source 0 --img 640 调用本地摄像头实时进行检测

2. 选择下载 yolov5_t5 第五版程序,因为本实验室的相关权重训练都是在 yolov5 第五版中进行的

  • 执行 pip install -r requirements.txt 安装 yolov5 需要的环境
  • 运行 python detect.py --weights yolov5s.py --source 0 --img 640 调用本地摄像头实时进行检测时会报错

注意事项;

  1. 默认下载的 yolov5 为第六版程序,本实验需要第五版,需要进行调整
  2. yolov5_t5 默认使用 --source 0 调用本地摄像头会出错,解决方法在 Issues 2875
  3. yolov5_t5 使用本地视频进行检测时,默认不会 imshow,需要修改代码

四、jetson 运行 yolov5 猪脸相关程序

1. 本地运行yolov5原版并实时展示

# --weights 相关权重
# --source  0:表示使用本地摄像头    rtmp://xxx 表示使用网络直播源    xxx.mp4 表示使用本地视频
# --img-size 表示识别的图片大小
python detect.py --weights yolov5s.pt --source 0 --img-size 640

2. 本地运行猪脸识别并实时展示

# --weights 相关权重
# --source  0:表示使用本地摄像头    rtmp://xxx 表示使用网络直播源    xxx.mp4 表示使用本地视频
# --img-size 表示识别的图片大小
# 使用一头猪的权重实时检测一头猪的视频
python detect001.py --weights try/pig_1/best.pt --source try/pig_1/pig_1.mp4 --img-size 640
# --weights 相关权重
# --source  0:表示使用本地摄像头    rtmp://xxx 表示使用网络直播源    xxx.mp4 表示使用本地视频
# --img-size 表示识别的图片大小
# 使用一头猪的权重实时检测一头猪的视频
# detect002.py 中修改增加了RTMP推流的部分代码
python detect002.py --weights try/pig_1/best.pt --source try/pig_1/pig_1.mp4 --img-size 640
# --weights 相关权重
# --source  0:表示使用本地摄像头    rtmp://xxx 表示使用网络直播源    xxx.mp4 表示使用本地视频
# --img-size 表示识别的图片大小
# 使用一头猪的权重实时检测一头猪的视频
# detect004_rtmp2rtmp.py 中修改增加了RTMP推流的部分代码
# 运行本代码前需要先在 nanopc-T4 开发板中运行实时视频采集与推流程序,之后本程序才能接收到 RTMP 视频流
# nanopc-T4中程序:https://gitee.com/qiaoyukeji/nanopc2jetlinks4mqtt/blob/master/test_007_rtmp2jetson/rtmp001.py
python detect004_rtmp2rtmp.py --weights try/pig_1/best.pt --source rtmp://42.192.123.52/live/jetson --img-size 640