Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)

Jetson Xavier NX 系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)

文章目录

  • Jetson Xavier NX 系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)
  • 前言:
  • 一 、NX系统烧录
    • 1.1 硬件条件准备
    • 1.2 烧录系统软件
    • 1.3 下载官方镜像
    • 1.4 格式化SD卡开始烧录
  • 二、NX开机详细教程
    • 2.1 开机流程
    • 2.2 开机后准备工作
    • 2.3 python3 pip下载
    • 2.4 换源
    • 2.5 安装中文系统环境和输入法
  • 三、 YOLOv7环境搭建
    • 3.1 yolov7的基础环境如下图所示:
    • 3.2 源码下载
    • 3.3 依赖关系
    • 3.4 pip强制安装
    • 3.5 验证opencv
    • 3.6 安装numpy
    • 3.7 Pythorch和torchvision安装(关键问题)
  • 四、 运行YOLOv7
    • 4.1 准备运行
    • 4.2 文件结构修改
  • 五、常见问题总结
    • 问题1.提示非法指令,核心已转储。
    • 问题2:运行时疯狂报警告
    • 问题3:出现make: 没有规则可制作目标“install”。 停止。
    • 问题4:python3.9下错误,pip安装matplotlib卡在Building wheel for matplotlib (setup.py)..不动的原因与解决
    • 问题5:OSError: Python library not found: libpython3.8.so, libpython3.8m.so
    • 问题6:及时备份系统制作镜像
  • 结尾

Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第1张图片

Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第2张图片

前言:

对于刚开始学习人工智能模型部署jeston 设备的同学来说,NX无疑是一款值得选购的产品,性能、结构各方面均在同系列的产品里面拔得头筹。最近,我也作为一个初学者的身份来熟悉、使用、了解之后,同时使用了多个版本的NX操作系统之后,对于YOLOv7环境完成搭建,并将在后续将继续完成RT加速等工作,在CSDN关注了好长时间,终于自己也搭建了一点环境,目前还没有看到在NX给大家作为总结和未来学习的一点资料。希望可以帮助到大家,本文章亲测所用方法均有效。

一 、NX系统烧录

1.1 硬件条件准备

jeston nx电路板、原装充电器、有线鼠标(USB)、有线键盘(USB)、有线摄像头(USB)、显示屏(显示屏有一个就可以,大屏幕更加方便)、SD卡(128G推荐)、读卡器(必备)、笔记本电脑(Win-10)、WIFI网络环境(必备)、、linux系统主机(不必备)

1.2 烧录系统软件

Win32DiskImager、balenaEtcher(SD卡镜像烧录软件)、DiskGenius(SD卡格式化软件)、NX镜像文件(提前在官网下载)

NX系统说明:目前官网主流下载的操作系统为jeston 4.4 18.04版本、python3.6.9/2.7
本文所使用的操作系统为jeston 5.0 20.04 、 python3.8 (推荐)

1.3 下载官方镜像

链接

https://developer.nvidia.com/zh-cn/embedded/downloads#?search=Jetson%20Xavier%20NX%20Developer%20Kit%20User%20Guide

1.4 格式化SD卡开始烧录

1.4.1 首先要准备一张SD卡,将SD卡插入电脑或使用读卡器插入电脑,按照以下顺序进行操作。

方法一:1)下载,安装和启动适用于Win的sd卡格式化程序SD Formatter。 2) select card选择sd卡驱动器 对应的卷标 3) 选择“快速格式” 4)将“卷标”留空 5)单击“格式”开始格式化,并在警告对话框中单击“是” 6) 格式化以后sd卡就可以进行下一步的镜像刷写。

Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第3张图片

方法二:打开如上图的软件DiskGenius,进行选择SD卡右键点击清除所有分区,点击左上角保存更改,再点击可移动磁盘区域,进行建立新分区,再次点击保存更改,弹出格式化选择即可。得到的结果是PC端重新显示可使用的u盘,如下图。

在这里插入图片描述

1.4.2 开始烧录

Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第4张图片
**方法一:**打开Win32DiskImager,在imageFile那一栏右侧文件夹符号边上选择你SD卡对应的盘符号,然后点击蓝色小文件夹图标,打开你下载镜像的目录,镜像应该是解压完毕的名字叫sd-blob。点击打开以后再点击Win32DiskImager的Write按钮进行写入,写入完毕以后Windows会看不见,也无法读取SD卡,这是正常现象,因为系统已经刷进去了,文件系统不兼容了。

方法二:使用官方提供的烧录软件(推荐)

首先点击从文件烧录,选择本地镜像文件或者压缩文件,会显示img格式文件即可,然后
系统会自动选择可使用的空u盘,注意看清是否是u盘,点击烧录即可耐心等待!(如下图图片顺序对应操作即可·有点慢~)Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第5张图片Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第6张图片
Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第7张图片
Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第8张图片
最后提示烧录成功即可将sd卡插入NX连接鼠标键盘显示器,开启开机前准备处理!

二、NX开机详细教程

注意:18.04系统与此系统步骤大致相同,但是会因为系统本身环境不一致可能导致安装的版本环境不一样略有区别,有区别的地方我尽量给大家提示出来。

2.1 开机流程

Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第9张图片
2.1.1 选择‘我同意’然后继续continue即可

Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第10张图片
1. 选择语言:英语即可
Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第11张图片
2. 连接本地WiFi输入密码即可
Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第12张图片
3. 选择地区 上海即可
Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第13张图片
4. 用户名 、密码自己设置一下(密码随意,但是每次sudo都需要输入、耽误时间)
Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第14张图片
5. 这一步在网络环境好的安装,耐心等待一会儿
Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第15张图片
6.最后一步啦,当你看见绿色眼睛时,即证明系统烧录正确,开机设置正确。(online accounts选择一下也行)
如果等待很久仍未看见绿色眼睛的屏幕,建议换个系统烧录一下再试。

2.2 开机后准备工作

2.2.1 重中之中 风扇!!!!!!!

一定要想办法让风扇转起来,否则NX电路板温度过高会导致损坏,后果极其严重。

注意:18.04系统执行一行指令即可

sudo sh -c "echo 150 > /sys/devices/pwm-fan/target_pwm"

而20.04的系统需要安装jtop手动控制风扇转

操作方法展示如下:

**#安装pip3**
 sudo apt install python3-pip
# 安装Jtop工具
sudo -H pip3 install jetson-stats==4.0.0rc2
# **Jetpack5.0.0以上版本目前仅支持测试版本的jtop**
 
# 启动测试jtop工具
sudo jtop

Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第16张图片
如图所示情况,fanmode选择 manual,点击左侧p增加转速,全屏可直观看见fan的运行情况,如果不启动风扇的话,温度达到一定时候系统也会自行运转(不清楚会不会损坏,所以还是建议大家手动打开风扇。)

2.2.2 换源: 使用操作指令之前对系统进行国内清华源的更换

1.输入指令:

sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list

将之前的删掉或者注释掉(用#注释)

在这里简单给大家介绍一下vim的基本操作方式吧,
按下’a’插入,编写完成后按一下esc键,输入‘:wq!’保存退出(注意有冒号)

然后终端输入更新指令:

sudo apt-get update

#加入清华源,或者其他的比如阿里云,中科大,豆瓣等等都可以使用。

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main universe restricted
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main universe restricted
 

2.3 python3 pip下载

sudo apt-get install python3-pip

升级一下pip保证是最新版的:

pip3 install --upgrade pip

2.4 换源

通过编辑pip的配置文件进行设置,方法如下:

修改 ~/.pip/pip.config:

mkdir ~/.pip
vim ~/.pip/pip.conf

添加内容如下:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn

2.5 安装中文系统环境和输入法

注意:
这部分不需要的同学就不用看了
推荐大家还是使用英文系统环境,方便编译环境的时候错误查询、理解的更深刻一些。

18.04系统和20.04系统均有中文系统选择,但是20.04自带中文拼音输入法,而18.04的系统需要自行下载。(点击更新系统安装包即可)
Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第17张图片
选择Chinese(china)选择并应用到整个系统,如果此时提示install安装新的包,点击确认即可完成操作。(没有中文输入影响也不大。)

附:如果大家想利用NX完成视频录制工作,连接Usb摄像头或者Csi摄像头均可完成此项操作,最新版的NX富含了多种App可供大家进行操作。
Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第18张图片
其中截图包含全屏截图,区域截图等等有效信息,非常适合我们在linux系统中运行程序后记录检测结果。

另外:据我所知,我们甚至可以在NX上下载linux版本的qq,感兴趣的小伙伴可以自行在qq官网下载。
Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第19张图片
如上图所显示的是系统所包含的一些基础程序方便。

至此,开机教程到此ok完成,按照我的流程可以很顺利的开展下面的工作(牺牲了三个系统的经验QAQ),接下来我们就可以准备搭建YOLOv7的运行环境了。
注意:首先做事情之前我们需要了解我们的目的,我们要干什么,才能去想接下来的事情,目前我们已经对NX设备有一个基础的了解,然后需要对YOLOv7模型进行简单了解,对我们所需要搭建的环境对应了解后,仔细观察系统本身的环境与所需要的环境的差别,下面开始操作。

三、 YOLOv7环境搭建

3.1 yolov7的基础环境如下图所示:

Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第20张图片
主要运行时需要注意的是对于pythorch和torch vision的下载是比较麻烦的,其余的可以在系统终端直接执行下载指令。由于torch不支持直接在ARM环境中下载编译,因此在终端执行下载方式编译出来的torch很可能出现各种问题,所以我们需要在PC端下载后使用u盘进行传输安装包后方可下载编译。

3.2 源码下载

使用如下指令

 git clone https://github.com/shouxieai/tensorRT_Pro.git

3.3 依赖关系

大部分软件直接安装就好,但有些软件需要依赖其他一些软件来运行,这就是依赖关系,而你的电脑里没有相关的支持软件,Ubuntu就会提示缺少依赖关系。比如你要安装A软件,Ubuntu提示缺少依赖包B,于是你再安装B,然后又提示缺少依赖包C,于是你再安装C,又提示你缺少依赖包D……这就是依赖循环问题,这时就需要dpkg指令来处理这些依赖关系。

dpkg安装deb包时缺少依赖关系解决办法:

使用或者sudo apt-get -f install来修复,-f参数用来解决包依赖的问题,修复完之后再使用dpkg安装:sudo dpkg -i XXX.deb,-i参数的意思是安装软件包

3.4 pip强制安装

使用pip install指令时,系统会提示已经存在该软件,但不是你需要的版本,这就要用到**–force-reinstall**,具体方法如下,以PyYAML为例,

sudo pip3 install PyYAML==5.4.1

强制安装5.4.1版本的PyYAML,如果不指定版本,默认安装最新版本。

3.5 验证opencv

验证方法输入

          python3
          import cv2
          cv2.__version__

输出正确的cv2版本则证明系统自带的python3.8,对应好自己的opencv且不影响yolov7的文件运行
(but:此时的这个opencv是不支持cuda一起使用的,如果想希望利用cuda加速,后续我们将卸载系统自带的opencv再次下载)

3.6 安装numpy

首先安装依赖关系:

sudo apt-get install cmake libopenblas-dev liblapack-dev libjpeg-dev
sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran
sudo apt-get install git cmake libpython3-dev python3-numpy

不出意外的情况下系统此时会报没有camke的指令的错误:
遇到问题去解决问题,所以我们接下来去查看系统里到底有没有cmake,查看是否版本不支持,如果没有那我们进行下载,下载cmake的过程中仍然会遇到报错,遇到情况再去解决,但是我们不要忘记自己的初心:解决问题的时候是为了安装numpy(心路历程)

逐步安装cmake:官网下载安装包(注意版本别太高就行)

打开压缩包所在文件夹,解压包

tar -xzvf cmake-3.18.0-rc1.tar.gz

打开解压后的文件夹

cd cmake-3.18.0-rc1

运行命令:

./configure

[PS] 此处可能报找不到OpenSSL的错,解决方法是编辑CMakeLists.txt文件,在文件开头加:

set(CMAKE_USE_OPENSSL OFF)

运行指令

make

运行指令

sudo make install

到这里安装就完成了。

验证安装:
a) 检查CMake版本:

cmake --version

b) 检查编译器路径:

sudo cmake ../

简单提一下自己在安装过程卡住了一个简单小问题:出现如下的错误:
解决方法:非常简单!! 前面加上sudo就可以了
(一开始我想到的很复杂,查了很多帖子,试了好多方法,都没有成功解决,最后才发现自己这么傻,所以我们自己觉得遇到的问题很可能不是问题,偶尔换换方法,也许就解决了,要集思广益、不要一条路走到黑。)
Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第21张图片

3.7 Pythorch和torchvision安装(关键问题)

3.7.1 安装环境依赖

sudo apt-get install cmake libopenblas-dev liblapack-dev libjpeg-dev
sudo pip3 install adafruit-circuitpython-servokit

安装:

sudo apt-get install python3-pip libopenblas-base libopenmpi-dev
pip3 install Cython
pip3 install torch-1.8.0-cp36-cp36m-linux_aarch64.whl(注意改文件名)

再给大家介绍一个坑:文件名cp36必须要换成cp38,不然就会一直报错,因为我们这个系统使用的python3.8!!!

安torch vision:

git clone -b v0.8.1 https://hub.fastgit.org/pytorch/vision.git
cd vision
sudo python3 setup.py install

或者更快的方法一条指令:(有效)

pip3 install torch==1.6.0 torchvision==0.7.0 torchaudio==0.9.0 -f https://torch.kmtea.eu/whl/stable-cn.html

测试:

测试torch是否能用,打开python3,输入

import torch
import torchvision

Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第22张图片
得到如上图结果即正确。

四、 运行YOLOv7

4.1 准备运行

搭建完torch环境之后,后续的问题就显得简单了很多,首先我们进入如下图的YOLOv7文件中,找到detect.py文件,进行对希望运行的模型和输入路径进行修改,接下来运行输入:

python3 detect.py

你以为这么顺利就会出结果了嘛,哈哈,其实还会陆续报出来一些安装包没有进行安装的问题(自行安装即可)

例如:

numpy
timm 
seaborn

这几个相对简单,对版本没有过分的要求

我们直接运行命令

pip3 install ...#加文件名即可

4.2 文件结构修改

Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第23张图片

YOLOv7的文件结构,注意detect文件的位置点开如下
Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第24张图片

修改上面两处位置即可运行自己像输入的图片与模型啦!

Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第25张图片

图片效果还是蛮不错的,推理时间问题有待提升,也是我在思考的问题。

五、常见问题总结

问题1.提示非法指令,核心已转储。

这是因为jetson自带python环境,这个环境里自带numpy-1.13.3,安装的torch里面也带一个numpy,调用torch时产生冲突。

Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第26张图片

解决方法:降低numpy的版本

python -m pip install numpy==1.23.1

问题2:运行时疯狂报警告

Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)_第27张图片

解决方法:

export OMP_NUM_THREADS=1

按照它警告里写的,重装openblas,带上USE_OPENMP=1这个参数

问题3:出现make: 没有规则可制作目标“install”。 停止。

解决方法

sudo make install  #...

问题4:python3.9下错误,pip安装matplotlib卡在Building wheel for matplotlib (setup.py)…不动的原因与解决

解决方法

1. 建议换一个源替换一下试试
2. 卸载python重新安装(不建议!!)

问题5:OSError: Python library not found: libpython3.8.so, libpython3.8m.so

再看这个提示–enable-shared,让我们安装的时候带上这个参数,因为安装python的时候,我没有加,所以,要重装Python,进入到Python文件使用

./configure --prefix=/usr/local/python3 --enable-shared

然后

make && make install

现在再次打开python的时候,会报错,

ImportError: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory

需要依次执行

echo "/usr/local/python3/lib/" >> /etc/ld.so.conf
ldconfig

问题6:及时备份系统制作镜像

1. 可以选择用输入指令的方法,但是!!!太多都是用Linux主机操作了,手里没有条件的小伙伴看方法2

2. 建议利用烧录系统的软件,烧录时我们是选择write,反过来我们选择read就变成img镜像了(提前建立一个空的img文件在电脑)

3.一定要备份系统,否则再来一遍只会加深你的印象,我通过几天时间搞了4个操作系统,为了写这篇文章,甚至给大家重新搞一个新的系
统做教程,除了枯燥也是加深对设备的理解,看个人喜欢,建议多准备几张sd卡没有坏处。

结尾

以上就是我近一周时间所做已经所总结的一些内容,对于整个操作流程和心路历程都摸索了一遍,这个过程是枯燥享受的,枯燥在搭环境的过程中不知道会出现什么奇葩问题,享受在使用如此昂贵的好性能的设备,解决问题后的成就感,我也作为一个初学者有幸参与其中,其中难免参考了许多大佬的资料和介绍,最终结合适合自己的集思广益的方法,适合作者的方法不一定就适合大家,所以建议大家有机会的话还是可以自己尝试走一步流程,我的步骤一方面是总结方便日后自己的建设,一方面希望有幸如果可以帮助到大家便更加有成就感了,如果大家对我这篇文章感兴趣的话,后续我还将继续测试jeston设备的性能以及学习YOLOv7优化加速路线,如果有机会的话希望仍会继续为大家分享经验(互相交流)。
让我们下一篇再见!

你可能感兴趣的:(深度学习,目标识别,python,人工智能,计算机视觉,深度学习,目标检测)