这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【M5CoreS3测评】基于yoloV5实现物体分类

共1条 1/1 1 跳转至

【M5CoreS3测评】基于yoloV5实现物体分类

助工
2025-10-12 11:39:27     打赏

该测试依然基于网络图传

在开始测试之前,需要在电脑上安装numpy以及yoloV5

在电脑端,编写Python代码如下,其中url地址为开发板屏幕显示的网址

其运行流程为:从url获取图像并进行预处理 -> 基于yolo模型对物体进行分类 -> 框选物体并显示名称和当前帧率,在终端打印计算时间和帧率

import cv2
import torch
import time
from yolov5 import YOLOv5
import urllib.request
import numpy as np

url = 'http://192.168.1.15:80/capture'  # M5CoreS3的IP地址

# Load the YOLOv5 model
model_path = "./yolov5s.pt"  # 模型路径
device = torch.device("cpu")
model = YOLOv5(model_path, device=device)

while True:
    img_resp = urllib.request.urlopen(url)  # 从URL获取图像数据
    imgnp = np.array(bytearray(img_resp.read()), dtype=np.uint8)  # 将图像数据转换为NumPy数组
    frame = cv2.imdecode(imgnp, -1)  # 解码JPEG图像数据

    # 记录处理开始时间
    start_time = time.time()

    # 将帧传递给模型进行预测
    results = model.predict(frame, size=640)  # 调整输入图像大小为640x640

    # 获取预测结果并在图像上绘制
    annotated_frame = results.render()[0]  # 直接取第一个结果(YOLOv5的render返回的是列表)

    # 确保annotated_frame是可写的
    if not annotated_frame.flags['WRITEABLE']:
        annotated_frame = annotated_frame.copy()

    # 记录处理结束时间
    end_time = time.time()

    # 计算帧率
    processing_time = end_time - start_time
    fps = 1 / processing_time

    # 在图像上绘制帧率
    cv2.putText(annotated_frame, f"FPS: {fps:.2f}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)

    # 显示带有预测结果的帧
    cv2.imshow("YOLOv5 Detection", annotated_frame)

    # 打印详细信息到终端
    print(f"Processed frame in {processing_time:.4f} seconds, FPS: {fps:.2f}")

    # 按下 'q' 键退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 关闭所有窗口
cv2.destroyAllWindows()

其中yoloV5模型如下,之于源代码同一文件路径下

yolov5s.zip

实现效果如下

屏幕截图 2025-10-12 113057.png




关键词: M5CoreS3     yoloV5     物体分类    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]