2024-12-26 11:16:47 [显示全部楼层]
39浏览
查看: 39|回复: 0

[M10项目] [行空板M10+人工智能项目]基于YOLO的实时水果检测项目

[复制链接]
本帖最后由 loria 于 2024-12-26 11:27 编辑

一:项目简介
本文分享的是基于YOLO训练出来的水果目标检测模型部署在行空板上运行的项目,旨在实现从实时视频流中框出画面中的所有水果并显示其名称。
[行空板M10+人工智能项目]基于YOLO的实时水果检测项目图1
二:项目效果
话不多说,先放上效果视频
[media=x,500,500] https://b23.tv/mtCbZ6s[/media]

根据终端的显示针对图像尺寸为640*640 的图片,每次推理大约耗费2-3秒,对于行空板的性能来说,是比较好的效果。
[行空板M10+人工智能项目]基于YOLO的实时水果检测项目图2
三:软硬件
接下来,我将分享项目的制作过程。
使用到的软件是Mind+
使用到的硬件有:
(1)行空板M10
行空板M10是一款专为Python学习和使用设计的新一代国产开源硬件,采用单板计算机架构,集成LCD彩屏、WiFi蓝牙、多种常用传感器和丰富的拓展接口。同时,其自带Linux操作系统和Python环境,还预装了常用的Python库,让广大师生只需两步就能进行Python教学。
[行空板M10+人工智能项目]基于YOLO的实时水果检测项目图3
(2)USB摄像头
[行空板M10+人工智能项目]基于YOLO的实时水果检测项目图4
四:项目准备
行空板部署YOLO系列项目需要python3.1.0以上的环境,为了更好的管理不同版本的python环境,推荐使用MiniConda
请参考此篇帖子的环境配置教程:如何在行空板上运行 YOLOv10n?
请按照这篇帖子的教程完成到Step 7 安装utralytics
除了utralytics库本项目还需要使用onnx、onnxruntime、opencv -python 和pinpong库
请依次在终端输入以下命令(注意行空板需要联网)
  1. pip install onnx
  2. pip install onnxruntime
  3. pip install opencv-python
  4. pip install pinpong
复制代码
[行空板M10+人工智能项目]基于YOLO的实时水果检测项目图5五:项目实现
做好准备后,可以编写代码实现项目了。我将模型文件和运行代码都放入了一个名叫fruit的文件夹中,将文件夹拖入Mind+右侧项目中的文件中,右键选中上传到行空板
[行空板M10+人工智能项目]基于YOLO的实时水果检测项目图6
可以在行空板中的文件找到上传的fruit文件,其中“best.pt”是YOLO水果检测模型文件,“best.onnx”是onnx格式的模型

[行空板M10+人工智能项目]基于YOLO的实时水果检测项目图7
选中名为“fruites_video.py”的文件,选择在编辑区打开
[行空板M10+人工智能项目]基于YOLO的实时水果检测项目图8
fruits_video.py是模型推理py文件,详细的内容如下。简单来说实现的功能是读取摄像头的每一帧画面裁剪成240*240的尺寸,作为输入进行推理,根据推理结果框出画面中的水果并显示其类别名称
  1. # -*- coding: UTF-8 -*-
  2. # MindPlus
  3. # Python
  4. # 导入必要的库
  5. import cv2  # 用于图像处理和视频捕获
  6. from pinpong.board import Board, Pin  # 用于与MindPlus硬件板进行交互
  7. from ultralytics import YOLO  # 用于加载和运行YOLO模型
  8. from pinpong.extension.unihiker import *  # 导入UniHiker扩展模块
  9. # 初始化MindPlus硬件板
  10. Board().begin()
  11. # 加载导出的ONNX模型,用于目标检测任务
  12. onnx_model = YOLO("best.onnx", task='detect')
  13. # 使用OpenCV打开默认摄像头
  14. vd = cv2.VideoCapture(0)
  15. vd.set(cv2.CAP_PROP_BUFFERSIZE, 1)  # 设置缓冲区大小,提高稳定性
  16. # 创建一个全屏窗口用于显示结果
  17. cv2.namedWindow('winname', cv2.WND_PROP_FULLSCREEN)
  18. cv2.setWindowProperty('winname', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
  19. # 循环捕获视频帧
  20. while True:
  21.     if vd.isOpened():  # 检查摄像头是否成功打开
  22.         ret, frame = vd.read()  # 读取一帧图像
  23.         if not ret:  # 如果读取失败
  24.             break  # 退出循环
  25.         # 获取原始图像的尺寸
  26.         h, w, c = frame.shape
  27.         # 计算中心裁剪的起始和结束坐标
  28.         # 这里假设图像是正方形的,如果不是,需要调整代码
  29.         start_x = (w - h) // 2
  30.         start_y = (h - h) // 2
  31.         end_x = start_x + h
  32.         end_y = start_y + h
  33.         # 从原始图像中裁剪出中心区域
  34.         crop_frame = frame[start_y:end_y, start_x:end_x]
  35.         # 将裁剪出的图像缩放到 200x200 的尺寸
  36.         resized_frame = cv2.resize(crop_frame, (240, 240))
  37.         # 使用裁剪和缩放后的图像进行推理
  38.         results = onnx_model(resized_frame)
  39.         # 绘制检测框和标签
  40.         for det in results[0].boxes.data.tolist():
  41.             x1, y1, x2, y2, conf, cls = det
  42.             label = f"{onnx_model.names[int(cls)]} {conf:.2f}"
  43.             cv2.rectangle(resized_frame, (int(x1), int(y1)), (int(x2), int(y2)), (255, 0, 0), 2)
  44.             cv2.putText(resized_frame, label, (int(x1), int(y1) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)
  45.         # 显示结果
  46.         cv2.imshow("winname", resized_frame)
  47.         # 打印检测框和标签信息
  48.         for det in results[0].boxes.data.tolist():
  49.             x1, y1, x2, y2, conf, cls = det
  50.             label = f"{onnx_model.names[int(cls)]} {conf:.2f}"
  51.             print(f"Box: ({x1}, {y1})-({x2}, {y2}), Confidence: {conf:.2f}, Class: {label}")
  52.         key = cv2.waitKey(1)  # 等待1毫秒,检测按键事件
  53.         if key == 27:  # 如果按下ESC键
  54.             break  # 退出循环
  55. # 释放资源
  56. vd.release()
  57. cv2.destroyAllWindows()  # 关闭所有OpenCV创建的窗口
复制代码
复制代码
打开fruits_video.py文件后点击运行即可
[行空板M10+人工智能项目]基于YOLO的实时水果检测项目图9
运行成功后,终端显示如下
[行空板M10+人工智能项目]基于YOLO的实时水果检测项目图10
六:项目反思
根据实践结果,行空板部署实时目标检测项目,训练模型时输入尺寸在128*128及以内FPS有较好的数据效果。本项目可以进一步在模型上进行优化以降低画面延迟率




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail