树莓派5-yolo5部署

Yolo-v5

Yolo-v5

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

前言:

        yolo5不做任何调整直接部署在树莓派5中,运行仍有些卡顿,因此本文用于记录我在部署过程中所参考的文献以及所遇到的问题。

硬件:

        树莓派5-内存8g版本

工作一:使用export.py把pt格式模型输出为onnx模型

        参考链接:使用export.py把pt格式模型输出为onnx模型

        采用.pt运行效果如下:

采用.onnx运行效果如下:

        个人主观认为:两者暂时没有任何区别,暂时先试用.onnx,因后续要使用NCS2进行加速处理。

工作二:将YOLOv5的主干网络替换成MobileNetV3

        参考链接:YOLOv5改进系列(5)——替换主干网络之 MobileNetV3

您可能感兴趣的与本文相关的镜像

Yolo-v5

Yolo-v5

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

树莓派5部署YOLO模型进行目标检测,需要经过环境准备、模型转换、推理代码编写等多个步骤。以下是详细的部署流程: ### 环境准备 首先,确保树莓派5的操作系统已经安装好,并且可以联网。建议使用Raspberry Pi OS(64位版本)以获得更好的兼容性和性能。 1. **更新系统软件包**: ```bash sudo apt update sudo apt upgrade -y ``` 2. **安装Python3和pip**(如果尚未安装): ```bash sudo apt install python3 python3-pip -y ``` 3. **安装YOLOv5所需的依赖**。进入YOLOv5项目的根目录后,使用以下命令安装依赖,建议使用清华源加速下载: ```bash pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ --use-deprecated=legacy-resolver ``` 4. **安装ONNX Runtime**,用于加载和推理ONNX格式的模型: ```bash pip install onnxruntime ``` ### 模型准备与转换 YOLOv5的原始模型是PyTorch格式的,为了在树莓派上运行,通常需要将其转换为ONNX格式。由于树莓派不支持FP16运算,因此不需要启用half精度优化[^2]。 1. **导出ONNX模型**。在训练环境中,使用YOLOv5提供的脚本将模型导出为ONNX格式: ```bash python export.py --weights yolov5s.pt --include onnx ``` 此命令会生成一个名为`yolov5s.onnx`的文件,位于当前目录下。 2. **将生成的ONNX模型复制到树莓派5**,可以使用SCP、USB存储设备或直接在树莓派上运行训练环境导出模型。 ### 推理代码编写 在树莓派部署模型时,可以使用ONNX Runtime进行推理。以下是一个简单的推理示例代码: ```python import onnxruntime as ort import numpy as np import cv2 # 加载ONNX模型 session = ort.InferenceSession("yolov5s.onnx") # 获取模型输入输出信息 input_name = session.get_inputs()[0].name output_name = session.get_outputs()[0].name # 图像预处理函数 def preprocess(image): image = cv2.resize(image, (640, 640)) # 调整输入大小 image = image / 255.0 # 归一化 image = np.transpose(image, (2, 0, 1)).astype(np.float32) # HWC to CHW image = np.expand_dims(image, axis=0) # 添加batch维度 return image # 捕获摄像头视频流并进行推理 cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() if not ret: break # 预处理图像 input_data = preprocess(frame) # 进行推理 outputs = session.run([output_name], {input_name: input_data})[0] # 后处理逻辑(如NMS、绘制检测框等) # 此处省略具体实现,可根据YOLOv5的后处理方式进行补充 # 显示结果 cv2.imshow('YOLOv5 Detection', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() ``` ### 模型优化与性能提升 为了在树莓派5上获得更好的推理性能,可以考虑以下优化措施: - **使用轻量级模型**:YOLOv5提供了多个版本,如`yolov5s`(small)、`yolov5m`(medium)、`yolov5l`(large)等。推荐使用`yolov5s`以获得更高的推理速度。 - **图像分辨率调整**:根据实际需求调整输入图像的分辨率,降低分辨率可以显著提升推理速度。 - **减少后处理复杂度**:YOLOv5的后处理通常包括非极大值抑制(NMS)等操作,可以通过调整阈值或简化算法来减少计算量。 ### 性能测试与调试 在实际部署过程中,建议对模型的推理速度和准确率进行评估。可以使用OpenCV的`getTickCount`和`getTickFrequency`函数来测量帧率: ```python start = cv2.getTickCount() # 推理过程 end = cv2.getTickCount() fps = cv2.getTickFrequency() / (end - start) print(f"FPS: {fps:.2f}") ``` 此外,还可以通过调整摄像头的分辨率、帧率等参数来进一步优化整体性能。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值