当前位置: 首页 > news >正文

【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 是啥&#xff1f;二、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伪指令

一、是什么&#xff1f; LDR Rd,const伪指令可在单个指令中构造任何32位数字常数,使用伪指令可以生成超过MOV和MVN指令 允许范围的常数. 实现原理: (1)如果可以用MOV或MVN指令构造该常数,则汇编程序会生成适当的指令 (2)如果不能用MOV或MVN指令构造该常数,则汇编程序会执行下列…...

深入理解Gradle构建系统的工作原理

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &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中&#xff0c;每个对象都有一个原型&#xff08;prototype&#xff09;。原型是一个对象&#xff0c;其他对象可以通过原型来共享属性和方法。当我们创建一个对象时&#xff0c;它会自动关联到一个原型对象。 例如&#xff1a;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 动态绑定图片地址,但是加载图片不成功

问题复现&#xff1a; img标签直接动态绑定图片的相对路径的时候&#xff0c;图片不能正常显示。代码如下所示 <view style"margin: 20rpx" v-for"(item, index) in showSampleImage" :key"index"><u-image :src"item.src"…...

list模拟

之前模拟了string,vector&#xff0c;再到现在的list&#xff0c;list的迭代器封装最让我影响深刻。本次模拟的list是双向带头节点的循环链表&#xff0c;该结构虽然看起来比较复杂&#xff0c;但是却非常有利于我们做删除节点的操作&#xff0c;结构图如下。 由于其节点结构特…...

python字典:怎么取出key对应的值

目录 python中的字典是什么 怎么判断key是否在字典中 怎么取出key对应的值 总结 python中的字典是什么 在Python中&#xff0c;字典&#xff08;Dictionary&#xff09;是一种无序且可变的数据类型&#xff0c;用于存储键-值&#xff08;Key-Value&#xff09;对。字典通过…...

okvis

论文 Keyframe-Based Visual-Inertial SLAM Using Nonlinear Optimization 摘要 由于两种感知模式的互补性&#xff0c;视觉和惯性线索的融合在机器人中变得很流行。虽然迄今为止大多数融合策略都依赖于过滤方案&#xff0c;但视觉机器人界最近转向了非线性优化方法&#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…...

路由器工作原理

路由器原理 路由概述 路由&#xff1a;跨越从源主机到目标主机的一个互联网络来转发数据包的过程。&#xff08;为数据包选择路径的过程&#xff09; 作用&#xff1a;路由器是连接不同网段的。 转发依据&#xff1a; 路由表&#xff1a;路径选择全看路由表&#xff0c;根…...

在centos 7系统docker上构建mysql 5.7

一、VM上已经安装centos 7.9&#xff0c;且已完成docker的构建 二、安装mysql5.7 安装镜像&#xff1a;[rootlocalhost lll]# docker pull mysql:5.7 查看镜像[rootlocalhost lll]# docker images 根据镜像id构建mysql容器&#xff0c;且分配端口号[rootlocalhost lll]# dock…...

数据库的介绍和分类

目录 一、数据库的介绍和分类 二、命令行客户端 三、数据操作 四、查询的基本操作 五、条件查询 六、分组和聚合 资料获取方法 一、数据库的介绍和分类 数据库&#xff1a;长期存储在计算机内、有组织的数据集合 数据库的分类&#xff1a; 关系型数据库 以表格的形式…...

职责链模式——请求的链式处理

1、简介 1.1、概述 很多情况下&#xff0c;在一个软件系统中可以处理某个请求的对象不止一个。例如SCM系统中的采购单审批&#xff0c;主任、副董事长、董事长和董事会都可以处理采购单&#xff0c;他们可以构成一条处理采购单的链式结构。采购单沿着这条链进行传递&#xff…...

docker中涉及的挂载点总结

文章目录 1.场景描述2. 容器信息在主机上位置3. 通过docker run 命令4、通过Dockerfile创建挂载点5、容器共享卷&#xff08;挂载点&#xff09;6、最佳实践&#xff1a;数据容器 1.场景描述 在介绍VOLUME指令之前&#xff0c;我们来看下如下场景需求&#xff1a; 1&#xff…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...

如何在Windows本机安装Python并确保与Python.NET兼容

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...