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

随笔3个月前发布 颓废
41 0 0

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

OPENMV

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

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👁‍🗨与tensorflow LITE的🐛害虫识别

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

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

使用平台:

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(背景),并点击选择文件夹。这是你的第一个需要采集的空白背景类,拍摄没有物体的背景

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

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

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

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

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

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

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

上传Edge Impulse进行训练

注册账号并创建Edge Impulse工程

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

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

项目名称,随便起名

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

将图片数据上传

 

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

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

 

第一批导入一类,背景图片基于OpenMV👁‍🗨与tensorflow LITE的🐛害虫识别 这批图片起名为background背景基于OpenMV👁‍🗨与tensorflow LITE的🐛害虫识别

导入过程中如果让你选这个检测到你导入的是图片,是否转换为图像识别项目,不用管,点NO基于OpenMV👁‍🗨与tensorflow LITE的🐛害虫识别

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

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

基于OpenMV👁‍🗨与tensorflow LITE的🐛害虫识别导入完毕后关闭这个窗口,看到下面数据库里面图片名称对应种类,ok

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

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

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

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

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

 

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

 

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

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

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

 

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

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

 

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

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

下图为六种识别的

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

完成之后就走下一步

 

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

 

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

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

 

生成完毕就可以自动下载

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

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

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

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

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

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

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

最终结果

 

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

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...