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标注软件

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matplotlib ---词云图

词云图是一种直观的方式来展示文本数据,可以体现出一个文本中词频的使用情况,有利于文本分析,通过词频可以抓住一篇文章的重点 本文通过处理一篇关于分析影响洋流流向的文章,分析影响洋流流向的主要因素都有哪些 文本在文末结尾 …

基于Freertos的工训机器人

一. 工训机器人 V1 1. 实物 将自制的F4开发板放置车底板下方,节省上方空间,且能保证布线方便整齐。 2. SW仿真 使用SolidWorks进行仿真,且绘制3D打印件。 工训仿真 3.3D打印爪测试 机械爪测试 二. 工训机器人 V2 1. 实物 工训机器人V2不同于…

IDEA 打开项目后看不到项目结构怎么办?

1、先把这个项目从 IDEA 中移除 2、再重新打开或导入 3、如果还没有解决,就先把这个项目拷贝出来把原来的路径上的项目给删除,然后再把拷贝后的项目放在一个路径下,再打开就可以了

沟通程序化(1):跟着鬼谷子学沟通—“飞箝”之术

沟通的基础需要倾听,但如果对方听不进你的话,即便你说的再有道理,对方也很难入心。让我们看看鬼谷子的“飞箝”之术能给我们带来什么样的启发吧! “飞箝”之术,源自中国古代兵法家、纵横家鼻祖鬼谷子的智慧&#xff0…

​LabVIEW超声波检测

LabVIEW超声波检测 在现代工业生产和科学研究中,超声检测技术因其无损性、高效率和可靠性而被广泛应用于材料和结构的缺陷检测。然而,传统的超声检测仪器往往依赖于操作者的经验和技能,其检测过程不够智能化,且检测结果的解读具有…

Appium系列(2)元素定位工具appium-inspector

背景 如实现移动端自动化,依赖任何工具时,都需要针对于页面中的元素进行识别,通过识别到指定的元素,对元素进行事件操作。 识别元素的工具为appium官网提供的appium-inspector。 appium-inspector下载地址 我这里是mac电脑需要下…

使用Python突破网站验证码限制

之前有小伙伴说,在web自动化的过程中,经常会被登录的验证码给卡住,不知道如何去通过验证码的验证,今天专门给大家来聊聊验证码的问题。 常见的验证码一般分为两类,一类是图文验证码,一类是滑块验证码&#…

vue2+antv/x6实现er图

效果图 安装依赖 npm install antv/x6 --save 我目前的项目安装的版本是antv/x6 2.18.1 人狠话不多&#xff0c;直接上代码 <template><div class"er-graph-container"><!-- 画布容器 --><div ref"graphContainerRef" id"gr…

SpringCloud如何实现SSO单点登录?

目录 一、SpringCloud框架介绍 二、什么是SSO单点登录 三、单点登录的必要性 四、SpringCloud如何实现SSO单点登录 一、SpringCloud框架介绍 Spring Cloud是一个基于Spring Boot的微服务架构开发工具集&#xff0c;它整合了多种微服务解决方案&#xff0c;如服务发现、配置…

es的总结

es的collapse es的collapse只能针对一个字段聚合&#xff08;针对大数据量去重&#xff09;&#xff0c;如果以age为聚合字段&#xff0c;则会展示第一条数据&#xff0c;如果需要展示多个字段&#xff0c;需要创建新的字段&#xff0c;如下 POST testleh/_update_by_query {…

C#WPF数字大屏项目实战07--当日产量

1、第2列布局 第2列分三行&#xff0c;第一行分6列 2、当日产量布局 3、产量数据布局 运行效果 4、计划产量和完成度 运行效果 5、良品率布局 1、添加用户控件 2、用户控件绘制圆 2、使用用户控件 3、运行效果 4、注意点 这三个数值目前是静态的&#xff0c;可以由后台程序项…

构建高效稳定的短视频直播系统架构

随着短视频直播的迅猛发展&#xff0c;构建一个高效稳定的短视频直播系统架构成为了互联网企业的重要挑战。本文将探讨如何构建高效稳定的短视频直播系统架构&#xff0c;以提供优质的用户体验和满足日益增长的用户需求。 ### 1. 短视频直播系统的背景 短视频直播近年来蓬勃发…

ARM-V9 RME(Realm Management Extension)系统架构之系统安全能力的信任根服务

安全之安全(security)博客目录导读 目录 一、信任根服务 1、非易失性存储 2、根看门狗 3、随机数生成器 4、加密服务 5、硬件强制安全性 本节定义了系统架构必须支持的一般安全属性和能力&#xff0c;以确保RME安全性。 本章扩展了可能属于系统认证配置文件的一部分的其…

k8s之PV、PVC

文章目录 k8s之PV、PVC一、存储卷1、存储卷定义2、存储卷的作用2.1 数据持久化2.2 数据共享2.3 解耦2.4 灵活性 3、存储卷的分类3.1 emptyDir存储卷3.1.1 定义3.1.2 特点3.1.3 用途3.1.4 示例 3.2 hostPath存储卷3.2.1 定义3.2.2 特点3.2.3 用途3.2.4 示例 3.3 NFS存储卷3.3.1 …

SQL数据库多表创建之一对多、多对多表创建

MySQL多表创建关联及操作_mysql创建关联表-CSDN博客文章浏览阅读1.1k次&#xff0c;点赞21次&#xff0c;收藏20次。表与表之间的关系表语表之间的关系&#xff0c;说的就是表与表数据之间的关系。_mysql创建关联表https://blog.csdn.net/2401_83641392/article/details/137031…

【计算机毕业设计】345大学生心理健康测评管理系统小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

matlab GUI界面设计

【实验内容】 用MATLAB的GUI程序设计一个具备图像边缘检测功能的用户界面&#xff0c;该设计程序有以下基本功能&#xff1a; &#xff08;1&#xff09;图像的读取和保存。 &#xff08;2&#xff09;设计图形用户界面&#xff0c;让用户对图像进行彩色图像到灰度图像的转换…

【Python】解决Python报错:AttributeError: ‘NoneType‘ object has no attribute ‘xxx‘

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

【vue】v-for只显示前几个数据,超出显示查看更多

v-for只显示前几个数据&#xff0c;超出显示查看更多 如图 <div v-for"(item,index) in list.slice(0,3)" :key"index"><div class"degreeNo" :class"index0?noOne:index1?noTwo:index2?noThree:"> NO{{index1}}:<…

【蓝桥杯国赛】双指针

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