Jetson Nano配置YOLOv5并实现FPS=25

本博客介绍了如何在Jetson Nano上配置YOLOv5,通过CUDA和TensorRTx实现25FPS的实时目标检测。首先,详细讲解了配置CUDA的过程,接着修改Nano板的显存,安装Pytorch 1.8.0。之后,搭建YOLOv5环境,解决matplotlib安装问题和非法指令错误。最后,利用tensorrtx加速推理,调用USB摄像头进行目标检测,遇到的问题及解决办法也一并给出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

镜像下载、域名解析、时间同步请点击 阿里云开源镜像站

一、版本说明

JetPack 4.6——2021.8 yolov5-v6.0版本 使用的为yolov5的yolov5n.pt,并利用tensorrtx进行加速推理,在调用摄像头实时检测可以达到FPS=25。

二、配置CUDA

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的版本号

三、修改Nano板显存

1.打开终端输入:

sudo gedit /etc/systemd/nvzramconfig.sh

2.修改nvzramconfig.sh文件

修改mem = $((("${totalmem}"/2/"${NRDEVICES}")*1024))
为mem = $((("${totalmem}"*2/"${NRDEVICES}")*1024))

3.重启Jetson Nano

4.终端中输入:

free -h

可查看到swap已经变为7.7G

四、配置Pytorch1.8

1.下载torch-1.8.0-cp36-cp36m-linux_aarch64.whl

下载地址:nvidia.box.com/shared/static/p57jwntv436lfrd78inwl7iml6p13fzh.whl

说明:建议在电脑上下载后拷贝到Jetson Nano的文件夹下,因为该网站的服务器 在国外,可能下载比较慢或网页加载不出来,可以打开VPN进行下载。

2.安装所需的依赖包及pytorch

打开终端输入:

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无法下载某一包时可以尝试切换再下载。具体步骤如下:

打开终端输入:

mkdir ~/.pip
sudo gedit ~/.pip/pip.conf

在空白文件中输入如下内容保存并退出:

以下为阿里源

[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com

终端输入:

pip3 install --upgrade pip        #如果pip已是最新,可不执行
pip3 install Cython
pip3 install numpy
pip3 install torch-1.8.0-cp36-cp36m-linux_aarch64.whl        #注意要在存放该文件下的位置打开终端并运行
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
git clone --branch v0.9.0 https://github.com/pytorch/vision torchvision  #下载torchvision,会下载一个文件夹
cd torchvision    #或者进入到这个文件夹,右键打开终端
export BUILD_VERSION=0.9.0
python3 setup.py install --user    #时间较久
#验证torch和torchvision这两个模块是否安装成功
python3
import torch
print(torch.__version__)    #注意version前后都是有两个横杠
#如果安装成功会打印出版本号
import torchvision
print(torchvision.__version__)
#如果安装成功会打印出版本号

五、搭建yolov5环境

终端中输入:

git clone https://github.com/ultralytics/yolov5.git        #因为不开VPN很容易下载出错,建议在电脑中下载后拷贝到jetson nano中
python3 -m pip install --upgrade pip
cd yolov5    #如果是手动下载的,文件名称为yolov5-master.zip压缩包格式,所以要对用unzip yolov5-master.zip进行解压,然后再进入到该文件夹
pip3 install -r requirements.txt        #我的问题是对matplotlib包装不上,解决办法,在下方。如果其他包安装不上,可去重新执行换源那一步,更换另一种国内源。
python3 -m pip list        #可查看python中安装的包
以下指令可以用来测试yolov5
python3 detect.py --source data/images/bus.jpg --weights yolov5n.pt --img 640    #图片测试
python3 detect.py --source video.mp4 --weights yolov5n.pt --img 640    #视频测试,需要自己准备视频
python3 detect.py --source 0 --weights yolov5n.pt --img 640    #摄像头测试

问题1:解决matplotlib安装不上问题

解决:下载matplotlib的whl包(下方有网盘分享)

问题2:在运行yolov5的detect.py文件时出现 “Illegal instruction(core dumped)”

解决:

sudo gedit ~/.bashrc
末尾添加
export OPENBLAS_CORETYPE=ARMV8
保持关闭
source ~/.bashrc

file

file

六、利用tensorrtx加速推理

1.下载tensorrtx

下载地址:https://github.com/wang-xinyu/tensorrtx.git

或者

git clone https://github.com/wang-xinyu/tensorrtx.git

2.编译

将下载的tensorrtx项目中的yolov5/gen_wts.py复制到上述的yolov5(注意:不是tensorrtx下的yolov5!!!)下,然后在此处打开终端

打开终端输入:

python3 gen_wts.py -w yolov5n.pt -o yolov5n.wts        #生成wts文件,要先把yolov5n.pt文件放在此处再去执行
cd ~/tensorrtx/yolov5/        #如果是手动下载的名称可能是tensorrtx-master
mkdir build
cd build
将生成的wts文件复制到build下    #手动下载的,名称为yolov5-master
cmake ..
make -j4
sudo ./yolov5 -s yolov5n.wts yolov5n.engine n #生成engine文件
sudo ./yolov5 -d yolov5n.engine ../samples/    #测试图片查看效果,发现在检测zidane.jpg时漏检,这时可以返回上一层文件夹找到yolov5.cpp中的CONF_THRESH=0.25再进入到build中重新make -j4,再重新运行该指令即可 

3.调用USB摄像头

参考了该文章https://blog.csdn.net/weixin_54603153/article/details/120079220

(1)在tensorrtx/yolov5下备份yolov5.cpp文件,因为如果更换模型时重新推理加速时需要用到该文件。

(2)然后对yolov5.cpp文件修改为如下内容

修改了12行和342行

#include <iostream>
#include <chrono>
#include "cuda_utils.h"
#include "logging.h"
#include "common.hpp"
#include "utils.h"
#include "calibrator.h"

#define USE_FP32  // set USE_INT8 or USE_FP16 or USE_FP32
#define DEVICE 0  // GPU id
#define NMS_THRESH 0.4 //0.4
#define CONF_THRESH 0.25    //置信度,默认值为0.5,由于效果不好修改为0.25取得了较好的效果
#define BATCH_SIZE 1

// stuff we know about the network and the input/output blobs
static const int INPUT_H = Yolo::INPUT_H;
static const int INPUT_W = Yolo::INPUT_W;
static const int CLASS_NUM = Yolo::CLASS_NUM;
static const int OUTPUT_SIZE = Yolo::MAX_OUTPUT_BBOX_COUNT * sizeof(Yolo::Detection) / sizeof(float) + 1;  // we assume the yololayer outputs no more than MAX_OUTPUT_BBOX_COUNT boxes that conf >= 0.1
const char* INPUT_BLOB_NAME = "da
### 部署 YOLOv5s 到 NVIDIA Jetson Nano 实现手势识别 #### 安装依赖项 为了在 NVIDIA Jetson Nano 上成功运行 YOLOv5s 模型实现手势识别功能,需先完成必要的软件和硬件准备。以下是具体的操作指南: 1. **操作系统安装** 推荐使用官方支持的 Ubuntu 版本(如 18.04 或更高版本),可以通过 NVIDIA 提供的镜像文件刷入到 Jetson Nano 设备中[^2]。 2. **CUDA 和 cuDNN 安装** Jetson Nano 自带 CUDA 支持,但仍需确认已正确安装对应版本的 cuDNN 库。通过以下命令验证 CUDA 是否可用: ```bash nvcc --version ``` 如果未安装或需要升级,请访问 NVIDIA 开发者网站下载适合 Jetson 平台的 cuDNN 包[^3]。 3. **PyTorch 环境搭建** PyTorch 是训练和推理 YOLOv5 的核心框架之一,在 Jetson Nano 上推荐使用预编译包来加速安装流程。执行如下指令: ```bash pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu102 ``` 4. **YOLOv5 下载与配置** 克隆官方仓库至本地目录,按照文档指引设置项目结构。 ```bash git clone https://github.com/ultralytics/yolov5.git cd yolov5 pip install -r requirements.txt ``` #### 性能优化建议 由于 Jetson Nano 的资源有限,因此需要采取一些措施提升模型推断效率: 1. **降低输入分辨率** 将图像尺寸调整为更小规模(例如从默认 640×640 缩短至 320×320),从而减少 GPU 计算负担[^4]。 2. **启用 TensorRT 加速** 使用 NVIDIA TensorRT 工具链对 ONNX 文件进一步优化,显著改善 FPS 表现。参考脚本如下所示: ```python import torch from utils.torch_utils import select_device, time_sync device = select_device('cuda') model = attempt_load(weights_path, map_location=device) # Load FP32 model imgsz = (320, 320) im = torch.zeros((1, 3, *imgsz)).to(device).type_as(next(model.parameters())) # Init image tensor _ = model(im.half()) if half else None # Run once to warm up the engine with torch.no_grad(): y = model(im)[0].cpu().numpy() # Perform inference and convert output format accordingly. ``` 3. **批量处理数据流** 对连续帧采用批量化机制传输给神经网络预测模块,以此摊销固定开销带来的延迟效应[^5]。 #### 手势识别扩展思路 基于上述基础架构之上,可针对特定应用场景定制化开发手势分类逻辑。比如利用 OpenCV 抓取摄像头视频源作为输入素材;再结合姿态估计库 MediaPipe 获取手部关键点坐标信息辅助决策判断等技术手段增强鲁棒性和精确度水平。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值