尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Jetson Nano部署YOLOv5s:从环境搭建到TensorRT加速实现25FPS实时推理
1. Jetson Nano与YOLOv5s的完美组合Jetson Nano作为一款轻量级AI边缘计算设备搭载了128核NVIDIA Maxwell GPU和四核ARM Cortex-A57 CPU虽然体积小巧但性能不俗。而YOLOv5s则是YOLO系列中最轻量级的模型参数量仅7.2M非常适合在资源有限的边缘设备上运行。这对组合在目标检测领域堪称黄金搭档既能满足实时性要求又不会对硬件造成过大负担。我实测过多种目标检测模型在Jetson Nano上的表现YOLOv5s在精度和速度之间取得了很好的平衡。相比其他版本YOLOv5s的推理速度要快上不少这对于需要25FPS实时检测的场景来说至关重要。不过原生PyTorch模型直接运行的效率还不够理想这就需要TensorRT出场了。TensorRT是NVIDIA专门为深度学习推理设计的加速引擎它能对模型进行优化包括层融合、精度校准、内核自动调优等技术。经过TensorRT优化后的YOLOv5s在Jetson Nano上的推理速度可以从原来的10FPS提升到25FPS以上这个提升幅度相当可观。2. 环境配置全攻略2.1 JetPack系统准备首先需要确保Jetson Nano刷写了合适的JetPack系统镜像。我推荐使用JetPack 4.6版本它包含了CUDA 10.2、cuDNN 8.2和TensorRT 7.1等关键组件这些都是运行YOLOv5s所必需的。刷写系统镜像后第一件事就是扩容交换空间sudo gedit /etc/systemd/nvzramconfig.sh找到mem $((${totalmem}/2/${NRDEVICES})*1024)这一行将其修改为mem $((${totalmem}*2/${NRDEVICES})*1024)保存后重启设备使用free -h命令检查交换空间是否已经增大到7.7GB左右。这个步骤很重要因为后续的编译过程需要大量内存默认的交换空间大小可能会导致编译失败。2.2 CUDA环境配置接下来配置CUDA环境变量编辑~/.bashrc文件sudo gedit ~/.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验证CUDA是否配置成功如果看到版本号输出说明配置正确。3. PyTorch与YOLOv5环境搭建3.1 PyTorch安装由于Jetson Nano是ARM架构不能直接使用pip安装PyTorch需要下载预编译的wheel文件。我推荐使用PyTorch 1.8.0版本这个版本与JetPack 4.6的兼容性最好。先安装必要的依赖sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade sudo apt-get install python3-pip libopenblas-base libopenmpi-dev然后配置pip国内源加速下载创建~/.pip/pip.conf文件并添加以下内容以阿里源为例[global] index-urlhttp://mirrors.aliyun.com/pypi/simple/ [install] trusted-hostmirrors.aliyun.com安装PyTorch和依赖pip3 install Cython numpy pip3 install torch-1.8.0-cp36-cp36m-linux_aarch64.whl3.2 YOLOv5环境配置克隆YOLOv5仓库并安装依赖git clone https://github.com/ultralytics/yolov5.git cd yolov5 pip3 install -r requirements.txt这里可能会遇到matplotlib安装失败的问题可以单独下载对应的wheel文件安装。安装完成后可以运行测试命令验证是否安装成功python3 detect.py --source data/images/bus.jpg --weights yolov5n.pt --img 640如果出现Illegal instruction (core dumped)错误需要在~/.bashrc中添加export OPENBLAS_CORETYPEARMV8然后执行source ~/.bashrc使其生效。4. TensorRT加速实战4.1 模型转换与优化首先克隆tensorrtx仓库git clone https://github.com/wang-xinyu/tensorrtx.git将tensorrtx/yolov5/gen_wts.py复制到YOLOv5目录下生成.wts权重文件python3 gen_wts.py -w yolov5n.pt -o yolov5n.wts接下来编译TensorRT引擎cd ~/tensorrtx/yolov5/ mkdir build cd build cmake .. make -j4 sudo ./yolov5 -s yolov5n.wts yolov5n.engine n这个过程可能会比较耗时建议耐心等待。生成的.engine文件就是优化后的模型可以直接用于推理。4.2 实时摄像头推理为了使用USB摄像头进行实时推理需要修改yolov5.cpp文件。主要修改两个地方修改342行附近的视频捕获代码将视频文件路径改为0表示使用摄像头cv::VideoCapture capture(0);可以调整CONF_THRESH参数来改变检测的灵敏度默认0.25对于大多数场景已经足够。修改后重新编译make -j4运行推理程序sudo ./yolov5 -v yolov5n.engine如果出现Failed to load module canberra-gtk-module错误可以安装缺失的模块sudo apt-get install libcanberra-gtk-module5. 性能优化技巧5.1 模型精度选择TensorRT支持FP32、FP16和INT8三种精度模式。在yolov5.cpp中可以通过修改以下定义来切换精度#define USE_FP32 // 使用FP32精度 // #define USE_FP16 // 使用FP16精度 // #define USE_INT8 // 使用INT8精度FP16精度可以在几乎不损失精度的情况下将推理速度提升1.5-2倍是性价比很高的选择。INT8精度需要额外的校准过程但能进一步提升速度不过可能会对检测精度有轻微影响。5.2 图像预处理优化在实时推理中图像预处理往往成为性能瓶颈。可以通过以下方式优化减少不必要的图像格式转换使用GPU加速的图像处理如使用CUDA实现的resize和normalize合理设置输入分辨率不是越大越好在yolov5.cpp中预处理部分可以进一步优化比如将BGR2RGB和归一化操作合并为一个CUDA核函数。5.3 多线程处理虽然Python有GIL限制但仍然可以通过多进程方式实现并行处理。可以将图像采集和推理放在不同的进程中通过共享内存或队列传递数据。这样可以避免因图像采集等待而导致的帧率下降。6. 常见问题解决6.1 模型转换失败如果在生成.engine文件时失败首先检查确认使用的TensorRT版本与JetPack版本匹配检查.wts文件是否生成正确尝试减少make的并行编译线程数如改为make -j26.2 推理速度不达标如果无法达到25FPS的目标可以尝试降低输入图像分辨率如从640x640降到480x480使用更轻量级的模型如YOLOv5n启用FP16或INT8量化检查CPU占用率关闭不必要的后台进程6.3 内存不足问题Jetson Nano的4GB内存是主要限制可以通过增加交换空间如前面所述使用更小的batch size在yolov5.cpp中修改BATCH_SIZE减少同时运行的程序7. 实际应用建议经过TensorRT加速的YOLOv5s在Jetson Nano上可以实现稳定的25FPS实时检测这已经能满足大多数应用场景的需求。我在智能门禁、工业质检等多个项目中都采用过这个方案效果非常不错。对于需要更高精度的场景可以考虑使用YOLOv5m但需要接受帧率下降的事实。另外如果检测小目标效果不佳可以尝试修改模型的anchor设置或者增加输入分辨率。最后提醒一点Jetson Nano的散热很重要长时间高负载运行可能会导致降频。建议加装散热风扇或散热片确保设备能够持续稳定工作。
RELATED

相关推荐

论文AI写作网址有哪些?精选6款正规平台推荐

论文AI写作网址有哪些?精选6款正规平台推荐

深夜对着空白文档发呆,导师的deadline步步紧逼,文献综述逻辑混乱,查重降重改到崩溃——这大概是每个写论文的人都经历过的至暗时刻。别慌,这篇2026AI论文工具测评直接给你答案:我们实测了6款主流AI论文写作工具&#x…

📅 2026/10/2 7:47:33
PVE虚拟化平台部署OpenWRT软路由:从零构建家庭网络中枢

PVE虚拟化平台部署OpenWRT软路由:从零构建家庭网络中枢

1. PVE虚拟化平台与OpenWRT的黄金组合 把家里的旧电脑改造成专业级网络设备,听起来像是极客的专利?其实用PVEOpenWRT这套组合拳,小白也能轻松搭建家庭网络中枢。我去年用淘汰的NUC迷你主机实践了这个方案,现在家里所有智能设备、N…

📅 2026/10/2 20:29:40
OpenCore Legacy Patcher技术架构深度解析:驱动层适配与系统兼容性突破

OpenCore Legacy Patcher技术架构深度解析:驱动层适配与系统兼容性突破

OpenCore Legacy Patcher技术架构深度解析:驱动层适配与系统兼容性突破 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是…

📅 2026/10/2 3:47:40
MORE NEWS

更多资讯

📰

鸿业市政道路软件避坑指南:版本匹配、横断面与土方计算常见问题

简介:针对鸿业市政道路软件用户的常见问题解答文档,内容覆盖软件运行、土方、平面、纵断、横断、交叉口设计及其他模块,面向市政道路设计人员与相关专业学生,帮助解决菜单加载失败、土方计算异常、图面显示错乱等高频问题。压缩包…

📰

超级多智能体架构实战:DeepAgents编排、MCP工具接入与A2A通信

1. 从单体到集群:为什么我们需要超级多智能体1.1 一个真实的需求场景去年下半年我接手了一个企业内部知识助手的项目,需求听起来不复杂:帮员工查制度文档、走审批流程、生成周报。一开始我用的是单体 Agent 方案,一个模型加一堆工…

📰

hindsight:面向LLM应用的事后可观测性工程实践

1. 项目概述:hindsight 不是回溯,而是“事后视角”的工程化实践“hindsight”这个词在日常英语里常被译作“后见之明”,指事情发生之后才看清因果、识别关键节点的能力。但在当前技术语境下,尤其结合 Python、OpenAI、Anthropic、…

📰

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

📰

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

📰

QuickBlue:企业AI应用底座,打通模型到业务落地的最后一公里

上个月和一位做工业质检的老友吃饭,他公司的AI项目在测试集上准确率做到了99.3%,可项目就是迟迟上不了产线。我问他卡在哪,他掰着手指头给我数:现场数据传不上来、接口协议没人维护、操作员的反馈没有回流通道,最后还有…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬