Nvidia jetson nano 部署yolov5_技术文档

news/2024/7/11 1:59:24 标签: YOLO, python, jetson nano, arm

Nvidia jetson nano 部署yolov5_技术文档

每天一句小姜格言:我行,我不是一般人儿

部署开始:

1、通过FileZilla,将window文件传输至jetson nano 上的nano文件夹下。

FileZilla

2、查看cuda

我买的jetson nano是带有配置好的镜像。系统配置如下
系统配置

查看cuda指令
nvcc -V

可能会报错, nvcc:command not found

解决办法:

cd /usr/local/cuda/bin
vi ~/.bashrc
#添加代码,保存并退出
export PATH=“/usr/local/cuda/bin/usr/local/cuda/bin:$PATH”
source ~/.bashrc

再次运行 nvcc -V,应该就可以出结果了

3、配置环境

我的 yolov5 文件夹路径 /home/nano/yolov5/
在yolov5文件夹下,执行以下操作:
#安装requirement.txt文件里的依赖包
sudo pip install -r requirement.txt

#如果不能直接安装的话,就一个一个安装
sudo pip install xxx

python3_detectpy_32">环境安装后,python3 detect.py可以运行

but but but 不是GPU加载,而是CPU,这是由于torch的版本不对,yolov5中torch>=1.7.0,所以换成高版本的就可以了

这里真的要科普一下,arm架构和x86架构

(1)本质区别:X86使用CISC(Complex Instruction Set Computer,复杂指令集计算机),ARM使用RISC(Reduced Instruction Set Computer,精简指令集计算机),ARM英文全称Advanced RISC Machine。

(2)各自追求:X86追求性能最优,缺点是功耗大,不节能(和ARM对比);ARM追求低功耗(节能),缺点是采用精简指令集,导致编译器处理复杂,因此性能相对X86差。

(3)应用领域:X86主要是PC机(Intel、AMD),X86服务器;ARM主要是应用于移动设备(手机、平板电脑等嵌入式领域)。

(4)典型代表:X86结构主要是Intel、AMD等PC电脑;ARM主要是移动终端,IBM的Power PC。
源自:

【架构知多少】谈谈X86架构与ARM架构区别
针对arm架构的jetson ,nvidia官网有对应的torch 文件,需要翻墙,挺难下载的,官网地址

我下载的版本是torch-1.8.0

接着是torchvision-0.9.0,直接使用指令安装

我的安装代码

#这里注意一下,zlib1g-dev这个包,可能会出现 Unable to locate package zlib1g-dev
#出现这个报错,先看看你的字母写错没有,第一个是字母 l ,第二个是数字 1

$ sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev

$ git clone --branch v0.9.0 https://github.com/pytorch/vision torchvision # see below for version of torchvision to download

$ cd torchvision

$ export BUILD_VERSION=0.x.0 # where 0.x.0 is the torchvision version

$ python3 setup.py install --user

$ cd …/

$ pip install ‘pillow<7’

安装torchvision这个包可能还会出现另一个报错

OSError: libmpi_cxx.so.20: cannot open shared object file: No such file or directory

解决办法,登录https://pkgs.org/网址,搜索libmpi_cxx.so.20

在这里插入图片描述

一直往下滑,直到找到 Install How to

在这里插入图片描述

sudo apt-get update
sudo apt-get install libopenmpi2

4、运行程序-成功


http://www.niftyadmin.cn/n/131035.html

相关文章

_Linux (传输层一版本)

文章目录0. 传输层作用1. 再谈端口号1-1 端口号范围划分1-2 认识知名端口号(Well-Know Port Number)1-3 两个问题1-4 netstat1-5 pidof2. UDP协议2-1 UDP协议端格式1. UDP协议如何分离&#xff08;封装&#xff09;&#xff1f;2. UDP协议如何交付&#xff08;应用层- - 客户&a…

Android Vsync原理简析

屏幕渲染原理"现代计算机之父"冯诺依曼提出了计算机的体系结构: 计算机由运算器&#xff0c;存储器&#xff0c;控制器&#xff0c;输入设备和输出设备构成&#xff0c;每部分各司其职&#xff0c;它们之间通过控制信号进行交互。计算机发展到现在&#xff0c;已经出…

锁心葬爱涨停战法

利润和风险同在&#xff0c;成功极高&#xff0c;没有什么技术的请勿冒险&#xff0c;本人不承担任何责任和风险&#xff0c; 盘后选股&#xff0c;放入自选股判断分批介入&#xff0c;无任何未来或隐含变相未来. 记住是盘后选股&#xff0c;次日&#xff0c;开盘分批介入&…

Java面试之网络通信

1、HTTP 超文本传输协议&#xff0c;一种应用层协议。简而言之&#xff0c;就是一种发布和接收html页面的方法&#xff0c;被用于在浏览器和服务器之间传递信息。 默认工作在TCP协议80端口&#xff0c;以明文传输数据&#xff0c;不安全。 2、HTTPS 超文本传输安全协议&…

java 中的equals()示例代码

Java中的equals()是十分重要的&#xff0c;和要区别开来简述public booleanequals(Object obj)作用&#xff1a;判断其他的对象是否和该对象相等其比较规则为&#xff1a;当参数obj引用的对象与当前对象为同一个对象时&#xff0c;就返回true,否则返回false.简单示例equals()方…

入门JAVA第十七天 Oracle的JDBC技术

一、数据库JDBC技术学习内容与方法 1.1 学习内容 &#xff08;1&#xff09; Oracle数据库 目前最好的关系型数据库。 基本的CRUD命令 SQL语句。select(R),update(U),delete(D),insert(C) &#xff08;2&#xff09; MySQL数据库 中小型项目非常好用的关系型数据库。 灵活&…

JavaScript新手学习手册-基础代码(三)

与上篇博客相接 一&#xff1a;Date对象 var date new Date();console.log(date); //全部时间console.log(date.getFullYear()); //年console.log(date.getMonth()); //月console.log(date.getDay()); //星期几console.log(date.getHours()) //时console.log(d…

Flink相关介绍

简介 Flink的定位是&#xff1a;Apache Flink是一个框架和分布式处理引擎&#xff0c;如图所示&#xff0c;用于对无界和有界数据流进行有状态计算。Flink被设计在所有常见的集群环境运行&#xff0c;以内存执行速度和任意规模来执行计算。 Flink 框架处理流程应用场景 1、电…