news 2026/6/11 11:33:09

Jetson Nano实战YOLOv5:从镜像烧录到模型推理的避坑指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Jetson Nano实战YOLOv5:从镜像烧录到模型推理的避坑指南

1. Jetson Nano与YOLOv5的完美邂逅

第一次接触Jetson Nano和YOLOv5是在去年的一个计算机视觉比赛上。当时需要在边缘设备上部署目标检测模型,经过多方比较最终选择了这个组合。说实话,刚开始踩了不少坑,网上的资料要么过于零散,要么版本不兼容。经过一周的折腾,终于摸清了从系统烧录到模型推理的完整流程,现在把这些经验分享给大家。

Jetson Nano作为NVIDIA推出的边缘计算设备,搭载了128核Maxwell架构GPU和四核ARM Cortex-A57 CPU,虽然性能比不上桌面级显卡,但在功耗和价格上优势明显。而YOLOv5作为当前最流行的目标检测算法之一,以其速度快、精度高、易于部署的特点,成为边缘设备上的首选。

这个教程适合以下几类开发者:

  • 需要在嵌入式设备上部署目标检测模型的工程师
  • 对AI边缘计算感兴趣的学生和研究者
  • 希望将深度学习模型落地到实际项目中的实践者

2. 系统镜像烧录全攻略

2.1 准备工作

在开始之前,你需要准备以下硬件:

  • Jetson Nano开发板(建议4GB版本)
  • 至少32GB的microSD卡(推荐使用U3速度等级的卡)
  • 5V4A的电源适配器(官方推荐,避免供电不足)
  • 读卡器(用于烧录系统镜像)

我最初用的是16GB的SD卡,结果发现空间根本不够用。后来换了64GB的卡,整个过程就顺利多了。这里特别提醒:不要贪图便宜买低速卡,否则后续模型加载和推理时会明显卡顿。

2.2 下载系统镜像

官方提供了两个版本的镜像:

  • Jetson Nano Developer Kit SD Card Image(完整版)
  • JetPack SDK(需要手动安装)

对于新手,我强烈推荐直接使用SD卡镜像,省去了很多配置麻烦。下载地址在NVIDIA开发者网站,搜索"Jetson Nano SD Card Image"就能找到最新版本。我使用的是4.6.1版本,自带Ubuntu 18.04和Python 3.6环境。

2.3 烧录步骤详解

  1. 使用SD Card Formatter工具格式化SD卡(注意:这会清除卡上所有数据)
  2. 下载balenaEtcher烧录工具(跨平台支持Win/Mac/Linux)
  3. 选择下载好的.img镜像文件和目标SD卡
  4. 点击"Flash!"开始烧录(这个过程大约需要10-15分钟)

我第一次烧录时遇到了一个坑:直接使用Win32DiskImager导致系统无法启动。后来改用Etcher就再没出过问题。烧录完成后,系统会提示你拔出SD卡——千万别急着拔!等待所有写入操作完成,安全弹出后再物理拔出。

3. 系统配置与优化

3.1 首次启动设置

插入SD卡,连接显示器、键盘鼠标后开机,你会看到标准的Ubuntu初始化界面。这里有几个关键步骤:

  1. 选择语言和时区(建议选英文+上海时区)
  2. 创建用户名和密码(记住这个密码,后续sudo命令需要)
  3. 配置磁盘空间(默认即可)
  4. 完成安装后重启

第一次启动可能会比较慢,耐心等待。进入桌面后,建议先打开终端,运行以下命令开启root账户:

sudo passwd root

然后设置root密码。这在后续安装某些需要高权限的软件时会很方便。

3.2 更换软件源

默认的软件源速度很慢,我们需要换成国内镜像。这里以清华源为例:

  1. 先备份原始源列表:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  1. 编辑源列表:
sudo nano /etc/apt/sources.list
  1. 删除所有内容,替换为:
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
  1. 更新软件包列表:
sudo apt-get update && sudo apt-get upgrade -y

3.3 CUDA环境配置

Jetson Nano已经预装了CUDA,但需要手动配置环境变量才能使用:

  1. 编辑.bashrc文件:
nano ~/.bashrc
  1. 在文件末尾添加:
export PATH=/usr/local/cuda-10.2/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} export CUDA_ROOT=/usr/local/cuda
  1. 使配置生效:
source ~/.bashrc
  1. 验证安装:
nvcc -V

如果看到CUDA版本信息,说明配置成功。

4. PyTorch与依赖安装

4.1 安装系统依赖

在安装PyTorch前,需要先安装一些基础依赖:

sudo apt-get install python3-pip python3-dev -y sudo apt-get install build-essential make cmake cmake-curses-gui -y sudo apt-get install git g++ pkg-config curl -y sudo apt-get install libatlas-base-dev gfortran -y sudo apt-get install libhdf5-serial-dev hdf5-tools -y

4.2 安装PyTorch for Jetson

由于Jetson Nano采用ARM架构,不能直接使用PyTorch官方提供的x86版本。需要安装NVIDIA专门为Jetson系列编译的版本。

  1. 下载PyTorch 1.8的whl文件(适用于JetPack 4.6)
  2. 使用pip安装:
sudo pip3 install torch-1.8.0-cp36-cp36m-linux_aarch64.whl

这个过程会比较慢,耐心等待。安装完成后可以验证:

import torch print(torch.__version__) print(torch.cuda.is_available())

如果输出True,说明PyTorch可以正常使用CUDA加速。

4.3 安装torchvision

torchvision版本需要与PyTorch匹配。对于PyTorch 1.8,我们安装torchvision 0.9.0:

  1. 先安装依赖:
sudo apt-get install libopenmpi2 sudo apt-get install libopenblas-dev sudo apt-get install libjpeg-dev zlib1g-dev
  1. 从源码编译安装:
git clone --branch v0.9.0 https://github.com/pytorch/vision torchvision cd torchvision export BUILD_VERSION=0.9.0 sudo python3 setup.py install

5. YOLOv5部署实战

5.1 下载YOLOv5源码

推荐使用v5.0版本,这个版本在Jetson Nano上兼容性最好:

git clone -b v5.0 https://github.com/ultralytics/yolov5.git cd yolov5

5.2 安装Python依赖

YOLOv5需要一些额外的Python包:

sudo pip3 install matplotlib==3.2.2 sudo pip3 install numpy==1.19.4 sudo pip3 install scipy==1.4.1 sudo pip3 install opencv-python==4.5.3.56 sudo pip3 install tqdm==4.61.2 sudo pip3 install seaborn==0.11.1 sudo pip3 install tensorboard==2.5.0 sudo pip3 install PyYAML==5.4.1

5.3 下载预训练模型

YOLOv5提供了多个规模的预训练模型:

  • yolov5s(小型,速度最快)
  • yolov5m(中型)
  • yolov5l(大型)
  • yolov5x(超大型,精度最高)

对于Jetson Nano,建议使用yolov5s:

wget https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5s.pt

5.4 运行推理测试

使用摄像头实时检测:

python3 detect.py --source 0 --weights yolov5s.pt

或者检测图片:

python3 detect.py --source test.jpg --weights yolov5s.pt

第一次运行时会自动下载一些额外资源,可能会比较慢。在我的测试中,yolov5s在640x640分辨率下能达到约8FPS的性能。

6. 性能优化技巧

6.1 使用TensorRT加速

NVIDIA的TensorRT可以显著提升模型推理速度。具体步骤:

  1. 安装pycuda:
sudo pip3 install pycuda
  1. 将YOLOv5模型转换为TensorRT格式:
from torch2trt import torch2trt model = torch.load('yolov5s.pt').float() model.eval() x = torch.ones((1,3,640,640)).cuda() model_trt = torch2trt(model, [x]) torch.save(model_trt.state_dict(), 'yolov5s_trt.pt')
  1. 使用TensorRT模型推理:
model_trt = torch.load('yolov5s_trt.pt') results = model_trt(x)

经过TensorRT优化后,推理速度可以提升2-3倍。

6.2 内存优化

Jetson Nano只有4GB内存,运行YOLOv5时经常遇到内存不足的问题。解决方法:

  1. 增加交换空间:
sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
  1. 在/etc/fstab中添加:
/swapfile swap swap defaults 0 0
  1. 运行模型时关闭不必要的服务:
sudo systemctl stop lightdm

6.3 模型量化

将模型从FP32转换为INT8可以大幅减少内存占用和计算量:

model = model.half() # 转换为FP16

注意:量化可能会导致精度轻微下降,需要根据实际需求权衡。

7. 常见问题解决

7.1 无法调用GPU

如果torch.cuda.is_available()返回False,可能是:

  1. CUDA环境变量未正确设置
  2. PyTorch版本不兼容
  3. JetPack版本太旧

解决方法:

  1. 检查CUDA环境变量
  2. 确认安装的是Jetson专用PyTorch
  3. 考虑升级JetPack

7.2 内存不足

表现:程序突然崩溃,或报"CUDA out of memory"错误。

解决方法:

  1. 减小输入图像尺寸(如从640降到320)
  2. 使用更小的模型(如yolov5s)
  3. 增加交换空间
  4. 关闭桌面环境(sudo systemctl stop lightdm)

7.3 依赖冲突

多个Python包可能要求不同版本的依赖项。建议:

  1. 使用virtualenv创建隔离环境
  2. 严格按照YOLOv5要求的版本安装依赖
  3. 遇到冲突时先卸载冲突包,再重新安装指定版本

8. 实际应用建议

经过几个月的实际使用,我发现Jetson Nano运行YOLOv5最适合以下场景:

  • 对实时性要求不高的监控系统(3-5FPS可接受)
  • 需要低功耗运行的边缘设备
  • 教育和小型项目原型开发

如果需要更高性能,可以考虑Jetson Xavier NX或Orin系列。另外,在正式部署时,建议:

  1. 使用散热风扇(Jetson Nano长时间高负载会降频)
  2. 考虑使用Docker容器化部署
  3. 实现看门狗机制,防止程序异常退出

最后提醒一点:所有安装包和模型最好保存在外部存储设备上,因为SD卡损坏的风险较高。我现在的做法是将系统镜像备份到电脑上,重要数据定期同步到NAS。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 11:32:01

从线性表到图书管理系统:数据结构实战入门指南

1. 线性表:数据结构的基石 第一次接触数据结构时,我被各种抽象概念绕得头晕眼花,直到用线性表实现了图书管理系统,才真正理解它的价值。线性表就像超市货架,书架上整齐排列的书籍就是典型线性结构——每本书都有固定位…

作者头像 李华
网站建设 2026/6/11 11:31:00

智慧交通道路两旁坍塌堵塞检测数据集VOC+YOLO格式1552张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):1552标注数量(xml文件个数):1552标注数量(txt文件个数):1552标注类别…

作者头像 李华
网站建设 2026/6/11 11:27:52

【七境·司马法】爵位定序术——权责清晰组织构建包

管理者必读:从“推诿扯皮”到“各归其位”,28天重建组织秩序 基于《司马法》定爵思想 | 含RACI矩阵+定序诊断表+身体锚点视频 | VIP专享 写在前面:你的团队,还在“谁来做”上吵架吗? “凡战,定爵位,著功罪,收游士,申教诏,顺民俗,因群敌,用技艺。”——《司马法定爵…

作者头像 李华
网站建设 2026/6/11 11:21:57

Boss-Key终极指南:200毫秒快速隐藏窗口的上班摸鱼神器

Boss-Key终极指南:200毫秒快速隐藏窗口的上班摸鱼神器 【免费下载链接】Boss-Key 老板来了?快用Boss-Key老板键一键隐藏静音当前窗口!上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 你是否曾经在工作时突然…

作者头像 李华
网站建设 2026/6/11 11:20:43

魔兽争霸III终极优化工具:WarcraftHelper技术深度解析与实战指南

魔兽争霸III终极优化工具:WarcraftHelper技术深度解析与实战指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为《魔兽争霸III》在…

作者头像 李华
网站建设 2026/6/11 11:18:21

网盘下载提速终极方案:三分钟掌握八大网盘直链解析神器

网盘下载提速终极方案:三分钟掌握八大网盘直链解析神器 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…

作者头像 李华