序言
本文将以openMV为例讲述如何在云端训练出一个智能垃圾识别AI,适合当代大学生参加各类比赛所用 下图为openMV视觉模块
采集数据的过程是在openmv视觉模块上完成的,后文会介绍如何操作
本文所介绍的方法不需要硬件有多好,将我们视觉模块所拍摄的实物分类上传到网站进行训练即可
在线训练需要登录Edge Impulse的官网,注册账号,登录。
网址为:https://www.edgeimpulse.com/
将训练好的模型传输到openmv中进行实验,验证训练结果合理性
深度学习中openmv视觉模块使用教程
数据的采集
创建数据保存的文件夹
打开OpenMV IDE,
选择:工具->数据集编辑器->新数据集;
在弹出的窗口中选择一个储存的路径,新建一个数据集的文件夹,然后选中它点击确定。
具体操作如下图所示
因为本文是以垃圾分类为例所以我建立了一个rubbish文件,选中该路径即可。
创建类别class文件夹
在OpenMV IDE中创建多个类别Class的文件夹。注意:类别Class的名称只能是英文!
当然大家可以用拼音代替英文,只要是字母就行。
具体操作如下图1图2
图1:
图2:
图2之中新建电池battery,易拉罐can,胡萝卜carrot,烟头cigarette的4个类别文件夹
意思是我们将垃圾通过训练分为四类实现机器自动识别这四类垃圾。
当然大家可以分成更多的种类,根据需要自行分配即可。
采集图片
连接OpenMV,运行,选中相应的类别文件夹,然后进行采集图片。采集图片的注意事项:多个角度等。比如说你想识别出一个胡萝卜,那么我们需要通过openmv自带的摄像头采集胡萝卜的各个角度的照片,采集图片的背景最好和你实际应用的背景相同,这样可以提高深度学习的准确性,让机器更好的进行识别。
具体的操作方法如下图
该图中右上角的区域为拍摄的图像显示区域。
检查四类文件中的图片数据
每个类别都采集完毕以后,可以在之前创建的文件夹得到的相应的图片等文件。
打开这些文件夹就可以查看自己分类的这些图片数据是否足够,根据我的经验每个文件夹100到150张照片最为适宜
图片数据的上传
登录网站
登录Edge Impulse的官网,注册账号,登录。https://www.edgeimpulse.com/
Edge Impulse网站的运行速度有时候会比较慢,耐心。
同时这是一个英文的网站,不要畏难。必要的时候需要翻译一下网页,如果你的浏览器没有翻译的功能也可以打开手机的百度进行拍照翻译。
创建新项目
下图为登录之后的页面
上传数据集
点击Data acquisition(数据采集)->Let‘s collect some data
上传数据的界面
将数据逐类上传
上传的具体步骤如下,按此方法将每个类别的数据集逐类上传
上传完成
上传完成之后就可以开始训练了
在线训练
训练模型的创建
模型创建 Impulse design - Create impulse
Image 参数设置和特征生成
第一步
第二步
迁移学习
迁移学习 Transfer learning
![](https://i-blog.csdnimg.cn/blog_migrate/72685055695c1de39722dbbd75f8ee20.png)
模型测试
模型测试 Model testing
打版本标签
模型导出
模型导出 Deployment
得到压缩包
模型导出以后可以得到一个压缩包,解压后为所需文件(共3个)
代码文件为测试参考文件,可以进行实际的效果测试
模型应用
训练模型的检验
检验训练模型的方法:
openmv代码略讲
图片上的注释很清楚,如有不懂可以私信咨询本博主
应用模型到项目
实际应用模型到项目:
举一个实际例子:垃圾分类项目中,项目的设计逻辑是:通过超声波测距的模块设定某个距离值,垃圾投入时垃圾距离测量点的距离小于设定值时,Arduino发出指令使OpenMV工作,OpenMV需要接收到OpenMV的指令,开始拍照->识别->返回物体和名称,同时将概率值最大的物体名称传回给Arduino,Arduino再进行分类垃圾的操作。
实际应用的openmv代码讲解
同样注释较为详细
另一端为arduino的代码
Arduino和OpenMV串口通信
Arduino和OpenMV串口通信文档:
https://book.openmv.cc/MCU/serial1.html
https://book.openmv.cc/MCU/serial2.html
总结
在openmv上的深度学习其实很简单,只需要掌握以上的操作步骤即可,如果以上的文章对你有用请关注博主,可与博主进行探讨喔!