本文涉及技术: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
下一步,第一个不用管,也可以改大点160×160,然后第二个选择Image,后面选择迁移学习图片(transfer learning images),然后一路下一步
如果有要等待,就等他好,基本上都是一路确认
点击之后等待命令框里面出现绿色的工作完成(job completed),就可以走下一步
这个地方选择模型体量大小
选择160分辨率的辨识度更好一点,占用的话看个人情况来选择
然后开始迁移学习,完毕后右边会生成分类图与点云图,下图为二种
下图为六种识别的
完成之后就走下一步
然后选择deployment,选择设备为OPENMV LIBRARY,就可以生成并且下载下来文件
生成完毕就可以自动下载
内存卡里面其他东西删干净,打开下载的压缩包把三个文件解压到openMV内存卡里面,
把这个ei_image的py文件改为main.py,然后在openMVide打开,就可以执行识别了
labels.txt里面是类型名称,可以改为中文方便看
最终结果
视频仅供展示,严禁非法转载