在米文动力 EVO Orin 设备 Jetson AGX Orin 下配置 YOLOV5 的环境说明

news2024/11/18 1:35:58

声明:本博文的配置大部分参考 Jetson AGX Orin安装Anaconda、Cuda、Cudnn、Pytorch、Tensorrt最全教程

1 前言

本文设备内置的模组是 Nvidia Jetson AGX Orin 32GB,算力达到 200 TOPS,aarch64 架构

本文主要参考《Jetson AGX Orin安装Anaconda、Cuda、Cudnn、Pytorch、Tensorrt最全教程》,外加自己的细微调整,在此感谢博主的分享。

博主完全以小白身份参考该篇博文一步一步配置开始,期间多次推倒重来甚至刷机,花了一周时间终于花开见明月,以下若有出入之处,敬请了解和指导,以免误人误己。

2 Anaconda 安装

Anaconda 是一个用于科学计算的 Python 和 R 语言的发行版,它包含了众多流行的科学计算、数据分析和机器学习库。Anaconda 使用 conda 作为包管理器和环境管理器。

Jetson 系列模组,其架构都是 aarch64,而不是传统 PC 的 amd64

下载地址,点击进入后选择 Anaconda3-2023.03-1-Linux-aarch64.sh 进行下载

进入下载文件夹,按如下命令安装即可:

#首先给脚本文件增加可执行权限
chmod +x Anaconda3-2023.03-1-Linux-aarch64.sh 
#运行安装脚本执行安装
./Anaconda3-2021.11-Linux-aarch64.sh

# 根据提示按 Enter 键,并一直按住,直到出现输入 yes or no 提示语句,并输入 yes 按 Enter 键继续
# 等待安装完成提示 by running conda init ?[yes|no] 时输入 yes 按 Enter 键继续

# 查看 conda 版本,看是否安装成功
conda -V
# 如果提示 -bash: conda: command not found,则 source 一下
source ~/.bashrc

创建新的虚拟环境

切记指定 python 版本为 3.8,因为后续安装 PyTorch 时指定的 Python 版本为 3.8
在这里插入图片描述

# 博主以 yolov5 6.1 版本创建虚拟环境名称,并指定 python 版本为 3.8.16
conda create --name yolov561 python=3.8.16

# 激活新建的虚拟环境
conda activate yolov561

注意以下安装过程都需要在 yolov561 虚拟环境中,如果过程中重启,需要手动进入

3 jtop 安装

jtop 是一个基于 Python 编写的交互式系统监视器,类似于 Linux 上的 top 命令。它可以实时显示系统资源使用情况、进程信息、网络连接状态等。

# 需要使用 pip3 来安装 jtop,所以先安装 pip3
sudo apt install python3-pip

# 安装jtop
sudo -H pip3 install -U jetson-stats

# 重启系统
sudo reboot

# 启动 jtop
jtop

在这里插入图片描述

此处重启了系统,需要再次调用如下指令进入 yolov561 虚拟环境

conda activate yolov561

3 Cuda、Cudnn 安装

CUDA 是英伟达公司推出的用于 GPU 并行计算的平台和编程模型。它提供了一组 API,可以让开发者使用 C、C++、Fortran 等语言进行 GPU 编程,并且支持在不同操作系统(如 Windows、Linux)和不同架构(如 NVIDIA GPU)之间进行部署。

而 CuDNN(CUDA Deep Neural Network library)是英伟达公司专门为深度学习领域开发的一个库,提供了高效的神经网络相关操作实现,包括卷积、池化、标准化、激活函数等,能够充分利用 NVIDIA GPU 的计算性能进行加速,适用于常用的深度学习框架如 TensorFlow、PyTorch、Caffe 等。

总的来说,CUDA 提供了一整套 GPU 计算的基础设施和编程接口,而 CuDNN 则是其中的一个针对深度学习领域的重要组成部分,两者结合可以为深度学习任务提供高效的计算支持。

通过运行 jtop 命令点击底部 info 选项进入 info 界面得知,已安装了 Jetpack 5.0.2,以及 cuda 11.4 和 cudnn 8.4.1,所以此处无需安装 cuda 和 cudnn,博主之前就是在系统已经安装的情况下再次安装出现了问题一顿乱倒腾导致黑屏刷机的

  • 配置 cuda 环境变量
    cuda 已默认安装在 /usr/local/cuda 下,运行如下指令:
#打开~/.bashrc
sudo gedit ~/.bashrc

#在文本末输入如下代码并保存退出
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=/usr/local/cuda

#更新环境变量配置
source ~/.bashrc
  • 运行 nvcc -V 查看版本号
    在这里插入图片描述

  • 复制 cudnn 头文件和库文件到 cuda 目录
    虽然安装了 cuDNN,但没有将对应的头文件和库文件放到 cuda 目录
    cuDNN的头文件在:/usr/include,库文件位于:/usr/lib/aarch64-linux-gnu
    复制操作如下:

#复制文件到cuda目录下
cd /usr/include && sudo cp cudnn* /usr/local/cuda/include
cd /usr/lib/aarch64-linux-gnu && sudo cp libcudnn* /usr/local/cuda/lib64

#修改文件权限,修改复制完的头文件与库文件的权限,所有用户都可读,可写,可执行:
sudo chmod 777 /usr/local/cuda/include/cudnn.h 
sudo chmod 777 /usr/local/cuda/lib64/libcudnn*

#重新软链接,这里的8.4.1和8对应安装的cudnn版本号和首数字
cd /usr/local/cuda/lib64

sudo ln -sf libcudnn.so.8.4.1 libcudnn.so.8

sudo ln -sf libcudnn_ops_train.so.8.4.1 libcudnn_ops_train.so.8
sudo ln -sf libcudnn_ops_infer.so.8.4.1 libcudnn_ops_infer.so.8

sudo ln -sf libcudnn_adv_train.so.8.4.1 libcudnn_adv_train.so.8
sudo ln -sf libcudnn_adv_infer.so.8.4.1 libcudnn_adv_infer.so.8

sudo ln -sf libcudnn_cnn_train.so.8.4.1 libcudnn_cnn_train.so.8
sudo ln -sf libcudnn_cnn_infer.so.8.4.1 libcudnn_cnn_infer.so.8

sudo ldconfig
  • 验证 cuDNN 是否安装成功
# 复制测试用例程序到指定目录并编译测试程序
sudo cp -r /usr/src/cudnn_samples_v8/ ~/
cd ~/cudnn_samples_v8/mnistCUDNN
sudo chmod 777 ~/cudnn_samples_v8
sudo make clean && sudo make
# 运行测试程序
./mnistCUDNN

如果运行成功,会显示如下信息:

Test passed!

大功告成

4 Pytorch 安装

PyTorch 是一个基于 Python 的开源机器学习框架,由 Facebook 人工智能研究院(FAIR)开发和维护。PyTorch提供了动态计算图的功能,使得用户可以在模型训练的过程中进行动态调整,这为灵活的模型设计和快速迭代提供了便利。

同时,PyTorch 也支持张量计算和自动微分,可以帮助用户快速构建神经网络模型并进行优化。此外,PyTorch 还提供了丰富的工具和库,包括 torchvision,用于图像处理任务的预处理、数据加载和可视化等。

torchvision 是 PyTorch 中专门用于处理图像和视频数据的扩展库,它提供了一系列高效的工具和函数,方便用户进行图像和视频数据的预处理和增强,并且可以快速加载和处理常用的数据集(如 MNIST、CIFAR 等)。同时,torchvision 也提供了各种常用的图像和视频模型(如 ResNet、Inception 等),可以帮助用户快速搭建和训练模型。

pytorch 版本不能随意安装,必须安装英伟达编译的好的库文件,系统安装的是 Jetpack 5.0.2,博主也选择了 PyTorch v1.12.0 版本
点击进入官方页面进行版本查看和下载
在这里插入图片描述
下载完成后,在下载目录下执行如下指令

sudo pip install torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl

如果安装过程中报错,可以执行以下指令再次进行安装:

sudo apt-get -y update; 
sudo apt-get -y install autoconf bc build-essential g++-8 gcc-8 clang-8 lld-8 gettext-base gfortran-8 iputils-ping libbz2-dev libc++-dev libcgal-dev libffi-dev libfreetype6-dev libhdf5-dev libjpeg-dev liblzma-dev libncurses5-dev libncursesw5-dev libpng-dev libreadline-dev libssl-dev libsqlite3-dev libxml2-dev libxslt-dev locales moreutils openssl python-openssl rsync scons python3-pip libopenblas-dev
  • 安装 torchvision
    由下表可知,PyTorch v1.12 对应 torchvision v0.13.0 版本,所以需要下载 torchvision v0.13.0
    在这里插入图片描述
    官方没有 whl 文件,运行如下代码
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev 

git clone --branch v0.13.0 https://github.com/pytorch/vision torchvision
cd torchvision
export BUILD_VERSION=0.13.0
python3 setup.py install --user

  • 验证 Pytorch 和 torchvision 是否安装成功
    需要退出 torchvision 的安装目录后才能执行验证,否则 import torchvision 时会有警告,原因就是你在 torchvison 文件夹中打开了终端,执行 import,相当于”体内“调包

在这里插入图片描述
如果出现如上图所示,没有任何警告和错误,表明安装成功。

import torchvision 可能会报 ModuleNotFoundError,以下列举了一些错误的解决方法

在这里插入图片描述
若出现以上报错,执行 pip install numpy

在这里插入图片描述
若出现以上报错,执行 pip install pillow

在这里插入图片描述
若出现以上报错,执行 pip install requests

最终使用 pip list 查看 torch 和 torchvision 版本,显示如下:
在这里插入图片描述
注:博主在这个 torch 和 torchvision 的版本匹配上耗费了很久,推倒多次重来才得以解决 yolov5 使用 GPU 来执行推理运算,即 torch 和 torchvision 版本不匹配出现的如下报错:

\Anaconda3\envs\pytorch-gpu\lib\site-packages\torchvision\io\image.py:13: UserWarning: Failed to load image Python extension:

可能是博主一顿乱安装包括后续安装 yolov5 需要的依赖库时里面也包含了 torch 和 torchvision,之前安装出现问题是因为 torch 版本是 1.12.0a0,而 torchvision 版本是 0.13.0,不是上图中的 0.13.0a0,至于是如何阴差阳错安装上的,博主现在也还无法确定具体是哪一步骤的问题。

以下是博主复盘时发现之前安装 torchvision 的过程截图,没想到一开始就成功了的,具体步骤是按照博文开头提到的参考博文来操作的。
在这里插入图片描述在这里插入图片描述

之前由于两者版本不对的问题,也能够运行 yolov5 算法,但后面才知道为啥推理速度比较慢的缘故了,原来是用的 cpu 在推理,可以通过如下方式查询是用的 cpu 还是 gpu

# 终端运行 python3
python3
>>import torch
>>torch.cuda.is_available()
false

false 表明 GPU 不可用,而 true 表明 GPU 可用

5 Tensorrt 安装

TensorRT 是英伟达公司开发的加速深度学习推理的软件库。它利用 GPU 硬件的并行计算能力,通过优化神经网络模型结构、剪枝和量化等技术,实现了对模型推理的加速。TensorRT兼容多种深度学习框架,并提供了 C++ 和Python API,使得用户可以方便地将其集成到自己的应用程序中。TensorRT 广泛应用于图像分类、目标检测、语音识别、自然语言处理等领域,在提升深度学习应用实时性和效率方面发挥着重要作用。

Jetpack 已经给我们自动安装好了,但是安装位置在 /usr/lib/python3.8/dist-packages/ 中,不能被虚拟环境中定位使用。因此我们需要软链接一下,运行如下命令:

# 这里路径需要修改成自己的虚拟环境名,因为博主用了虚拟环境 yolov561,如果不是该名字需要更换
sudo ln -s /usr/lib/python3.8/dist-packages/tensorrt* /home/nvidia/anaconda3/envs/yolov561/lib/python3.8/site-packages/

测试一下,运行如下指令:

python -c "import tensorrt;print(tensorrt.__version__)"

若出现版本号,则成功:
在这里插入图片描述

安装完成后,暂未使用其来加速 yolov5,有时间摸索出来了再来完善

6 yolov5 安装使用

Github 上下载 yolov5 代码,博主用的 6.1 版本,按照如下方式下载

git clone --branch v6.1 https://github.com/ultralytics/yolov5.git

下载完成后 cd 进入并执行以下指令:
注:执行前打开 requirements.txt 屏蔽 torch 和 torchvision 的判断,因为之前已经匹配安装了 torch 和 torchvision,避免此处安装最新版使得无法使用 GPU 来推理运算

pip install -r requirements.txt

安装完成后,输入 python 运行,并依次输入如下 python 指令

import torch

# Model
model = torch.hub.load("ultralytics/yolov5", "yolov5s")  # or yolov5n - yolov5x6, custom

# Images 本地图片路径,可自行修改
img = "/home/nvidia/Downloads/1.jpg"  # or file, Path, PIL, OpenCV, numpy, list

# Inference
results = model(img)

# Results
results.print()  # or .show(), .save(), .crop(), .pandas(), etc.

在这里插入图片描述
若出现以上报错,执行 pip install opencv-python
在这里插入图片描述
若出现以上报错,执行 sudo pip3 install pandas

其他没例举的报错请按照类似方法自行解决

7 环境备份

  1. 系统克隆,请点击查看
  2. conda 环境打包和迁移部署

参考连接

  • Jetson AGX Orin安装Anaconda、Cuda、Cudnn、Pytorch、Tensorrt最全教程
  • Jetson AGX Orin 上设置 language 和 中文输入法
  • Jetson AGX Orin 上使用 VNC 远程图片界面说明
  • 详细实现yolov5测试丶自己数据集训练测试丶Tensorrt加速优化(完 结 !)+ 跟踪(补充)
  • YOLO家族进化史(v1-v7)
  • YOLO在服务器上训练,日志文件中不显示GFLOPs参数的问题

非常感谢第一篇参考链接博文,给了很大的参考意义,感谢该博主。本文在其基础上扩展了一些经验,希望对大家有多帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/517597.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

发明专利公开 -- CSS动画精准实现时钟

上一篇【setTimeout不准时,CSS精准实现计时器功能】的博文,最后提到了通过 CSS 动画实现计时器的方式。 本文详情描述如何通过 CSS 完整实现时钟效果,这也是团队 21 年专利的一项内容(专利公布号:CN114003087A&#x…

Docker安装CentOS7

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。 本教程是关于在CentOS上安装社区版Docker的方法(Docker C…

SCTP:记录一次Diameter消息卡顿延迟问题

SCTP:记录一次Diameter消息卡顿延迟问题 1、背景 客户端:5个接口机 服务端:2个模拟器(模拟HSS,是一个Diameter服务端) 5个客户端的地址是: 10.212.27.2910.212.27.5510.212.24.1710.212.24.1…

js编译、执行上下文、作用域链

参考资料 极客时间课程《浏览器工作原理与实践》 – 李兵 《你不知道的JavaScript》-- Kyle Simpson ES5.1规范:https://262.ecma-international.org/5.1/#sec-10.3 ES6规范:https://262.ecma-international.org/6.0/#sec-executable-code-and-execu…

Redis 五大基本数据类型常见命令

一、redis中的常见数据结构 Redis共有5种常见数据结构,分别字符串(STRING)、列表(LIST)、集合(SET)、散列(HASH)、有序集合(ZSET)。 二、redis中字符串(String)介绍 String 类型是…

小红书内容种草怎么玩,koc铺量原则

一直以来,小红书平台都以其强大的种草力,而备受品牌关注。许多初创品牌更是将平台看做抢占市场的前沿阵地。那么小红书内容种草怎么玩,koc铺量原则是什么呢?今天来为大家详细介绍一下。 一、什么是koc铺量 要做好新品预热的koc铺量&#xff…

存bean和取bean

准备工作存bean获取bean三种方式 准备工作 bean:一个对象在多个地方使用。 spring和spring boot:spring和spring boot项目;spring相当于老版本 spring boot本质还是spring项目;为了方便spring项目的搭建;操作起来更加简单 spring…

有效和无效的帮助中心区别在哪?如何设计有效的帮助中心?

帮助中心就是一个丰富的知识库,可以对企业的潜在客户进行引导。不仅能够提升用户的使用体验还能为企业塑造更加专业的品牌形象,在使用过程中为用户提供帮助。帮助中心的目的就是为了解决用户在使用过程中遇到的困难,同时为用户的使用提供引导…

DC-9通关详解

信息收集 漏洞发现 result.php处存在sql注入 sqlmap跑信息 python sqlmap.py -u http://192.168.45.146/results.php --data search1 -D users -T UserDetails --dump 拿了几个尝试登录都无效 ssh尝试登录直接拒绝了 再看Staff表 查哈希 进后台 多了一个添加记录的功能 没啥…

数据结构(二叉树)

文章目录 一、树的基础概念1.1 树型结构1.2 树型的概念 二、二叉树2.1 概念 性质2.2 二叉树的存储2.2 二叉树的基本操作(1)遍历(2)其他 2.3 二叉树练习 一、树的基础概念 1.1 树型结构 树是一种非线性的数据结构,它…

ChatGPT 由0到1接入 Siri

ChatGPT 由0到1接入 Siri ChatGPT 由0到1接入 Siri第一步:获取 OpenAPI 的 Key第二步:制作快捷指令本教程收集于: AIGC从入门到精通教程 ChatGPT 由0到1接入 Siri 分享如何将 GPT 应用集成到苹果手机的 Siri 中 (当然手机是需要魔法(TZ)的) 第一步:获取 OpenAPI 的…

网络安全可以从事哪些岗位?岗位职责是什么?

伴随着社会的发展,网络安全被列为国家安全战略的一部分,因此越来越多的行业开始迫切需要网安人员,也有不少人转行学习网络安全。那么网络安全可以从事哪些岗位?岗位职责是什么?相信很多人都不太了解,我们一起来看看吧。 1、安全…

电阻阻值读取方法、电容容值的读取方法

电阻、电容的数值读取方法 文章目录 电阻、电容的数值读取方法前言1、电阻读数1.1 贴片电阻1.2.直插色环电阻 2、电容读数2.1 电容单位换算2.2 电容读数方法 前言 现在随着电子产品的不断升级优化,做到体积越来越小了,以前发现还是用得很多直插电阻和一…

百年不用了,今天拾起来 sort() 排序

简单赘述一下需求。 原本前端调用后端接口是自带排序功能的,一般是按照创建单据的时间,后端会处理好返回给我们。 但是有时候有特别的限制,需要前端自行处理排序展示。 如上图所示, 列表和列表扩展行均要根据我们新增或编辑的时候…

ATTCK v13版本战术介绍——防御规避(五)

一、引言 在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化、提权战术理论知识及实战研究、部分防御规避战术,本期我们为大家介绍ATT&CK 14项战术中防御规避战术第25-30种子技术,后续会介绍防御规避其他子技术&#xf…

什么蓝牙耳机好?业内权威蓝牙耳机排名TOP5

蓝牙耳机是当下最热门的数码产品,我个人已经买过十来款蓝牙耳机了,最近逛论坛看到知名数码论坛公布了蓝牙耳机排名TOP5,不懂什么蓝牙耳机好的朋友们在选购时可以从中入围的品牌中进行挑选。 一、JEET Air2蓝牙耳机 推荐理由:舒适…

springboot项目部署教程【本地+云服务器】

目录 前言一、环境准备二、项目导入三、配置Maven四、数据库导入五、启动项目六、浏览器访问结语 前言 springboot项目部署教程用最简单、暴力的方法完成项目导入。 🥇个人主页:MIKE笔记 🥈文章专栏:毕业设计源码合集 ⛄联系博主…

一、LLC 谐振变换器工作原理分析

1 前言 LLC 谐振电路采用脉冲频率调制(PFM),通过改变驱动信号的频率来控制变换器的能量传输。谐振电路中的三个谐振元件为:谐振电感 Lr、谐振电容 Cr 和励磁电感 Lm,它们根据工作模式的不同可形成两个谐振频率。与串联谐振变换器相比&#x…

vue 组件 隐藏内容,点击展示更多功能

效果图 代码 <template><div class"m-text-overflow modules"><div class"l-content" :style"contentStyle"><div ref"refContent"><slot><span v-html"content"> </span></…

基于AT89C52单片机的万年历设计与仿真

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/87777668?spm1001.2014.3001.5503 源码获取 主要内容&#xff1a; 本次设计所提出的一种基于单片机技术的万年历的方案&#xff0c;能更好的解决万年历显示的问题…