英伟达NVIDIA Jetson Xavier NX入门,从裸机环境配置到部署yolov5并成功运行,包括训练自己的模型

1.下载官方镜像(梯子节点换为香港节点)

官方下载网址: 

Jetson Download Center | NVIDIA Developericon-default.png?t=N7T8https://developer.nvidia.com/embedded/downloads

 

2.使用SDFormatter格式化SDK

参考文章:胎儿式保姆级教程:Jetson Xavier NX镜像烧录、开机配置、中文配置、风扇设置、远程桌面、文件传输配置、pycharm安装环境配置,QQ,opencv(cuda编译),torch(GPU)._jeston xavier windows-CSDN博客

3.解压zip镜像得到img文件,用win32diskImager烧录

参考文章:胎儿式保姆级教程:Jetson Xavier NX镜像烧录、开机配置、中文配置、风扇设置、远程桌面、文件传输配置、pycharm安装环境配置,QQ,opencv(cuda编译),torch(GPU)._jeston xavier windows-CSDN博客

4.开机后在应用中找到Language Support设置系统语言为中文

参考文章:

Jeston Xavier NX 语言设置和中文键盘输入_jetson更换语言-CSDN博客

5.换源

参考文章:Jetson Xavier NX 刷机+更换清华源完美讲解_reset the board to boot from internal emmc.-CSDN博客

sudo gedit /etc/apt/sources.list  #打开后将原有源全用#注释掉

在最后一行添加(此处为清华源):

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

添加完Ctrl+s保存,更新源

sudo apt-get update

6.卸载原有OpenCV并重装支持CUDA加速的OpenCV

参考文章:英伟达官方源Jetson Xavier NX安装Ubuntu20.04,配置CUDA,cuDNN,Pytorch等环境教程(基于NVIDIA官方教程,理论适用其它Jetson设备)-CSDN博客

6.1 卸载默认OpenCV

sudo apt purge libOpenCV*
sudo apt autoremove
sudo apt update

6.2 下载 OpenCV 和 opencv_contrib 源码

前往官方仓库https://github.com/opencv下载合适版本的OpenCV和opencv_contrib源码,我选的是4.5.4版本。
下载解压后可以将两者放在主目录下,将opencv_contrib-4.5.4移动到 OpenCV-4.5.4目录下,打开OpenCV-4.5.4目录新建build文件夹用以编译: 
cd opencv-4.5.4
mkdir build
cd build

6.3 编译和安装 OpenCV

在cmake编译之前,手动下载cmake过程中缺失的依赖https://files.cnblogs.com/files/arxive/boostdesc_bgm.i%2Cvgg_generated_48.i%E7%AD%89.rar
(建议Windows下载解压成zip格式通过u盘拷入,Ubuntu系统默认不支持rar格式)
解压后直接拷贝以下文件名的源码,放在opencv_contrib/modules/xfeatures2d/src/ 路径下即可。
boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i

然后打开build文件夹,执行的 cmake命令如下(注意!!这里的cmake命令是一次性输入执行,并不是逐行输入,即将下列命令全部复制到终端执行):

 (其中-D CUDA_TOOLKIT_ROOT_DIR的目录CUDA版本要和本机对应,-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.4/modules \中的opencv_contrib-4.5.4要填写自己所下opencv对应版本,-D CUDA_ARCH_BIN和-D CUDA_ARCH_PTX可以通过jtop命令查看,-D OPENCV_EXTRA_MODULES_PATH建议填写opencv_contrib里modules的绝对路径,-D CMAKE_INSTALL_PREFIX为安装路径。)

cmake \
-D WITH_CUDA=ON \
-D CUDA_ARCH_BIN="7.2" \
-D WITH_cuDNN=ON \
-D OPENCV_DNN_CUDA=ON  \
-D cuDNN_VERSION='8.4' \
-D cuDNN_INCLUDE_DIR='/usr/include/' \
-D CUDA_ARCH_PTX="" \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.4/modules \
-D WITH_GSTREAMER=ON \
-D WITH_LIBV4L=ON  \
-D BUILD_opencv_python3=ON \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_EXAMPLES=OFF \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
..   

然后进行编译安装,全开NX的12线程仍然需要编译较长时间,大概2小时左右

sudo make -j12 (编译100%后需要过一会才会完全编译好,要有耐心)
sudo make install  (这一步也要有耐心)

安装成功后可以通过jtop指令查看,此时INFO界面的OpenCV应该显示:
OpenCV:4.5.4 compiled CUDA:YES

7.检查CUDA

参考文章:

Jetson Nano nvcc -V bash: nvcc: 未找到命令_jetson nvcc-CSDN博客

sudo gedit  ~/.bashrc

打开后在末尾添加以下三行内容:

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_ROOT=/usr/local/cuda

添加完Ctrl+s保存,退出后运行

source ~/.bashrc
nvcc -V

 此时应该能看到CUDA版本

8.下载安装pip

sudo apt-get install python3-pip

9.风扇控制

sudo pip3 install jetson-stats
sudo jtop

按6进入CTRL控制界面,选择COOL,按Q退出

10.远程登陆

10.1通过局域网登录(ssh连接)

使用软件为MobaXterm,进入后选择第一个Session,选择SSH

Remote host (远程主机): 输入Jetson Xavier NX的IP地址。(此IP地址在nx的终端中输入ifconfig,在显示的最后“wlan0”中找到“inet”,后面跟的就是nx的IP地址,填入即可)

Specify username (指定用户名): 输入您在Jetson Xavier NX上的用户名。

点击OK进行连接,连接成功后输入密码即可进入nx

10.2使用VNC服务器登录,此登陆方式有图形操作界面

参考文章:

Ubuntu20.04启用远程桌面:UltraVNC Viewer【稳定】【需要取消桌面版用户开机登录密码 实现自动登录】-CSDN博客

11.安装CUDA(一般来说忽略此步)

 (映像源自带CUDA,若需升级CUDA,此步可参考)

安装前请执行

sudo apt-get update
sudo apt-get install -y build-essential

CUDA官方下载网址: 

CUDA Toolkit 11.8 Downloads | NVIDIA Developericon-default.png?t=N7T8https://developer.nvidia.com/cuda-11-8-0-download-archive?target_os=Linux&target_arch=aarch64-jetson&Compilation=Native&Distribution=Ubuntu&target_version=20.04&target_type=deb_local

12.安装miniconda

(因为NX是arrch64架构,Anconda只支持X86架构,只有miniconda支持ARM架构) 

 去miniconda官网复制适合NX的arrch64架构版本的下载链接:

https://docs.conda.io/projects/miniconda/en/latest/ 

打开终端,使用wget命令下载Miniconda安装包。将以下命令中的<paste_link_here>替换为之前复制的链接:

wget <paste_link_here> -O miniconda_installer.sh

或者直接使用以下命令,但是不排除下载链接会有更新:

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh -O miniconda_installer.sh

然后,运行安装脚本

bash miniconda_installer.sh

查找安装的Miniconda的路径

echo $HOME/miniconda3/bin

打开bashrc文件

gedit ~/.bashrc

在bashrc文件末尾添加:

export PATH="/path/to/your/miniconda/bin:$PATH"
将/path/to/your/miniconda替换为实际安装的Miniconda的路径,即上上步查找显示的路径

Ctrl+s保存退出后运行source ~/.bashrc,使其重新加载.bashrc文件,让终端知道Miniconda的路径

source ~/.bashrc

创建和激活虚拟环境:

conda create --name 666 python=3.11

这会创建一个名为666的虚拟环境 ​,并指定该环境使用 Python 3.11 版本

然后激活此虚拟环境:

666 conda activate 666​

注:虚拟空间位置在miniconda的envs文件夹内

退出虚拟环境:

conda deactivate

13.安装pytorch

参考文章:

Jetson NX系统烧录以及CUDA、cudnn、pytorch等环境的安装_jetson nx cuda-CSDN博客

pytorch版本不能随意安装,必须安装英伟达编译的好的库文件,链接:https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048
选择对应jetpack版本的pytorch文件。

我的是5.0.2的,所以可以选择1.12.0版本的pytorch,点击链接然后下载。
等待下载完成后,安装whl文件:

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

验证pytorch是否安装成功:

python3  #启动Python解释器
import torch  #导入PyTorch
print(torch.__version__)  #检查已安装的PyTorch版本
exit()  #退出Python 3 解释器

14.安装torchvision

参考文章:jetson Xavier nx安装torch和torchvision,并解决解决版本不匹配(报错RuntimeError: Couldn‘t load custom C++ ops)的问题_jetson torchvision-CSDN博客

 下图为pytorch和torchvision的版本对应表,一定要严格按照版本对应关系!!!

 

上一步的pytorch我安装的是1.12.0,所以对应torchvision应该安装0.13.0

GitCode - 开发者的代码家园

下载完成后,和pytorch.whl放在同一目录下

进入文件夹,打开终端,先安装依赖项:

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

解压文件,然后在解压完的文件夹中进入终端,再进入你的conda虚拟环境

进入虚拟环境后输入:

gedit ~/.bashrc      #修改bashrc文件

添加到最后一行,保存退出:

export BUILD_VERSION=0.13.0   

刷新bashrc文件

source ~/.bashrc  

终端继续输入

python3 setup.py install --user

开始编译,会比较久!耐心等待,会有警告,不影响

等跑完,会提示 Finished processing dependencies for torchvision==0.13.0

至此,安装完成!

验证torchvision是否安装成功:

python3  #启动Python解释器
import torchvision  #导入torchvision
print(torchvision.__version__)  #检查已安装的PyTorch版本
exit()  #退出Python 3 解释器

15.YOLO v5,启动!

参考文章:

jetson nano2gb的yolov5gpu开机配置到运行启动代码_jetson nano 2gb flops-CSDN博客

YOLOV5环境快速配置 Jetson Xavier NX 版本(基本详细)_jetson xavier nx yolov5-CSDN博客

目标检测----yolov5调用本地摄像头报错TypeError: argument of type ‘int‘ is not iterable_yolov5调用相机时typeerror: videocapture.get() takes at -CSDN博客

15.1 测试官方的识别模型

下载yolov5源码及其权重文件:

  链接:百度网盘 请输入提取码 (这个源码工程是Gitee中2024-1-7更新的) 提取码:xswl

或者去官网下载最新的:

  最新yolov5源码请访问Gitee工程:

  GitCode - 开发者的代码家园

  最新yolov5的权重文件请访问Github工程:

  https://github.com/ultralytics/yolov5/releases

激活虚拟环境666:

conda activate 666  

自动下载所需的所有依赖项,建议此步换源后执行,更快

pip install -r requirements.txt 

(所有环境和依赖项要求都在yolov5源码中的requirements.txt中,执行此条指令即可自动配置)

进入YOLOV5 目录下,直接运行官方权重文件,调用外置USB摄像头进行目标检测:

cd yolov5-master
python3 detect.py --source 0

此时应该能看到实时显示所识别物体并有多个不同类别的标签以及标记框

15.2 训练自己的模型

Yolov5训练自己的数据集(详细完整版)_yolov5缔宇-CSDN博客

由于我的笔记本性能不够,于是租用云电脑进行训练,选择的是恒源云,链接:恒源云_GPUSHARE-恒源智享云

训练时如有报错,大概率是标注文件或者什么东西的路径没有更改正确,根据报错提示仔细检查

如果有报错:RuntimeError: result type Float can t be cast to the desired output type long int

 参考我这篇:Yolov5训练模型时报错RuntimeError: result type Float can t be cast to the desired output type long int-CSDN博客

 训练完一般来说只需要best.pt这个权重文件,将这个文件放置在自己yolov5工程的weights目录下,如果想使用这个权重,需要在detect.py中第254行修改权重名称为best.py,保存后再执行

python3 detect.py --source 0

此时应该就能使用你自己训练的模型,识别你自己训练的目标了

  • 23
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值