K210视觉识别模块学习笔记4: 训练与使用自己的模型_识别字母

今日开始学习K210视觉识别模块: 模型训练与使用_识别字母

亚博智能的K210视觉识别模块......  

固件库: maixpy_v0.6.2_52_gb1a1c5c5d_minimum_with_ide_support.bin

文章提供测试代码讲解、完整代码贴出、测试效果图、测试工程下载

这里也算是正式开始进入到视觉识别的领域了,先从训练模型 与 识别字母开始吧......

本文目标很简单,就是尝试训练自己的模型识别字母A与B

目录

工具软件准备:

工具软件打包下载:

拍摄图片:

文件与图片处理:

新建文件夹:

Image_tool 图片处理:

labeling软件标注训练集:

打开文件夹:

更改保存输出:

打开自动保存:

框注限制识别的区域:

检查xml文件夹:

labels填写标签:

网站创建项目:

部署模型文件:

修改主函数:

测试程序前有些固件问题需要调整:

下载适配的固件:

先擦除固件:

然后使用kflash_kui烧录以下固件库到flash:

重启开机测试效果展示:

固件与模型打包下载:

网上学习资料贴出:

OpenCV Label标注软件

之前尝试下载使用多个固件的尝试:


工具软件准备:

自己训练模型主要有俩个工具软件需要准备:

1、  Image_tool  (用于图像格式清晰度转换)

2、   labelImg(用于打标签)

工具软件打包下载:

当然你也可以不使用和我一样的工具软件,网上有许多各种各样的功能更多的软件:(文末有链接可以了解其他软件)

https://download.csdn.net/download/qq_64257614/89383899

拍摄图片:

1、确保拍摄角度与实际应用场景相匹配。

2、如果可能,模拟K210模块如何查看这些图片。即使用K210来取图,(这需要自己编程K210拍摄图片的例程):

K210视觉识别模块学习笔记3:内存卡写入拍摄图片_LED三色灯的操作_按键操作_定时器的配置使用-CSDN博客

3、光线要充足且均匀,避免过曝或欠曝,以及阴影和反光。

4、拍摄不同角度、不同光照条件、不同背景、不同大小和形状的图像,以增加模型的泛化能力。

5、考虑图像的各种旋转、缩放和倾斜,以模拟实际应用中的变化。

这里我也是拍摄了一共25张AB各个角度的照片:

文件与图片处理:

新建文件夹:

像我一样新建一个文件夹   (这个文件夹名称任意)

但是在里面新建以下的几个项目名称必须一致:

Image_tool 图片处理:

这个是选择图像所在文件夹进行转换的:

转换完成会在图像目录产生一个新的文件夹inages_out

然后我们删掉原来的文件夹,将"inages_out"名称改为"inages"

labeling软件标注训练集:

注意点:

有些人可能会出现双击程序,弹出了一个命令控制台,结果2秒就退出,无法打开labeling的情况,这时应检查它的所在目录有无中文字符,如果有,请不要放在有中文字符的目录!

其余打不开情况请检查你的Python环境

打开文件夹:

更改保存输出:

打开自动保存:

框注限制识别的区域:

然后像这样将图片中所有A\B都框柱出来:

检查xml文件夹:

全部标注完后应该有相应数量的xml文件生成在文件夹:

labels填写标签:

这一步是要在之前创建的labels.txt中填写我们用到的标注:

我们用到了A\B,俩个标注用换行隔开

网站创建项目:

在线训练模型网址如下:

 MaixHub

 先准备好之前整个文件准备的压缩包(zip格式):

跟着以下步骤进行点击创建:
 

我们发现其实这个网站也可以进行数据标注:

然后回到刚才的项目,选择了数据集后创建任务:

这里我也没研究这些参数有何意义,但我问了AI,并将它的解释放在下文:

  1. 迭代次数(Epochs)
    • 迭代次数决定了模型在整个数据集上训练的次数。
    • 如果迭代次数太少,模型可能无法充分学习数据的特征;如果迭代次数太多,模型可能会过拟合。
    • 建议从较小的迭代次数开始(如10个epochs),然后根据验证集的性能逐渐增加。
  2. 批数据量大小(Batch Size)
    • 批数据量大小决定了在更新模型参数之前用于计算梯度损失的数据样本数量。
    • 较大的批数据量可以加速训练,但可能会消耗更多的内存;较小的批数据量可以更有效地适应不同的数据分布,但可能会降低训练速度。
    • 根据硬件资源和数据集大小选择合适的批数据量大小,常见的选择包括32、64、128等。
  3. 最大学习率(Learning Rate)
    • 学习率决定了模型参数在每次迭代中更新的幅度。
    • 如果学习率太大,模型可能无法收敛;如果学习率太小,训练可能会非常缓慢。
    • 可以使用学习率衰减策略(如指数衰减、余弦衰减等),在训练过程中逐渐减小学习率。
    • 初始学习率的选择通常需要根据实验来确定,常见的选择包括0.01、0.001等。
  4. 标注框限制(Bounding Box Constraints)
    • 在目标检测任务中,标注框限制可能涉及标注框的大小、比例或位置等。
    • 这些限制可以根据具体任务和数据集进行调整,以确保标注框的准确性和一致性。
  5. 数据均衡(Data Balancing)
    • 如果数据集中不同类别的样本数量差异很大,可能会导致模型对某些类别的识别性能较差。
    • 可以使用数据均衡技术(如过采样少数类、欠采样多数类等)来平衡不同类别的样本数量。
  6. 标准化平均值(Mean Normalization)和标准差(Standard Deviation Normalization)
    • 在数据预处理阶段,对输入数据进行标准化可以提高模型的训练速度和性能。
    • 标准化平均值和标准差通常根据训练数据的统计信息来确定。对于图像数据,常见的做法是对每个颜色通道分别计算平均值和标准差,并在输入模型之前将数据减去平均值并除以标准差。

需要注意的是,以上参数的具体调整值需要根据实际任务和数据集进行确定。在训练过程中,可以使用交叉验证、早停(Early Stopping)等技术来监控模型的性能,并根据验证集的性能调整训练参数。此外,还可以使用网格搜索(Grid Search)等调参方法来系统地搜索最佳参数组合。

 

就是需要我们调整各个参数进行训练,使得准确率提升:

像我这就最终通过多次调整参数训练出来了100准确率的模型了:

然后就是训练出高准确率的模型后,选择手动部署模型,来下载模型文件:

部署模型文件:

解压模型后直接把内容都复制到SD卡:

修改主函数:

它的主函数写的有些问题,需要我们添加一行代码在头部:

from machine import UART

 

测试程序前有些固件问题需要调整:

K210固件库支持多下载码(或称为多固件、多版本固件)

下载适配的固件:

先擦除固件:

然后使用kflash_kui烧录以下固件库到flash:

maixpy_v0.6.2_52_gb1a1c5c5d_minimum_with_ide_support.bin

重启开机测试效果展示:

固件与模型打包下载:

https://download.csdn.net/download/qq_64257614/89385496

网上学习资料贴出:

K210 Mx-yolov3模型训练和物体识别-CSDN博客

[教程]从0自制模型,实现多物体识别(以k210多数字识别举例)_哔哩哔哩_bilibili

OpenCV Label标注软件

之前尝试下载使用多个固件的尝试:

之前尝试过下载多个固件,但貌似没法使用......

也许只是我操作不太对......

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/668467.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DataGrip 数据库连接客户端

I DataGrip 安装 1.1安装 打开dmg镜像,将“DataGrip.app”拖入应用程序中; 1.2 Act 打开应用程序,点击试用模式启动软件,然后将“jetbrains-agent-latest”拖到任意位置,然后拖入,弹出对话框,点击“Rest…

IDEA调试前端html报错

IDEA调试前端html报错 报错如下: Waiting for connection to localhost:59004. Please ensure that the browser was started successfully with remote debugging port opened. Port cannot be opened if Chrome having the same User Data Directory is already …

.Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架

1.项目结构 该项目是基于.net8开发的Asp.Net Core WebApi后端服务,集成了Efcore,Autofac,Jwt,AutoMapper,Serilog,Quartz,MiniExcel等组件。该框架简单易上手,没有额外的学习成本; 该项目采用了多层结构设计,有利于解耦,包含公共层&#xff0…

1.3Java对象和类

Java作为一种面向对象语言。支持以下基本概念: 多态继承封装抽象类对象实例方法重载 本节我们重点研究对象和类的概念。 对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个…

Stable Diffusion Webui--安装与使用

最近进行的课程汇报,学习了2023年的CVPR文章《DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation》,因此尝试使用了几种方法对这篇文章的工作进行了一定的复现。本文主要介绍Stable Diffusion Web UI(webui)的安装…

基于多源土地覆盖产品整合的高精度中国森林覆盖数据集

本数据集是结合多源土地覆盖产品的一致性和互补性,基于无云合成影像并结合随机森林分类模型和多级投票策略生产的一套全国范围的高精度森林覆盖数据产品。该数据产品可以提升我国森林资源监测、林业经营管理、森林碳汇计量评价等方面工作的准确性,为森林…

SSL发送邮件时如何配置客户端确保安全性?

怎么使用SSL安全协议通过AokSend发送加密的电子邮件? SSL是一种常用的加密通信协议,用于确保数据在客户端和服务器之间的安全传输。AokSend将讨论如何通过配置客户端确保SSL发送邮件的安全性,并介绍如何使用SSL安全协议通过AokSend发送加密的…

【开源】课程管理平台 JAVA+Vue.js+SpringBoot+MySQL

目录 一、项目介绍 课程管理模块 作业题目模块 考试阅卷模块 教师评价模块 部门角色菜单模块 二、项目截图 三、核心代码 一、项目介绍 Vue.jsSpringBoot前后端分离新手入门项目《课程管理平台》,包括课程管理模块、作业题目模块、考试阅卷模块、教师评价模…

docker安装ubtuntu

☆ 问题描述 纯新手在docker desktop 中安装ubuntu ★ 解决方案 1. 拉取镜像 docker pull ubuntu2.查看镜像是否拉取成功 docker images3. 运行容器 docker run -itd --name <容器名称> ubuntu4. 通过 exec 命令进入 ubuntu 容器 docker exec -it <容器名>…

Java:使用Opencv进行大图找小图

本文将介绍使用Java操作Opencv进行行大图找小图测试&#xff01; 1、OpenCV简介 OpenCV是一个开源计算机视觉库&#xff0c;提供了丰富的图像处理和计算机规觉算法。它支持多种编程语言&#xff0c;包括Java本文将介绍如何在Java中使用OpenCV进行图像处理和计算机视觉任务。 …

C++|set、map模拟实现<——红黑树

目录 一、红黑树的迭代器 1.1红黑树迭代器框架 1.2operator*() && operator->() 1.3operator() 1.4operator--() 1.5operator() && operator!() 1.6begin() && end() 二、如何用红黑树搭配map和set(仿函数) 三、红黑树封装map和set(简易版…

【蓝桥杯国赛】双指针

适用于以下的情境&#xff1a; ① 数组 / 字符串中&#xff0c;有多少个满足情况的连续区间。 ② 数组 / 字符串&#xff0c;合并。 【第十三届pythonB组试题&#xff1a;近似gcd】 1. 题目描述 2. 难度&#xff1a;⭐⭐⭐⭐ 3. 思考分析&#xff1a; 具体参考&#xff…

跟风报考PMP,我真的后悔了

真的太香吧&#xff01; 我一开始没打算报考PMP证书的&#xff0c;但是我看身边很多朋友都因为PMP证书得到了升职加薪&#xff0c;这让我实在是一整个羡慕住了&#xff0c;所以我也去报考了PMP。 报考PMP前期我做了什么&#xff1f; 由于我是零基础&#xff0c;没有什么项目…

封装uview-plus上传组件up-upload,支持v-model绑定

痛点 vue上传组件拿到了一般无法直接使用&#xff0c;需要对其上下传的接口按照业务进行处理及定制。本次拿到的uview-plus也是一样&#xff0c;对其上传组件up-upload进行封装&#xff0c;令其更方便开发 目标 封装希望达到的目标&#xff0c;就是实现v-model的绑定。令其支…

SQL 语言:基本概述和数据定义

文章目录 1. 数据库语言2. SQL 概述2.1 SQL 的特点2.2 SQL 语言支持三级模式结构2.3 SQL 的基本组成 3. 数据定义3.1 数据类型3.2 创建表3.3 修改和删除表3.4 创建和删除索引3.5 创建和删除视图 1. 数据库语言 数据结构化语言 (Structured Query Language&#xff0c;SQL)&…

Sui Nami Bags对NFT使用案例进行创新

在四月的Sui Basecamp活动中&#xff0c;与会者体验了一系列Sui技术&#xff0c;这些技术以Nami Bags的形式呈现&#xff0c;这些数字礼包里满是来自Sui生态的NFT和优惠券。通过Enoki&#xff08;Mysten Labs的新客户参与平台&#xff09;提供支持&#xff0c;即使没有加密钱包…

【设计模式深度剖析】【B】【结构型】【对比】| 主要区别包装的不同

&#x1f448;️上一篇:享元模式 回 顾&#xff1a;结构型设计模式 1.代理模式&#x1f448;️ 2.装饰器模式&#x1f448;️ 3.适配器模式&#x1f448;️ 4.组合模式&#x1f448;️ 5.桥接模式&#x1f448;️ 6.外观模式&#x1f448;️ 7.享元模式&#x…

cocos creator 3.x实现手机虚拟操作杆

简介 在许多移动游戏中&#xff0c;虚拟操纵杆是一个重要的用户界面元素&#xff0c;用于控制角色或物体的移动。本文将介绍如何在Unity中实现虚拟操纵杆&#xff0c;提供了一段用于移动控制的代码。我们将讨论不同类型的虚拟操纵杆&#xff0c;如固定和跟随&#xff0c;以及如…

SpringBootWeb 篇-深入了解 Spring 异常处理、事务管理和配置文件参数配置化、yml 配置文件

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 配置文件 1.1 yml 配置文件 1.2 参数配置化 1.2.1 使用 Value 注解注入单个配置参数 1.2.2 使用 ConfigurationProperties 注解将一组相关配置参数注入到一个类中…

大型企业用什么文件加密软件,五款适合企业的文件加密软件

大型企业在选择文件加密软件时&#xff0c;通常会倾向于那些能够提供全面数据保护、具有高度可定制性、易于管理且能适应复杂组织结构的解决方案。以下是一些适合大型企业使用的文件加密软件&#xff1a; 1.域智盾软件&#xff1a; 作为一款企业级文件加密软件&#xff0c;支持…