news 2026/4/24 5:05:16

Jetson Nano 4GB版保姆级教程:从烧录镜像到YOLOv5模型部署(含TensorRT加速)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Jetson Nano 4GB版保姆级教程:从烧录镜像到YOLOv5模型部署(含TensorRT加速)

Jetson Nano 4GB版终极实战指南:从零部署YOLOv5到TensorRT加速全流程

当你第一次拿到这块信用卡大小的AI开发板时,可能会被它强大的边缘计算能力与复杂的配置过程所震撼。本文将带你完整走过从开箱到运行TensorRT加速的YOLOv5模型的每一个关键步骤,特别针对4GB内存版本进行优化配置。

1. 硬件准备与系统初始化

1.1 开发板供电方案选择

Jetson Nano提供三种供电方式,每种都有其适用场景:

供电类型接口/位置电流要求适用场景注意事项
MicroUSB板载接口2A以上临时调试必须移除J48跳线帽
DC电源圆孔接口5V/4A长期运行必须插入J48跳线帽
GPIO供电40pin接口5V/3A扩展板集成需确保电源质量稳定

推荐方案:使用官方认证的5V/4A DC电源,这是最稳定的供电方式。我曾尝试用移动电源通过MicroUSB供电,在运行YOLOv5时频繁出现电压不足导致的系统重启。

1.2 系统镜像烧录实战

使用Etcher工具烧录镜像时,常会遇到两个典型问题:

# 查看SD卡设备标识(重要!避免选错磁盘) diskutil list (Mac) lsblk -p (Linux)

常见问题处理

  • 烧录失败:尝试更换读卡器或SD卡槽,某些USB3.0读卡器存在兼容性问题
  • 验证错误:可忽略,实际仍可正常启动(这是Etcher已知问题)

烧录完成后,首次启动会经历约15分钟的系统初始化过程,建议选择:

  • 语言:英文(避免后续终端乱码)
  • 时区:Asia/Shanghai
  • 用户名:避免使用特殊字符

2. 开发环境深度配置

2.1 国内源加速配置

针对bionic版本的完整清华源配置:

sudo sed -i "s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list sudo sed -i "s@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list

更新后安装基础工具套件:

sudo apt-get update && sudo apt-get install -y \ curl \ git \ cmake \ libpython3-dev \ python3-pip

2.2 CUDA环境精调

验证CUDA安装时,推荐使用更直观的deviceQuery示例:

cd /usr/local/cuda/samples/1_Utilities/deviceQuery sudo make ./deviceQuery

正常输出应包含:

Detected 1 CUDA Capable device(s) Device 0: "NVIDIA Tegra X1" ... Result = PASS

环境变量配置要点(针对CUDA 10.2):

echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc

3. 关键软件栈安装

3.1 TensorFlow GPU版特殊安装

由于架构差异,不能直接使用pip安装标准版:

pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v45 tensorflow-gpu

验证安装:

import tensorflow as tf tf.test.gpu_device_name() # 应返回'/device:GPU:0'

3.2 PyCUDA编译安装

从源码编译时需指定正确的CUDA路径:

wget https://pypi.python.org/packages/source/p/pycuda/pycuda-2021.1.tar.gz tar xzvf pycuda-2021.1.tar.gz cd pycuda-2021.1 python3 configure.py --cuda-root=/usr/local/cuda-10.2 make -j4 sudo python3 setup.py install

常见编译错误解决:

  • nvcc not found:确认CUDA环境变量配置正确
  • 内存不足:添加swap空间(后续章节介绍)

4. YOLOv5模型转换与TensorRT加速

4.1 模型转换全流程

  1. 下载tensorrtx对应版本:
git clone -b yolov5-v5.0 https://github.com/wang-xinyu/tensorrtx.git
  1. 权重转换关键步骤:
cd tensorrtx/yolov5 mkdir build && cd build cmake .. -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc make -j$(nproc)
  1. 生成TensorRT引擎:
./yolov5 -s ../yolov5s.wts yolov5s.engine s

性能对比数据

推理方式分辨率FPS (Nano 4GB)内存占用
PyTorch原生640x6402.13.2GB
TensorRT FP16640x6408.72.1GB
TensorRT INT8640x64012.31.8GB

4.2 实时摄像头推理优化

使用OpenCV的GStreamer管道可提升采集效率:

def gstreamer_pipeline( capture_width=640, capture_height=480, display_width=640, display_height=480, framerate=30, flip_method=0, ): return ( "nvarguscamerasrc ! " "video/x-raw(memory:NVMM), " f"width=(int){capture_width}, height=(int){capture_height}, " f"format=(string)NV12, framerate=(fraction){framerate}/1 ! " f"nvvidconv flip-method={flip_method} ! " f"video/x-raw, width=(int){display_width}, height=(int){display_height}, format=(string)BGRx ! " "videoconvert ! " "video/x-raw, format=(string)BGR ! appsink" ) cap = cv2.VideoCapture(gstreamer_pipeline(), cv2.CAP_GSTREAMER)

5. 性能调优实战技巧

5.1 内存管理策略

增加swap空间防止OOM:

sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile free -h # 验证swap生效

5.2 温度控制方案

安装jetson-stats监控工具:

sudo -H pip install jetson-stats jtop # 实时监控界面

主动散热配置:

# 根据温度动态调整风扇转速 import os def set_fan_speed(temp): speed = min(255, max(0, (temp - 50) * 10)) os.system(f'echo {speed} | sudo tee /sys/devices/pwm-fan/target_pwm')

6. 项目实战:智能监控系统

完整部署示例代码结构:

yolov5_trt/ ├── configs │ ├── camera.cfg │ └── model.cfg ├── engines │ └── yolov5s.engine ├── utils │ ├── trt_loader.py │ └── visualizer.py └── main.py

核心推理逻辑优化:

class TrtYOLO: def __init__(self, engine_path): self.ctx = cuda.Device(0).make_context() self.stream = cuda.Stream() with open(engine_path, "rb") as f: self.engine = trt.Runtime(trt.Logger(trt.Logger.WARNING)).deserialize_cuda_engine(f.read()) def infer(self, img): # 异步推理实现 with self.engine.create_execution_context() as context: bindings = self._allocate_buffers(context) # 预处理和推理代码... yield result # 使用生成器减少内存占用 def __del__(self): self.ctx.pop()

在完成整个部署流程后,最让我惊喜的是经过TensorRT优化的模型在保持95%以上精度的同时,推理速度提升了4-6倍。实际测试中发现,使用640x640分辨率时系统资源占用最为平衡,而将摄像头帧率控制在15-20FPS可以获得最佳能效比。

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

nli-MiniLM2-L6-H768实操手册:批量API调用限流与异步结果回调实现

nli-MiniLM2-L6-H768实操手册:批量API调用限流与异步结果回调实现 1. 工具概述 nli-MiniLM2-L6-H768是一款基于cross-encoder/nli-MiniLM2-L6-H768轻量级NLI模型开发的本地零样本文本分类工具。它无需任何微调训练,只需输入文本和自定义标签&#xff0…

作者头像 李华
网站建设 2026/4/24 5:00:40

机器人应用-设施养护

传统绿化养护中,人工割草面临成本高、效率低、质量不均的问题。户外作 业还需应对恶劣天气和复杂地形,不仅劳动强度大,还存在安全隐患。 引入智能割草机器人,能适配公园、社区、园区等多样城市空间,通过标准 化无人作业…

作者头像 李华
网站建设 2026/4/24 4:59:44

Steam成就自由:如何用开源工具重新定义你的游戏体验

Steam成就自由:如何用开源工具重新定义你的游戏体验 【免费下载链接】SteamAchievementManager A manager for game achievements in Steam. 项目地址: https://gitcode.com/gh_mirrors/st/SteamAchievementManager 想象一下这样的场景:你花了上百…

作者头像 李华
网站建设 2026/4/24 4:57:23

Get cookies.txt LOCALLY:本地Cookie导出工具的终极指南

Get cookies.txt LOCALLY:本地Cookie导出工具的终极指南 【免费下载链接】Get-cookies.txt-LOCALLY Get cookies.txt, NEVER send information outside. 项目地址: https://gitcode.com/gh_mirrors/ge/Get-cookies.txt-LOCALLY 在当今数字化时代,…

作者头像 李华