基于大模型训练的数字识别

创作原因

现在写电赛题,题目有识别数字的要求。但使用设备openmv使用模板匹配的算法帧率很低,且识别效果不是很好,于是我们就想到了利用神经网络训练模型来识别数字

正文部分

内容介绍

本文内容是基于openmv使用Edge Impulse训练大模型。

这篇文章的介绍会很详细,从数据集的采集到数据的上传再到模型的训练以及最后的模型的导出, 都会有较为详细的介绍,适合此前没有任何模型训练经验且使用openmv的朋友进行学习

步骤一:图像采集

唤起数据采集器

打开IDE后

依次点击:工具/数据集编辑器/新数据集

在这里我选择在桌面上新建一个文件夹来存放新采集的数据集

这时在IDE左上角会出现数据集编辑器

新建数据集文件

这个时候点击左侧的新建文件夹

就是在我们的数据集中新建文件夹

我们需要根据我们的分类来创建文件夹

我需要做的是识别数字,所以我的第一个分类的文件夹名称就叫number_1

数据采集

在连接了openmv有图像显示之后

点击左边的照片图标进行拍照(也就是数据采集)

由于感觉图片光线比较暗,所以我开了一下补光灯

虽然感觉开了之后也没有什么用,但至少有点心理作用

再次回到数据采集的正题,这一个1,我们就浅浅地拍三十张照片吧

接下来就是拍照的过程,在这个过程中,需要注意的是:考虑可能出现的情况进行多角度的照片拍摄

拍照的过程比较枯燥,没有什么好说的点,埋头苦干就行了,这里跳过

步骤二:数据上传

Edge Impulse的注册

完成了图像采集之后

就需要把采集的数据集上传到EDGE IMPULSE的网站上进行在线的训练

首先登录EDGE IMPULSE的官网

www.edgeimpulse.com

如果之前没有账户,点击Login

再在登录界面选择注册

填完所有信息,点击Sign up之后,会给你发送一个邮件

点击右键给出链接,会跳转到登录界面

然后填写你的用户名和密码,点击登录

账号激活完成

通过Keys实现数据集传输

然后我新建了一个名字是number的工程

目前新建工程中并没有数据集,我们点击Keys

我们选择API Key,然后复制API KEY

注意在这里显示的API KEY可能不完整,可以通过缩放屏幕来使他显示完全

我们要拿API KEY来做什么呢?

答案是,我们要使用API KEY来实现与OpenMv IDE的联通

点击工具,依次选择:数据集编辑器/Export/Upload to Edge Impulse by API Key

选择之后跳出来一个弹窗

把复制的API KEY输入进去

然后会让你选择上传时训练集和数据集的比例

选择这个参数的意义在于,会在你上传的数据(照片中)选择你选择的训练集比例

用于训练模型,数据集比例的照片用来最后测试训练效果

这个值一般选默认的百分之八十和百分之二十就可以

注意一点,采集图片时尽量让背景简单,复杂的背景会在一定程度上影响模型训练的结果

接下来,等待上传成功

上传成功

步骤三:模型训练

模型创建

数据上传完成之后,来到这个界面

开始模型的创建

首先是对图像的处理

它训练的时候会将图像变成长宽等比例的一个图像,我们选择默认的96*96就可以

然后我们再选择创建模块

这里是选择你要分类的类型,可以选择图像、声音、类型之类的选项,我们openmv就默认选择视频就可以

然后我们再添加下一个模块

选择进行学习的模块

这里我们选第一个

至于选择的理由嘛,它是两个带星号(推荐)的方法之一,而且另一个方法根据说明只能用于某个芯片

然后发现我建立的模型识别不出来特征

后来和罗俊棋开腾讯会议发现问题是上传的数据集没有打上标签

现在就解决这个没有标签的问题

找到问题所在了 ,在我的数据集刚上传的时候是有标签的,接下来会弹出一个弹窗, 这个弹窗必须选择no,不然你的标签就会被去除

解决问题后继续模型的搭建
 

学习方法选择迁移训练

到此模块选择完毕,可以看见,一共有八个feature,都是我数据集分类的名称

点击保存,显示保存成功

图像特征提取

下一步选择image,对我们呢的图像做DSP预处理

我们需要选择是RGB还是灰度图,这里选择RGB即可,具体的根据需求来

在后来模型训练的时候,我发现RGB的模型训练效果不好,然后就换了Grascale,训练效果很好,选择根据需求

DSP图像预处理它会把每一张图片生成一些features

选完之后点击保存,就会自动跳到下一个界面

在这个界面我们只需要点击Generate features就可以了

就是对图片做预处理

当特征创建完之后,image的部分就完成了,我们进入下一个部分

对机器学习方法的一些参数进行设置

机器学习参数设置

第一个参数是训练的轮数

第二个参数是训练的速率,越大训练越快,但是这个参数过高过低都会导致训练效果不好

接下来就是是否勾选数据增强,它可以在训练的过程中随机地变换数据,它可以让你训练更多地轮数而且不会过拟合,这样可以提高训练的准确度

第三个参数是置信度

三个参数都选择默认值就可以

然后就可以开始训练了

训练结果如下,效果还是可以的

模型训练完成之后,你也可以选择在Versioning保存当前训练出来的模型版本

当然你也可以不保存

保存之后,以后也可以使用这个模型

比如当你新上传了数据集,重新训练出的模型就会把之前的模型覆盖掉

也许之后训练的模型效果没有之前的效果好,也就有了保存训练出的模型的必要

步骤四:模型导出

模型训练好之后,我们现在要做的事就是导出训练好的模型

导出OpenMV需要的文件

由于我们是要把模型导出到openmv上,所以我们点击Deployment选择Search deployment options

在给出的选项中选择openmv

然后就可以点击build了

当build完成之后,会自动地把生成的文件下载

把导出文件应用于OpenMV

把下载的文件夹解压之后,出来了三个文件

把这三个文件复制到openmv的内置flash中,打开其中的.py文件

就可以开始使用代码了

结语

这篇文章就到这里,祝各位也许在熬夜,也许在疲惫的”道友“们生活愉快。

你们说,我们能走多远呢?加油吧

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

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

相关文章

为什么cca门限和tx 功率有关系

Cca是用来决定信道是否繁忙,好像只和收有关。 但是为什么和tx有关。 设想一下这个网路布局。 如果某个STA在决定是否发送的时候,是否不能只看收到的干扰多大,还应该“冒险”一下,如果自己的功率足够,那么就可以扛住干…

KP85321 650V栅极驱动器兼容代替IR2110 中高压高低边驱动解决方案

KP85321是一款中高压半桥 / 高低边驱动芯片系列,以高可靠性、低温漂、大驱动电流 为主要特性,输出开关节点 dv/dt 可达 100V/nS。高低侧通道相互独立,允许同时导通。 关于 中高压半桥 / 高低边驱动芯片: 中高压半桥/高低边驱动芯…

MapReduce代码

WordCount 数据准备: a.txt lxy lxy lxy zhang wsoossj liagn guui liang liagn代码(在idea中创建一个Maven工程): mapper: package com.lxy.mr.wordcount.thi;import org.apache.hadoop.io.LongWritable; import…

Python NumPy数组的创建方法

Numpy是Python中科学计算的基础包,其核心对象就是ndarray(n维数组)。利用数组可以快速执行逻辑,形状操作,统计和傅里叶变换等运算,其效率比Python原生的数组效率更高。因此使用Numpy的第一件事就是创建Nump…

四川景源畅信:抖音有哪些可以做的副业?

抖音作为当前最受欢迎的短视频平台之一,其巨大的流量和用户基础为许多人提供了副业的机会。那么,在抖音上可以做哪些副业呢? 一、内容创作与推广 利用抖音平台进行内容创作是最直接的副业方式。无论是搞笑短剧、生活分享还是专业知识普及,只…

具身智能论文(四)

目录 1. Alexa Arena: A User-Centric Interactive Platform for Embodied AI2. EDGI: Equivariant Diffusion for Planning with Embodied Agents3. Efficient Policy Adaptation with Contrastive Prompt Ensemble for Embodied Agents4. Egocentric Planning for Scalable E…

【综述】人工智能、机器学习、深度学习

文章目录 前言 概念 算法 训练 性能 应用 参考资料 前言 见《初试人工智能》 概念 人工智能系统(artifieial intelligence system),针对人类定义的给定目标,产生诸如内容、预测、推荐或决策等输出的一类工程系统。该工程系…

简单的mysql主从复制搭建

文章目录 准备工作用Docker安装MySQL主库配置【192.168.13.32】从库配置【192.168.13.108】小结 准备工作 用虚拟机提前准备两台服务器,并且在服务器中分别安装好MySQL,服务器的信息如下: 数据库IP主节点192.168.13.32从节点192.168.13.108…

【前端】打砖块游戏:实现细节介绍

打砖块游戏:实现细节介绍 在本文中,我将详细介绍如何使用HTML、CSS和JavaScript技术构建一个简单的打砖块游戏。我们将重点讨论游戏的三个核心技术方面:碰撞检测、画图和事件监听。 完整代码我放在:github可以直接拉取代码测试。 游戏概览 打砖块游戏中,玩家通过控制底…

vue-cropper裁剪图片 vue

效果图 1.配置环境 npm install vue-cropper 2.代码 <template><div class"cropper-content"><div class"cropper-box"><div class"cropper"><vue-cropper ref"cropper" :img"option.img" :…

C语言中数组与指针的区别

一. 简介 本文学习了 C语言中数组与指针的区别。这样的话&#xff0c;可以在编写C代码时规避掉出错的问题。 二. C语言中数组与指针的区别 1. 数组 定义字符串数组时&#xff0c;必须让编译器知道需要多少空间。 一种方法是用足够空间的数组存储字符串。例如如下&#xf…

【Vue】更换vue-element-admin左侧 logo

准备&#xff1a;目标svg格式的 logo&#xff0c;并将目标logo命名为 vuejs-fill.svg替换路径&#xff1a;/icons 文件夹下&#xff0c;覆盖掉原本的 vuejs-fill.svg 原因&#xff1a;配置项的logo设置的是 vuejs-fill