1.硬件选型
1.购买jetson nano A02 4GB
2.Jetson Nano A02、B01和2Gb版本的区别(为什么选择A02)
- 参数比较
- 硬件区别
从表中我们可以看出,旧版的4Gb A02 Jetson Nano和新版的B01 Jetson Nano的差别只是少了一个CSI摄像头接口,而新的 Jetson Nano 2GB的明显区别是少了2Gb的内存和接口上的差异。 Jetson Nano 2GB 没有了Display Port,只留下 HDMI 端口连接外部显示器。USB连接器也发生了变化。 只有一个 USB 3.0 和一个 USB 2.0。 对于无线连接,Jetson Nano 2GB 没有了M2接口,要使用Wifi,只能使用Usb的 802.11ac 无线适配器
- 软件区别
自从JetPack 4.4.1以后,A02和B01的Jetson Nano Image可以互相通用,在Nividia论坛的这里有讨论,虽然我还没测试过,但我记得4.3之前的版本我测试过不能混用。至今4Gb版本和2Gb版本还不能混用,所以如果要做系统迁移,这里是需要注意的。下图是4.5.1的JetPack还是区分4Gb和2Gb的image。
- 总结:如果没有双摄像头的需求是,A02是B01版本的完美替代,A02结构图如下
3.其他硬件选型
- 无线网卡AC8265 2.4/5G蓝牙 4.2PCB天线(将网卡嵌入开发板)
- 5V4A DC供电电源(DC供电需要加跳线帽,USB供电则不需要)
- 连接板子的 鼠标、键盘和显示屏(可能需要VGA转HDMI的转换器)
- 16GB及以上SD卡(建议准备64G以上)+读卡器
- USB摄像头(RGB摄像头,YOLO只能直接读取RGB摄像头,CSI摄像头无法直接使用)
2.镜像下载烧录
1.Jetson镜像下载
什么是NVIDIA JetPack? JetPack包括带引导加载程序的Jetson Linux、Linux内核、Ubuntu桌面环境以及一整套用于加速 GPU计算、多媒体、图形和计算机视觉的库。
下载地址(使用魔法下载更快): https://developer.nvidia.com/embedded/downloads
找到Jetson Nano Developer Kit SD Card Image,版本为4.6.1,点击下载即可
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
2.jetpack不同版本适用于不同的开发板
3.镜像烧录
- 下载内存卡格式化工具和烧录工具
格式化工具:SDF官网: https://www.sdcardformatter.com/download/
烧录工具:Win32官网: https://sourceforge.net/projects/win32diskimager/
-
格式化TF卡
-
烧录镜像至开发板
显示“写入成功”后,就可以把内存卡插入到jetson nano
3.初始化jetson nano a02
1.硬件设置
1.准备显示器,HDML线和显示器电源线,将显示器连接开发板
2.软件设置
1.选择语言页面选择中文简体,其他全部设置默认,设置用户密码:账号:ubuntu,密码:ubuntu
2.进入初始化页面之后点击wifi,选择相应的网络进行连接,并点击连接信息,获取本机IPv4地址
3.远程连接
SSH连接(只显示终端,较为流畅):下载并安装WindTerm,点击新建会话,输入jetson nano的IP地址,输入账号和密码即可连接成功
VNC连接(显示全屏,较为卡顿):下载并安装VNC,并配置Vino,安装VNC后,在顶部输入开发板的ip地址,回车即可进行连接
Vino配置:Vino 是 GNOME 桌面环境中的一个远程桌面服务器,它实现了 VNC 协议,允许其他设备通过 VNC 客户端远程访问并控制运行 GNOME 桌面环境的计算机。
- 查询是否有Vino服务(出现版本号则不需要安装)
使用命令来查看是否有vino服务器:dpkg -l | grep vino
- 没安装的话,需要安装一下
sudo apt update
sudo apt install vino
- 设置vino属性
gsettings set org.gnome.Vino require-encryption false
gsettings set org.gnome.Vino prompt-enabled false
gsettings set org.gnome.Vino authentication-methods "['vnc']"
- 设置vnc连接密码,这里设置的是ubuntu
gsettings set org.gnome.Vino vnc-password $(echo -n 'root' | base64)
- 设Enable VNC 服务
sudo ln -s ../vino-server.service /usr/lib/systemd/user/graphical -session.target.wants
- 编辑xml配置文件
sudo nano /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml
若未安装nano编辑器软件,运行以下命令,安装一下编辑器。重新执行上面的命令
sudo apt update
sudo apt install nano
- xml文件最底部,增加一项配置(python缩进严格)
<key name='enabled' type='b'>
<summary>Enable remote access to the desktop</summary>
<description>
If true, allows remote access to the desktop via the RFB protocol. Users on remote machines may then connect to the desktop using a VNC viewer.
</description>
<default>false</default>
</key>
修改完后,按ctrl+X退出,输入y回车确认
- 设置为Gnome编译模式
sudo glib-compile-schemas /usr/share/glib-2.0/schemas
- 重启电脑
sudo reboot
4.设置winSCP传输工具
下载地址:winSCP官网下载地址:https://winscp.net/eng/download.php
左侧是本机电脑的文件,右侧是远程开发板的文件;选中文件后,可以上传或者下载实现传输
4.系统资源设置
1.修改下载源
- 首先备份源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup
- 打开sources.list文件,把里面的内容,替换为下方的下载源。
sudo nano /etc/apt/sources.list
- 下载源
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
- 输入 ctrl+x ,然后输入 y 回车确认即可修改完成
2.设置CUDA系统变量
默认的jetpack镜像包里面,已经封装有cuda显卡驱动了,不需要重复安装,只需要添加把它的路 径添加到系统环境变量就行
- 打开bashrc配置文件
sudo nano ~/.bashrc
- 添加以下内容
export CUDA_HOME=/usr/local/cuda-10.2
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.2/bin:$PATH
- 更新文件,并查看是否生效
source ~/.bashrc
nvcc -V
3.安装miniconda
是python包管理器,可以通过conda和pip命令安装python包,用于隔绝环境
- 下载官网地址: https://docs.anaconda.com/miniconda/
- jetson nano是aarch架构,下载这个版本: Miniconda3 Linux-aarch64 64-bit版本:https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh
- 将安装包下载完之后直接通过winSCP传到开发板
- 开始安装
bash Miniconda3-latest-Linux-aarch64.sh
- 一直按回车键确认, 直到出现选择yes no的界面,然后输入 yes,之后直接按回车确认就行
- 安装完后,更新一下系统配置文件
source ~/.bashrc
- 当终端的前面,多了一个括号(base)就说明安装好了
4.修改miniconda下载源
conda config --set show_channel_urls yes
- 使用编辑器,打开.condarc
nano ~/miniconda3/.condarc
- 选择清华源粘贴进去,ctrl+x,y,回车确认退出即可
channels:- defaults
show_channel_urls: true、
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
5.部署yolov8
1.下载YOLOv8源码
下载完成之后解压源码,将文件夹命名为yolov8,并通过winSCP传入开发板根目录中
2.在根目录下创建虚拟环境
conda create -n yolov8 python=3.8 -y
3.进入虚拟环境
conda activate yolov8
4.进入到yolov8环境,并且cd打开到yolov8的目录
5.安装依赖
(在安装前,需要注意先把pytorch相关的注释掉,否则无法调用英伟达加速)
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
6.安装pytorch GPU版
- 在开发板根目录新建文件夹pytorch
- 通过winSCP把安装包(torch-1.11.0a0+gitbc2c6ed-cp38-cp38 linux_aarch64.whl和torchvision-0.12.0a0+9b5a3fe-cp38-cp38-linux_aarch64.whl)传输到开发板pytorch文件夹中
- 通过cd命令,打开pytorch文件夹,开始安装
pip install torch-1.11.0a0+gitbc2c6ed-cp38-cp38-linux_aarch64.whl torchvision 0.12.0a0+9b5a3fe-cp38-cp38-linux_aarch64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple/
- 安装常见依赖库
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
- 安装libopenmpi
wget http://ports.ubuntu.com/pool/universe/o/openmpi/libopenmpi2_2.1.1 8_arm64.deb
sudo dpkg -i libopenmpi2_2.1.1-8_arm64.deb
- 若安装报错,运行下方的命令
sudo apt-get install libhwloc5 libhwloc-plugins
sudo apt-get update && sudo apt-get upgrade
- 出现OSError: libomp.so.5: cannot open shared object file: No such file or directory
sudo apt-get update
sudo apt-get install libomp-dev
sudo apt-get install libomp5
- 出现报错:有未能满足的依赖关系。请尝试不指明软件包的名字来运行“apt --fix-broken install”
sudo apt --fix-broken install
- 出现报错则:ImportError: libopenblas.so.0
sudo apt-get install libopenblas-dev
- numpy版本降级
pip uninstall numpy
pip install numpy==1.23.5 -i https://pypi.tuna.tsinghua.edu.cn/simple/
- 测试是否安装成功
python
import torch
print(torch.cuda.is_available())
输出返回True的时候,pytorch版安装成功
6.测试yolov8
1.在yolov8虚拟环境中进入yolov8目录
python wzq.py
或者
yolo predict model=yolov8n.pt source="ultralytics/assets/bus.jpg"
看到运行结果保存到run目录下
2.转换onnx格式加速
- 安装环境依赖:onnxruntime_gpu-1.11.0-cp38-cp38-linux_aarch64.whl
- 上传安装包至开发板(yolov8目录)
- 开始安装
pip install onnxruntime_gpu-1.11.0-cp38-cp38-linux_aarch64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install onnx -i https://pypi.tuna.tsinghua.edu.cn/simple/
- 把pt模型,转为onnx格式
yolo export model=yolov8n.pt format=onnx device=0
- 测试是否转换成功
yolo predict model=yolov8n.onnx source="ultralytics/assets/bus.jpg"
3.导出TensorRT格式
- 安装环境依赖
所需要的安装包:
tensorrt-8.2.3.0-cp38-none-linux_aarch64.whl
onnxruntime_gpu-1.16.0-cp38-cp38-linux_aarch64.whl
- 上传至开发板(yolov8目录)
- 然后安装
pip install tensorrt-8.2.3.0-cp38-none-linux_aarch64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install onnxruntime_gpu-1.11.0-cp38-cp38-linux_aarch64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install onnx -i https://pypi.tuna.tsinghua.edu.cn/simple/
- 开始转换,转换yolov8n.pt为yolov8n.engine
yolo export model=yolov8n.pt format=engine
- 测试是否导出成功
yolo predict model=yolov8n.engine source="ultralytics/assets/bus.jpg" device=0
4.测试摄像头检测
yolo predict model=yolov8n.engine source=0 device=0
5.增加参数实时显示画面:show=True
yolo predict model=yolov8n.engine source=0 device=0 show=True
6.保存训练的结果,可以增加参数:save=True
yolo predict model=yolov8n.engine source=0 device=0 show=True save=True
以上为粗略笔记,感谢各位浏览至此