【K210】K210学习笔记六——MaixHub在线模型训练识别数字
【K210】K210学习笔记六——MaixHub在线模型训练识别数字
- 前言
- K210准备工作
- 数据的获取
- MaixHub如何在线训练模型
- 训练模型在K210上的测试
- 小结
前言
本人大四学生,电赛生涯已经走到尽头,一路上踩过不少坑,但运气也不错拿了两年省一,思来想去,决定开始写博客,将电赛经验分享一二,能力有限,高手轻喷。
往期的博客讲述了 K210 的感光元件模块 sensor 的配置,机器视觉模块 image 中部分函数的使用(目前是用 find_blobs 函数实现一些寻找不同颜色的目标点,寻找不同颜色的线,后面会更新更多 image 模块中的函数使用方法),按键、LCD、LED的使用,定时器的使用,以及串口通信的方法。
sensor 的学习笔记传送门
【K210】K210学习笔记一——sensor
image 的学习笔记传送门
【K210】K210学习笔记二——image
按键、LCD、LED的使用 的学习笔记传送门
【K210】K210学习笔记三——按键、LCD、LED的使用
定时器的使用传送门
【K210】K210学习笔记四——定时器的使用
串口通信传送门
【K210】K210学习笔记五——串口通信
串口通信(往期)传送门
【串口通信】K210与STM32串口通信、K210与OpenMV串口通信
本文着重于如何使用MaixHub平台,在线训练模型,识别数字。MaixHub平台在近期升级了,以前只能将数据包上传训练,现在可以直接将图片上传到MaixHub平台,使用MaixHub平台打标签,然后训练模型,并且可以在MaixHub上看到识别的精准度等信息。
K210准备工作
由于K210的RAM只有8M,为了让运行的模型可以更大,避免出现内存不够的情况,需要刷入小一点的固件,固件及刷固件工具如下,我设置的是0积分免费下载。
固件烧入
将压缩包解压,点开kflash文件夹,双击运行程序。

在打开的程序中点击打开文件,然后选择要刷入的固件。

然后点击下载即可。

数据的获取
数据集可以自行拍照,也可以用工具进行爬取,这里我说明一下如何用工具进行爬取,爬取工具如下。
数据集爬取
将压缩包解压,双击运行download程序。

在打开的程序中,输入要爬取的图片的主题,这里举例数字。然后输入要爬取的数量,这里爬取50张。保存地址随意,能找得到即可,这里选择保存到桌面上的一个新建文件夹。设置完后点击开始下载即可。

MaixHub如何在线训练模型
通过以下链接进入MaixHub在线训练平台,没有账号的创建一个账号登录即可。
MaixHub在线训练平台
然后点击模型训练下的试一试。

然后点击创建项目。

项目名称根据个人喜好命名即可,这里命名为数字识别,项目的类型的图像检测。

然后进入该项目,点击数据集,创建数据集,然后给创建的数据集命名,然后点击提交即可。

然后选中该数据集,会提示是否确定选择这个数据集,点击确定即可。如果要更换数据集,再创建一个项目然后绑定另外的数据集就好了。


然后点击采集数据,选择图片,然后打开刚刚爬取图片的那个文件夹,Ctrl + A 选中所有图片,然后点击打开,再点击开始上传即可。

然后点击标注数据,即可开始对数据集打标签啦!推荐可以先点击一下添加标签,然后依次添加需要打的标签,这里我是添加了0到9共十个标签。


然后设定一个标签为默认标签,然后按键盘的w键,在对应的数字上按住鼠标左键进行画框即可,按d键可以切换到下一张图片,按a键可以切换到上一张图片,按s可以保存标签(如果你没有按s保存,但是按了d,或者a切换照片,标签会自动保存)

然后将所有图片都打上标签就好了!

然后点击创建任务,按照图中所示配置即可创建任务开始训练了。

如果点击查看文档的话,会看到各参数的说明信息。迭代次数是训练的次数,这个值越大,训练的次数越多,MaixHub的上限是200次,我这里就设置为200次了。批数据量大小不宜设置过大,设置过大可能会导致内存不足,这里先设置为4,其他的参数默认。

训练完成后就可以在训练记录中看见训练的效果了,这里由于我标记的数据集不是很多,因此精度会比较差,如果要提高精度,需要更大量的数据集(比如爬取几百张、几千张),这里的训练ID是11014,在饼图上面可以看见。


训练模型在K210上的测试
点击部署模型,根据训练ID找到我们要测试的模型,上面的ID是11014,因此这里点开11014。

然后点击手动部署,下载模型文件,可以得到一个压缩包。

将压缩包解压,可以得到测试代码的py文件和模型的kmodel文件。

通过读卡器,将模型文件复制到SD卡中。

然后将SD卡插入K210。

然后用MaixPy IDE打开测试代码,将K210的USB线接入电脑,连接运行即可。

如果你想看到识别的数字在图像中的坐标,你可以在这个位置加一句print(obj)打印。

可以看到K210可以正确识别到数字6,置信概率是0.81。

在串口终端可以看到识别到的6的坐标信息,value是置信概率,classid是表示识别到的数字在数组labels中的下标。

可以看到6在labels中是第8个数,因此数组下标是7,也就是说labels[7]就是6。

需要注意的是,将6倒置过来可能就会识别成9,这个问题暂时我还没好的解决方法。

小结
使用MaixHub平台进行模型训练的教程已经做完了,并且也在K210上成功进行了测试。由于我并不是专门学这方面的,因此我感觉我这篇教程还写的不是很好,有新的心得的话,后面我会持续更新的。 下一期主要说怎么将识别到的坐标通过串口通信传输到STM32,因为这里用的代码是MaixHub平台提供的,我需要将其中用得到的部分加入我之前的代码中,然后通过串口通信发送出去,主要是为了方便大家使用,我想让大家可以轻松的搞应用,在各种比赛拿奖,总之我的比赛之路是走到尽头了,就是想将这些经验传承下去吧!下期再见咯!
相关文章:
【K210】K210学习笔记六——MaixHub在线模型训练识别数字
【K210】K210学习笔记六——MaixHub在线模型训练识别数字 前言K210准备工作数据的获取MaixHub如何在线训练模型训练模型在K210上的测试小结 前言 本人大四学生,电赛生涯已经走到尽头,一路上踩过不少坑,但运气也不错拿了两年省一,…...
142. 环形链表 II
142. 环形链表 II 中等 2.2K 相关企业 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定…...
Flutter系列文章-Flutter进阶2
这一节我将再详细地为您介绍 Flutter 进阶主题,包括导航和路由、状态管理、异步处理、HTTP请求和Rest API,以及数据持久化。让我们逐个介绍这些主题。 1.导航和路由 在 Flutter 中,导航和路由是构建多页面应用的关键概念。导航是指从一个页…...
css实现鼠标滑动左下角弹框带动画效果
代码 <div classNamekuang></div> css代码 .kuang {height: 500px;width: 400px;// background-color: #fff;position: absolute;z-index: 10;bottom: 0;transform: translateX(-390px)}.kuang:hover {animation: myanimation 3s linear 1;animation-fill-mode:f…...
【Spring Cloud Alibaba】限流--Sentinel
文章目录 概述一、Sentinel 是啥?二、Sentinel 的生态环境三、Sentinel 核心概念3.1、资源3.2、规则 四、Sentinel 限流4.1、单机限流4.1.1、引入依赖4.1.2、定义限流规则4.1.3、定义限流资源4.1.4、运行结果 4.2、控制台限流4.2.1、客户端接入控制台4.2.2、引入依赖…...
ARM将常数加载到寄存器方法之LDR伪指令
一、是什么? LDR Rd,const伪指令可在单个指令中构造任何32位数字常数,使用伪指令可以生成超过MOV和MVN指令 允许范围的常数. 实现原理: (1)如果可以用MOV或MVN指令构造该常数,则汇编程序会生成适当的指令 (2)如果不能用MOV或MVN指令构造该常数,则汇编程序会执行下列…...
深入理解Gradle构建系统的工作原理
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
STM32F030C8T6输出3路PWM
1,常规套餐 上电初始化 SystemInit(); TIM1_Init(); 2,TIMI1初始化 TIM_TimeBaseInitTypeDef TIM1_TimeBaseStructure; TIM_OCInitTypeDef TIM1_OCInitStructure; NVIC_InitTypeDef NVIC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; //记得打开时钟 RCC_AHBPeriphClo…...
如何理解原型及原型链?js的继承方式
原型与原型链 原型 在js中,每个对象都有一个原型(prototype)。原型是一个对象,其他对象可以通过原型来共享属性和方法。当我们创建一个对象时,它会自动关联到一个原型对象。 例如:function Person(name, a…...
C# 按表格中的某列排序/查询
using System; using System.Data; using System.Linq;class Program {static void Main(){// 创建一个示例的 DataTable 对象DataTable table new DataTable();table.Columns.Add("ID", typeof(int));table.Columns.Add("Name", typeof(string));table.R…...
【Vue】】img使用 :src 动态绑定图片地址,但是加载图片不成功
问题复现: img标签直接动态绑定图片的相对路径的时候,图片不能正常显示。代码如下所示 <view style"margin: 20rpx" v-for"(item, index) in showSampleImage" :key"index"><u-image :src"item.src"…...
list模拟
之前模拟了string,vector,再到现在的list,list的迭代器封装最让我影响深刻。本次模拟的list是双向带头节点的循环链表,该结构虽然看起来比较复杂,但是却非常有利于我们做删除节点的操作,结构图如下。 由于其节点结构特…...
python字典:怎么取出key对应的值
目录 python中的字典是什么 怎么判断key是否在字典中 怎么取出key对应的值 总结 python中的字典是什么 在Python中,字典(Dictionary)是一种无序且可变的数据类型,用于存储键-值(Key-Value)对。字典通过…...
okvis
论文 Keyframe-Based Visual-Inertial SLAM Using Nonlinear Optimization 摘要 由于两种感知模式的互补性,视觉和惯性线索的融合在机器人中变得很流行。虽然迄今为止大多数融合策略都依赖于过滤方案,但视觉机器人界最近转向了非线性优化方法&#x…...
fabric js双击弹出菜单, 双击弹出输入框 修改文字 群组对象
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>测试1</title><style type"text/css">body {background-color: #ccc;float: left;}#main {background-color: #fff;border: 1px…...
路由器工作原理
路由器原理 路由概述 路由:跨越从源主机到目标主机的一个互联网络来转发数据包的过程。(为数据包选择路径的过程) 作用:路由器是连接不同网段的。 转发依据: 路由表:路径选择全看路由表,根…...
在centos 7系统docker上构建mysql 5.7
一、VM上已经安装centos 7.9,且已完成docker的构建 二、安装mysql5.7 安装镜像:[rootlocalhost lll]# docker pull mysql:5.7 查看镜像[rootlocalhost lll]# docker images 根据镜像id构建mysql容器,且分配端口号[rootlocalhost lll]# dock…...
数据库的介绍和分类
目录 一、数据库的介绍和分类 二、命令行客户端 三、数据操作 四、查询的基本操作 五、条件查询 六、分组和聚合 资料获取方法 一、数据库的介绍和分类 数据库:长期存储在计算机内、有组织的数据集合 数据库的分类: 关系型数据库 以表格的形式…...
职责链模式——请求的链式处理
1、简介 1.1、概述 很多情况下,在一个软件系统中可以处理某个请求的对象不止一个。例如SCM系统中的采购单审批,主任、副董事长、董事长和董事会都可以处理采购单,他们可以构成一条处理采购单的链式结构。采购单沿着这条链进行传递ÿ…...
docker中涉及的挂载点总结
文章目录 1.场景描述2. 容器信息在主机上位置3. 通过docker run 命令4、通过Dockerfile创建挂载点5、容器共享卷(挂载点)6、最佳实践:数据容器 1.场景描述 在介绍VOLUME指令之前,我们来看下如下场景需求: 1ÿ…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...
MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...
LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》
🧠 LangChain 中 TextSplitter 的使用详解:从基础到进阶(附代码) 一、前言 在处理大规模文本数据时,特别是在构建知识库或进行大模型训练与推理时,文本切分(Text Splitting) 是一个…...
