跳转至

模型训练推理库

本篇文档将介绍如何在 Mind+ 编程软件的 Python 模式 下,使用 模型训练推理库,加载并应用在 Mind+ 模型训练模块 中自行训练的模型,结合主控设备(如 行空板 M10),构建完整的人工智能项目应用。

通过本库,用户可以将自训练的图像与时序类模型部署到真实硬件环境中,实现 图像分类、目标检测、实例分割、时序模式识别 等多种人工智能应用,完成从模型训练到项目落地的完整实践流程。

img

功能介绍

通过模型训练推理库,用户可以加载在 Mind+ 模型训练模块中训练完成的 图像分类模型、目标检测模型、实例分割模型和时序模式识别模型 ,在 Mind+ 编程软件的 Python 模式下,对输入数据进行推理与分析,并获取对应的识别结果信息,如类别 ID、标签名称、置信度、分割结果等。

基于该库,用户不仅可以快速将自训练的模型应用到实际项目中,完成图像分类、目标检测、实例分割和时序模式识别等多种人工智能应用,还可以直观地理解并体验从数据输入、模型推理到结果输出的完整应用流程。通过可视化的推理结果和真实硬件交互,帮助学生理解人工智能的基本原理与应用方式。

准备工作

软件准备

img

安装V2.0.4及以上版本的Mind+编程软件,点击查看Mind+安装教程。如何检查软件版本,见常见问题解答。

模型准备

在使用模型训练推理库制作人工智能项目之前,需要先在 Mind+ 模型训练模块 中训练并导出相应的模型。

用户可根据项目类型,分别使用 Mind+ 模型训练模块中的 图像分类、目标检测、实例分割、时序模式识别 等功能模块完成模型训练。

并模型训练完成后,请将模型导出。导出的模型文件为一个以 .zip 为后缀的压缩包。

解压压缩包,在后续项目中将使用压缩包内的 best.onnx 文件和 data.yaml 文件, 对摄像头采集的图像数据或传感器采集的时序数据进行推理与分析,从而完成图像分类、目标检测、实例分割和时序模式识别等人工智能应用。

请参考以下教程,提前准备对应类型的模型,用于后续项目制作:

加载模型训练推理库

使用本库需要的Python版本为 3.12.7, 本模型训练推理库对硬件平台无强制依赖,本质上可运行于任意符合要求的 Python 环境中。

如果您想结合行空板M10使用本库,请直接阅读:如何结合行空板M10使用模型训练推理库

如仅在电脑端或结合其他主控硬件,使用本库,请自行完成 Python 3.12.7 环境配置

接下来说明如何在V2.0.4及以上版本的Mind+编程软件中,加载本库。

打开 V2.0.4及以上版本的Mind+,点击进入 Python模式

img

在Python模式下,点击左下角 扩展 ,在搜索框中搜索输入 模型训练推理库,点击加载本库。

img

加载成功后,返回Python模式编程页面,点击 模型训练推理 ,可以找到本库积木,如下所示。

img

在联网条件下,加载本库时将自动下载并安装所需的依赖环境。若提示安装失败,如下图,可能是由于 Python 版本不匹配 所致,请检查当前系统的 Python 版本是否为 3.12.7

imgimg

如何结合行空板M10使用模型训练推理库

系统版本为0.4.1 的行空板M10内已为用户预置并适配了可运行本库的 Python 环境,如果您想结合行空板M10,使用本库,请按以下教程完成本库的加载。

如何检查行空板M10系统版本和更新固件,见文档最后常见问题解答

(1)加载行空板M10库

通过USB,连接行空板M10与电脑,打开编程软件Mind+,选择 程序设计 中的 Python模式

img

点击左下角 扩展 ,进入 扩展 页面,搜索 行空板 ,下载 行空板M10 库,并点击加载。

img

(2)切换Python版本 返回编程页面,在终端连接选项中中选择 默认-10.1.2.3 等待连接行空板M10成功。

img

在终端中输入:python --version,按下回车键以检查行空板M10的Python环境版本。如下图。

img

如果非3.12.7版本Python,输入以下指令: pyenv global 3.12.7,切换3.12.7版本Python。切换完成后可以使用前面的查看python版本命令查看当前是什么版本。

注意:如果提示 “pyenv:未找到命令”,说明当前行空板系统固件中没有pyenv,请先按照行空板M10教程中的说明,升级到最新系统: 点击查看升级教程

img

(3)加载模型训练推理库

环境准备完毕后就可以,加载模型训练推理库。点击 扩展 ,在搜索框中搜索输入 模型训练推理库 ,点击加载本库。

img

加载成功后,返回Python模式编程页面,点击 模型训练推理 ,可以找到本库积木,如下所示。

img

使用逻辑说明

模型训练推理库提供了一套 通用、可组合的模型推理使用流程,用于将不同类型的 AI 模型(图像分类、目标检测、实例分割、时序模式识别等)快速应用到实际项目中。

使用模型训练推理库时,整体流程可概括为以下步骤:

img

各模块说明

(1)数据输入

数据输入模块用于为模型推理提供所需的输入数据。根据项目类型不同,输入数据形式包括:

  • 图像数据:用于图像识别类项目。包括:本地图片文件;来自摄像头的实时图像; RTSP 网络视频流 。
  • 文本数据:用于时序模式识别等非图像类项目。包括:本地文本文本;实时添加的数据流。

用户可根据具体项目需求,选择合适的数据来源作为模型推理的输入。 模型训练推理库不强制要求使用本库提供的数据输入模块。只要输入的数据类型正确 、 格式符合模型要求即可作为推理输入。

img

(2)通用显示

通用显示模块用于显示图像数据。除了本库的图像显示积木,用户可以根据项目需求使用OpenCV、行空板M10等其他库的与显示相关的积木。

img

(3)通用推理

通用推理模块是模型训练推理库的核心模块,统一了不同类型模型的推理执行方式。用户可通过该模块加载模型并执行推理,获取模型输出的原始推理结果数据。

img

(4)格式化输出

格式化输出模块用于将模型原始推理结果数据转化为可直接用于程序逻辑控制、判断和显示的标准数据。不同类型的模型推理结果有差异。

img

图像识别类项目

接下来将通过示例说明,如何使用行空板 M10 结合 USB 摄像头,部署图像识别类模型,对摄像头采集的实时画面进行推理,完成图像分类与目标检测等图像类人工智能项目。

硬件准备

img img img img
电脑 行空板M10(系统版本:0.4.1) USB数据线 USB摄像头

接线示意图

请参照下方连接图,完成电脑、行空板M10与USB 摄像头的连接。

img

图像分类示例-猫狗分类

本示例演示如何使用行空板M10部署自训练的猫狗图像分类模型,对摄像头采集的实时画面进行推理,实现对猫和狗的分类,并在行空板M10上显示识别结果。

在本示例中,使用的示例模型为猫狗图像分类模型。 在实际使用中,你可以将示例模型替换为 自己训练或已有的图像分类模型 ,其余代码流程保持一致。

示例程序

img

上传模型文件

应用图像分类模型需要上传图像分类模型文件,点击 资源文件 、选择 上传文件 ,找到导出并解压缩的图像分类模型文件夹、选择onnx文件与yaml文件,点击 打开 ,完成模型上传。

img

运行效果

运行程序后,观察行空板M10屏幕显示摄像头采集实时画面。摄像头对准待分类的图像,依照文字提示,按下A键,观察行空板M10显示图像分类模型推理结果中的标签与置信度数据。

img

终端打印相关分类结果。

img

目标检测示例-交通标志检测

本示例演示如何使用行空板M10部署自训练的交通标志类目标检测模型,对摄像头采集的实时画面进行推理,实时检测并标记出画面中出现的交通标志图像,输出目标检测结果。

在本示例中,使用的模型为交通标志目标检测模型(可以识别 左转右转前行停车 四类交通标志)。

img 在实际使用中,你可以将示例模型替换为 自己训练或已有的目标检测模型 ,其余代码流程保持一致。

示例程序

img

上传模型文件

应用图像分类模型需要上传目标检测模型文件,点击 资源文件 、选择 上传文件 ,找到导出并解压缩的目标检测模型文件夹、选择onnx文件与yaml文件,点击 打开 ,完成模型上传。

img

运行效果

运行程序后,观察行空板M10屏幕显示摄像头采集实时画面,实时框出画面内的交通标志,显示标签和置信度。

img

观察终端打印检测到的每个标志的相关数据。

img

实例分割示例-鲜花实例分割

本示例演示如何使用行空板M10部署自训练的鲜花实例分割模型, 对来自摄像头采集的画面进行推理。框出画面中出现的鲜花实例,并标记出轮廓,输出实例分割相关数据。

在本示例中,使用的模型为鲜花实例分割模型(可以识别各类不同的鲜花并标记出轮廓)。

img

在实际使用中,你可以将示例模型替换为 自己训练或已有的实例分割模型 ,其余代码流程保持一致。

示例程序

img

上传模型文件

应用图像分类模型需要上传实例分割模型文件,点击 资源文件 、选择 上传文件 ,找到导出并解压缩的实例分割模型文件夹、选择onnx文件与yaml文件,点击 打开 ,完成模型上传。

img

运行效果

运行程序后,观察行空板M10屏幕显示摄像头采集实时画面。按下A键,进行一次实例分割任务推理,识别画面中出现的鲜花实例并标记出轮廓一秒。

img

终端打印相关实例分割推理结果。

img

在行空板M10对应程序目录下可以找到保存的提取出的鲜花轮廓图片。

img

时序模式识别类项目

硬件准备

img img img
电脑 行空板M10(系统版本:0.4.1) USB数据线

接线示意图

请参照下方连接图,完成电脑、行空板M10与USB 摄像头的连接。

img

时序模式识别示例-动作识别

本项目演示如何使用已训练好的时序模式识别模型,对行空板 M10 加速度传感器采集的 连续数据 进行识别,并获取推理结果中的标签数据,实现动作识别。

在本示例中,使用的示例模型为能识别鼓掌、敲击和静止三种状态的时序模式识别模型。

在实际使用中,你可以将示例模型替换为 自己训练或已有的时序数据识别模型 ,其余代码流程保持一致,有关时序模式识别的常见问题,见文档最后常见问题解答。

示例程序

img

上传模型文件

应用图像分类模型需要上传时序识别模型文件,点击 资源文件 、选择 上传文件 ,找到导出并解压缩的模型文件夹、选择onnx文件与yaml文件,点击 打开 ,完成模型上传。

img

运行效果

程序上传完成后,单手按住行空板 M10 的 A 键,同时做出 鼓掌或敲击 动作,保持动作 约 5~10 秒。随后松开 A 键。观察屏幕上显示识别到的 动作标签、类别 ID 以及对应的置信度。重复上述操作,进行新一轮的动作识别。

img

积木说明

数据输入类积木 功能说明
img 创建一个图片读取器对象, 从指定的本地图片文件中加载图像数据 ,用于图像识别类模型的推理。
img 创建一个图片读取对象, 从摄像头实时获取画面数据,为图像识别模型类的推理提供输入。
img 创建一个图片读取器对象,通过 RTSP 协议连接网络摄像头或视频流,获取实时图像数据,用于图像识别类模型的推理。
img 用于设置输入图片的尺寸。在进行图像识别类项目时,推理时输入的图片尺寸应与模型训练时数据集的输入尺寸保持一致。
img 图片读取器就会从输入源里获取一帧图像,并把它存到 data 变量中,之后应用data变量用于模型推理。
img 释放图片读取器。常用于图像识别类模型推理任务结束后,释放资源。
img 创建一个文本读取器,读取纯文本格式文件。
img 创建一个文本读取器。
img 向文本读取器对象中逐个添加新的数据。每调用一次,就在末尾添加一个新数据,各数据间用英文逗号连接,
img 从文本读取器的缓冲区中,读取一段内容,并将其存储到变量 data 里,用于后面的模型推理。
通用显示类积木 积木说明
img 创建一个窗口,可用于显示图片、摄像头画面等信息。
img 调整窗口尺寸,一般用于创建窗口后。
img 关闭之前创建的指定窗口,一般用于程序结束后。
img 将存储在data变量里的图像数据,显示到指定窗口中。
img 将存储在data变量里的图像数据存储为指定名称的图片文件。
img 判断某一指定按键是否被按下,这里的时间为每次监听的最长等待时间。
通用推理类积木 积木说明
img 创建并初始化相应的模型推理任务如图像分类、目标检测、实例分割和时序模式识别。需要指定相应模型的onnx文件和yaml文件路径。
img 输入待推理数据,进行一次指定任务的推理。
img 获取最原始的推理结果数据。
img 在原推理图像上绘制出推理结果,常用于目标检测和实例分割类任务在原图像上绘制出检测框、标签、置信度、掩膜等结果。
格式化输出类积木 积木说明
img 获取图像分类任务推理结果中的标签、置信度。
img 判断是否检测到目标,检测到返回真(true),没有返回假(false)
img 在目标检测任务中,用于获取一次推理结果中检测到的结果ID、目标总数
img 从目标检测模型的推理结果中,获取指定序号目标的详细信息,包括标签、置信度、中心点X坐标、中心点Y坐标、宽度和高度数据。在框内填入要获取的是第几个检测到的目标的序号,从0开始计数。
img 判断是否检测到实例,检测到返回真(true),没有返回假(false)
img 在实例分割任务中,用于获取一次推理结果中检测到的结果ID、实例总数
img 从实例分割模型的推理结果中,获取指定序号实例的详细信息,包括标签、置信度、边界框、X坐标、Y坐标、掩膜面积和掩膜边界框。在框内填入要获取的是第几个检测到的实例的序号,从0开始计数。
img 根据实例分割的推理结果,设置返回的推理图像上是否保留掩膜效果。通过填入ID指定某一类别的掩膜保留或去除。
img 判断时序模式识别任务的推理结果是否存在,如果存在推理结果,成功则返回真(True),否则返回假(False)。 若返回 False,可能因为采集的时序数据量不足导致没有推理结果,延长时序数据采集时间后再次尝试推理。
img 获取一次时序模式识别的推理结果信息。包括类别 ID、类别标签名称或对应的置信度。

常见问题解答

Mind+软件相关问题
Q 如何检查Mind+软件版本号?
A 打开Mind+编程软件,点击右上角系统设置图标。V2.0.4及以上版本的Mind+ 的系统设置面板中新增一栏 版本更新,点击 版本更新,可以查看当前Mind+软件版本。img
行空板M10相关问题
Q 如何检查行空板M10的系统版本是否为0.4.1?
A 行空板M10上电后,长按home键进入菜单。找到 查看系统信息 ,检测行空板M10对应系统版本。
Q 如何烧录0.4.1版本的行空板M10固件?
A 行空板固件日志与烧录教程:点击查看
实例分割相关问题
Q 什么是实例分割,这里的实例是指什么?
A 实例分割是一种计算机视觉任务, 在一张图像中,识别并区分每一个具体物体,并精确标出每个物体所占据的像素区域。 实例是指同一类别中的 一个具体个体
总得来说实例分割可以:识别是什么、区分每一个实例、画出每一个实例的完整形状轮廓。
时序模式识别相关问题
Q 时序数据是什么,什么是时序模式识别?
A 时序模式识别是指利用模型对一段连续的时序数据进行分析,识别其中所包含的 动作、行为或变化模式。模型不是关注单个数据值,而是 综合判断一段时间内数据变化的整体特征,从而完成识别与分类。 时序数据是指 按照时间顺序连续采集的数据。与单张图片或单次输入不同,时序数据反映的是数据随时间变化的过程。
例如,行空板 K10 加速度传感器在一段时间内连续采集到的 X、Y、Z 轴数据,就构成了一段时序数据。
Q 训练出的时序模式识别模型的识别效果不理想、准确率低,如何改进?
A 可尝试从以下几个方面进行优化:
(1)增加训练样本数量,重新训练模型。在采集训练数据时,适当延长单次采集的持续时间,以捕捉更加完整、稳定的时序特征。
(2)在应用模型时,确保数据输入方式与训练阶段保持一致 ,例如进行有关加速度传感器时序模式识别项目时,行空板 K10 的使用朝向一致、动作幅度和执行方式统一。
(3)在 实际应用过程 中,适当延长同一类时序数据的输入时间, 比如进行有关加速度传感器时序模式识别项目时,重复同一动作5-10秒,保证模型在推理时能够获取足够的连续时序数据,从而提高识别稳定性和准确率。

社区项目推荐

项目类别 相关项目 项目介绍
图像分类案例 基于图像分类功能的表情识别驾驶伙伴 通过摄像头与行空板M10,识别驾驶员开心、生气、疲劳打盹等状态。以文字 + 图片 + 音乐三重交互方式,守护行车安全。
目标检测案例 基于目标检测功能的商品自动检测与计价装置 让一块小巧的行空板M10化身成为 AI收银员 ——它能够通过摄像头实时识别面前的商品,自动标注名称、框出位置,并快速计算总价。
实例分割案例 基于Mind+实例分割之我的海底世界 行空板M10为核心,结合实例分割AI,捕捉创意小鱼生成互动鱼缸,趣味适配亲子创客课堂。