首页 > 其他分享 >基于OpenMV‍与tensorflow LITE的害虫识别

基于OpenMV‍与tensorflow LITE的害虫识别

时间:2024-03-07 23:34:00浏览次数:32  
标签:训练 模型 Edge Impulse LITE tensorflow openMV OpenMV

本文涉及技术:OPENMV,Edge Impulse,OPENMV IDE,TinyML,单片机图像处理,神经网络学习;

OPENMV

OpenMV摄像头是一款小巧,低功耗,低成本的电路板,它帮助你很轻松的完成机器视觉(machine vision)应用。你可以通过高级语言Python脚本(准确的说是 MicroPython ),而不是C/C++。Python的高级数据结构使你很容易在机器视觉算法中处理复杂的输出。但是,你仍然可以完全控制OpenMV。你可以很容易的使用外部终端触发拍摄或者或者执行算法,也可以把算法的结果用来控制IO引脚。

序言 · OpenMV中文入门教程

TensorFlow Lite

应用人工智能、神经网络和机器学习等技术需要强大的计算资源和高性能处理器,通常需要使用GPU群或云服务器集群来进行处理。在普通的嵌入式芯片或单片机上执行这些任务是不现实的。随着边缘处理场景的增多和需求的增大,出现了一些专门针对IOT设备和嵌入式设备的迁移学习网络。Tensorflow Lite是在这种情境下开发的,它是从完整版Tensorflow中裁剪、优化并量身定制而来,是一个轻量级解决方案,专为移动设备和嵌入式设备设计,具有小空间占用和低延迟等特点。

本篇文章是使用openMV来部署神经网络训练出来的模型,这种技术大致为在云端训练出来结果,然后将其模型部署于物联网设备平台等底层平台,实现在安全、低延迟、低功耗和低带宽边缘设备上运行。

人工智能的下一轮革命?关于TinyML的一切 - 知乎 (zhihu.com)

我们大致步骤为:将摄像头采集到的图片上传到Edge Impulse训练神经网络模型,然后将模型进行分类标签,在完成分类标签上传后,进行模型训练,结果生成为OPENMV的工程,导入到我们的openMV上,运行即可.

理论存在,实践开始

使用设备:

OPENMV H7 PLUS:星瞳科技官方版本,没啥说的,对新手及其省事

害虫模型若干:虫子模型,之前有过抓虫子来进行机器学习的想法,但是抓了一只天幕毛虫后发现这家伙乱跑以及毛毛有毒,不方便控制,置于瓶子内不日便一命呜呼。本着人道主义科研原则,在此换为进行模型演示,有条件的同学可以购买标本来进行模型训练

使用平台:

OpenMV IDE

OpenMV IDE官方下载链接:Download | OpenMV

openMV官方主页OpenMV | Small - Affordable - Expandable

OpenMV是由美国克里斯团队基于MicroPython发起的开源机器视觉项目,目的是创建低成本,可扩展,使用python驱动的机器视觉模块。星瞳与openMV官方相当于中国代理商的关系,只是这个代理商卖的产品“贵”了点,其实他们的中文资料对于国内openMV学习环境也算是好事,毕竟谁也不想只啃着国外的视频资料来研究

星瞳科技网站openMV IDE下载:OpenMV下载 | 星瞳科技 (singtown.com)

星瞳科技openMVOpenMV | 星瞳科技 (singtown.com)

Edge Impulse

Edge Impulse: Edge Impulse是一个应用于嵌入式领域的在线的机器学习网站,不仅为用户提供了一些现成的神经网络模型以供训练,还能直接将训练好的模型转换成能在单片机MCU上运行的代码,使用方便,容易上手。网站链接

直达网址:https://studio.edgeimpulse.com/login

步骤:

使用OpenMV采集训练数据

在进行神经网络模型训练前需要先将训练用的数据准备好,本次训练目的为害虫识别,那么训练用的数据为图片。打开OpenMV IDE,在菜单处选择【工具->数据集编辑器->新数据集】。

选择一个位置创建文件夹命名为background(背景),并点击选择文件夹。这是你的第一个需要采集的空白背景类,拍摄没有物体的背景

左侧的一个相册图标点击拍照,每个物体种类建议拍摄40-60张,越多识别出来的精度越高

拍摄完一个之后先不要切换class,你直接换成其他物体接着拍摄,这样A物体占用编号为1-45,B物体占用46-86不会重叠,否则有两张图片名字一样会无法启动学习

全部拍摄完成后,再将不同种类的图片分成不同的文件夹,最好用英文起名方便分类

上传Edge Impulse进行训练

注册账号并创建Edge Impulse工程

打开Edge Impulse网站,注册就是一般流程没有什么特殊性,就不描述了。登陆成功后会跳转到创建工程页面,按下图步骤创建工程。

项目名称,随便起名

将图片数据上传

 

 

第一批导入一类,背景图片 这批图片起名为background背景

导入过程中如果让你选这个检测到你导入的是图片,是否转换为图像识别项目,不用管,点NO

第一批导入完毕后选择第二批某种类的虫子,选择一类照片,起名为这种虫子的名字

导入完毕后关闭这个窗口,看到下面数据库里面图片名称对应种类,ok

下一步,第一个不用管,也可以改大点160x160,然后第二个选择Image,后面选择迁移学习图片(transfer learning images),然后一路下一步

如果有要等待,就等他好,基本上都是一路确认

 

点击之后等待命令框里面出现绿色的工作完成(job completed),就可以走下一步

 

这个地方选择模型体量大小

 

选择160分辨率的辨识度更好一点,占用的话看个人情况来选择

 

然后开始迁移学习,完毕后右边会生成分类图与点云图,下图为二种

下图为六种识别的

完成之后就走下一步

 

 

然后选择deployment,选择设备为OPENMV LIBRARY,就可以生成并且下载下来文件

 

生成完毕就可以自动下载

内存卡里面其他东西删干净,打开下载的压缩包把三个文件解压到openMV内存卡里面,

把这个ei_image的py文件改为main.py,然后在openMVide打开,就可以执行识别了

labels.txt里面是类型名称,可以改为中文方便看

最终结果

[video width="720" height="1280" mp4="http://127.0.0.1/wp-content/uploads/2023/06/74b341eeebba0047a5758aca37a3d1ee.mp4"][/video]

 

视频仅供展示,严禁非法转载

标签:训练,模型,Edge,Impulse,LITE,tensorflow,openMV,OpenMV
From: https://www.cnblogs.com/POPCATER/p/18060034

相关文章

  • LiteDB
    LiteDB.dll今天也是第一次见,并且系统里确实这个dll,在网上查了下,并记录下原文链接:https://www.modb.pro/wiki/1610LiteDB是一个.NET开发的小型快速轻量级的NoSQL嵌入式数据库。产品特性无服务器NoSQL文档存储简单的API,类似于MongoDB单个DLL(小于450kb)中的.NET4.5/NE......
  • sqlite.dll介绍,sqlite.dll文件缺失的解决方法,3分钟快速修复sqlite.dll
    第一次见到这个dll,一般是找到这个dll,重新引用下。网上找到了关于这个dll的详细解释,其他dll应该也可以用这些方法修复,在此记录下。原文链接:https://zhuanlan.zhihu.com/p/668219472一.什么是SQLite.dllSQLite.dll是SQLite数据库引擎的一个关键组成部分。(SQLite是一个开源的嵌......
  • SpringBoot中集成LiteFlow(轻量、快速、稳定可编排的组件式规则引擎)实现复杂业务解耦
    场景在业务开发中,经常遇到一些串行或者并行的业务流程问题,而业务之间不必存在相关性。使用策略和模板模式的结合可以解决这个问题,但是使用编码的方式会使得文件太多,在业务的部分环节可以这样操作,在项目角度就无法一眼洞穿其中的环节和逻辑。一些拥有复杂业务逻辑的系统,核心业......
  • 【TensorFlow】分析模型常用函数
    常用函数获取模型输入节点信息importtensorflowastffromtensorflow.python.toolsimportsaved_model_utilsmodel_dir='model_dir'meta_graph_def=saved_model_utils.get_meta_graph_def(model_dir,tf.saved_model.SERVING)signatures=meta_graph_def.signatu......
  • Sqlite For C# EF
    SqliteEF1.创建控制台项目Lession12.安装Sqliteinstall-packagesystem.data.sqliteinstall-packagesqlite.Codefirst//CodeFirst用于生成数据库表结构,否则不会自动生成表结构3.修改配置文件app.config<?xmlversion="1.0"encoding="utf-8"?><configuration>......
  • powershell连接sqlite
    试着用powershell连接sqlite数据库,网上搜到RayFerrell的”SQLitewithPowerShell:AStep-by-StepGuidetoDatabaseManagement“一遍,验证有效,就是广告太多不给出链接了。第一步是需要donet驱动(可以看出ms自家的脚本和dotnet的深度集成)到sqlite主页下载System.Data.SQLite,htt......
  • Android 《SQLite 异步操作》
    一、数据库升级随着我们系统的升级,数据库一般也要跟着一起变化。Android中的SQLite数据库根据数据库版本号来判断是否进行了升级。当数据库版本号发生变化后,Android系统会调用SQLiteOpenHelper的ouUpgrade函数,然后我们在该函数中对版本号进行判断,再根据版本号执行对应的......
  • Spring Boot + liteflow 规则引擎,太香了!
    作者:豫州牧链接:https://juejin.cn/post/72967717700987453441、前言在日常的开发过程中,经常会遇到一些串行或者并行的业务流程问题,而业务之间不必存在相关性。在这样的场景下,使用策略和模板模式的结合可以很好的解决这个问题,但是使用编码的方式会使得文件太多,在业务的部分环......
  • 深度学习-卷积神经网络-tensorflow的用法-49
    目录1.01_first_graph2.sessionrun3.global_variables_initializer4.InteractiveSession5.get_default_graph6.life_cicycle07linear_regression8.manual_gradient9.auto_diff12.softmax_regression13.convolution14.pooling1.01_first_graphimporttensorflowa......
  • 三分钟数据持久化:Spring Boot, JPA 与 SQLite 的完美融合
    三分钟,迎接一个更加高效和简便的开发体验。在快节奏的软件开发领域,每一个简化工作流程的机会都不容错过。想要一个无需繁琐配置、能够迅速启动的数据持久化方案吗?这篇文章将是你的首选攻略。在这里,我们将向你展示如何将SpringBoot的便捷性、JPA的强大查询能力和SQLite的......