回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页
best-icon

基于行空板M10的物体分类项目 简单

头像 rzegkly 2025.07.23 33 1

image.png

一、创作背景

大暑,是二十四节气中的第十二个节气,也是夏季最后一个节气。

斗指未,太阳黄经为120°,于公历7月22日-24日交节。

"暑"是炎热的意思,大暑,指炎热之极。

大暑是一年中阳光最猛烈、最炎热的节气,"湿热交蒸"在此时到达顶点。

今天的大暑天下起小雨,结合行空板分享一个利用摄像头识别食物的项目

 

——基于行空板M10的物体分类项目

材料清单

  • 行空板 X1 链接
  • 行空板M10扩展板组合 X1 链接
  • USB摄像头(兼容行空板M10) X1 链接
  • WS2812 RGB 全彩灯带(7灯珠) X2 链接

二、主要功能

通过中鸣人工智能教育平台对食物数据进行采集,模型训练、生成 ONNX 通用模型;将 ONNX 部署到行空板上,行空板可以预测出当前食物。让师生亲自体验人工智能的数据采集,数据的加工处理、模型的训练和模型部署,再到行空板预测出食物结果的整个流程。

三、数据采集

image.png

1.登录中小学人工智能教育平台

image.png

2.进入图像分类AI模型训练

image.png
image.png
image.png

3.依次上传红枣、橘子、背景等图片集

 

四、模型训练

2开始训练.jpg

1.模型训练

image.png

2上传橘子照片,测试模型识别精度
image.png

 

3.生成ONNX模型,大概4分钟左右

五、模型部署

 

 

步骤1 打开 mind+,窗口右上角,选择 python 模式,连接行空板 10.1.2.3。

image.png

步骤2 (2)打开 Mind+,右下角扩展添加在官方库添加行空板,OpenCV,RGB灯

image.png
image.png

步骤3 打开 Mind+,用户库添加 XEduHub,

image.png

步骤4 在 Mind+的代码模式,打开文件系统,将文件 model.ONNX拖入项目中的文件即可

image.png

步骤5 在点击运行的时候 Mind+会将项目中的文件里面的所有文件一起上传到行空板的 mindplus 文件夹中运行。

image.png

步骤6 编写程序

代码
#  -*- coding: UTF-8 -*-

# MindPlus
# Python
import sys
sys.path.append("/root/mindplus/.lib/thirdExtension/nick-xeduhub_main-thirdex")
import re
import cv2
import sys
import time
from unihiker import GUI
from pinpong.board import Board
from pinpong.board import NeoPixel
from pinpong.board import Board,Pin
from pinpong.extension.unihiker import *
from XEdu.hub import Workflow as wf
import os



def format_valve_output(task):
    try:
        output_result = ""
        output_result = task.format_output(lang="zh")
        return output_result
    except AttributeError:
        return "AttributeError: 请检查输入数据是否正确"


Board().begin()
u_gui=GUI()
hongzao = NeoPixel(Pin((Pin.P4)),7)
hongzao.brightness(128)
juzi = NeoPixel(Pin((Pin.P1)),7)
juzi.brightness(128)
hongzao.brightness(100)
juzi.brightness(100)
hongzao.clear()
juzi.clear()
TuXiangLuJing = (str("Mind+.png"))
ShiWu = ['红枣','橘子','背景']
para_task1 = {}
init_para_task1 = {"task":"mmedu"}
init_para_task1["checkpoint"] = "model.onnx"
task1 = wf(**init_para_task1)
vd = cv2.VideoCapture()
vd.open(0)
vd.set(cv2.CAP_PROP_BUFFERSIZE, 1)
print("摄像头正在打开中.........")
while not (vd.isOpened()):
    pass
print("摄像头已经打开")
while True:
    ret, grab = vd.read()
    if vd.grab():
        grab = cv2.resize(grab,( 240, 240))
        cv2.imwrite(TuXiangLuJing, grab)
        u_gui.clear()
        u_gui.draw_text(text="基于行空板AI判断食物项目",x=10,y=4,font_size=11, color="#333333")
        u_gui.draw_image(image=TuXiangLuJing,x=0,y=35)
        结果=u_gui.draw_text(text="识别中",x=0,y=280,font_size=15, color="#0000FF")
        para_task1["data"] = TuXiangLuJing

        if 'task1' in globals() or 'task1' in locals():
            rea_result_task1 = task1.inference(**para_task1)
        else:
            print("init",'task1')
            task1 = wf(**init_para_task1)
            rea_result_task1 = task1.inference(**para_task1)

        print(rea_result_task1)
        output_result_task1 = format_valve_output(task1)
        JieGuo = (ShiWu[output_result_task1["标签"]])
    结果.config(text=(str("识别结果:") + str(JieGuo)))
    time.sleep(1)
    if (JieGuo == (str("红枣"))):
        hongzao.range_color(0,6,0xFF0000)
        juzi.clear()
        print(JieGuo)
    if (JieGuo == (str("橘子"))):
        juzi.range_color(0,6,0xFFFF00)
        hongzao.clear()
        print(JieGuo)
    if (JieGuo == (str("背景"))):
        hongzao.clear()
        juzi.clear()
        print(JieGuo)

六、模型应用

 

image.png
image.png
image.png

程序运行后,摄像头实时采集图片,当采集到对应食物图像时,部署在行空板的ONNX模型进行判断,文字显示出来;当没有采集到对应图像时,文字显示背景画面。

         本项目初步完成了人工智能图形分类的数据采集、模型训练,模型部署、模型并能够人工智能平台实现行空板预测出食物图形结果的整个流程。由于初次还存在制作过程简单,数据采集量小,成熟度还很低,还有待于进一步改进和完善。本作品由于过于简单应用场景非常有限,今后还要在此基础上进一部扩展声音分类、姿态分类、文本分类、手势分类等功能,适合更多场景应用。

image.png

评论

user-avatar
  • 寸进

    寸进2025.07.24

    中鸣人工智能教育平台对食物数据进行采集,模型训练、生成 ONNX 通用模型。好用的东西结合在一起

    0