基于Arduino的边缘AI构建自定义对象检测系统
扫描二维码
随时随地手机看文章
在这里,我们展示了端到端过程来创建一个自定义对象检测系统,所有运行在边缘使用谷歌珊瑚开发板微型。
本指南解释了如何使用谷歌Coral Dev Board Micro构建自定义对象检测系统,以及谷歌Colab中使用Tensorflow训练的自定义数据集。
这种方法允许机器学习(ML)模型使用其板载边缘张量处理单元(TPU)在Dev Board Micro上本地运行推理,而无需连接互联网!
TPU之于机器学习就像GPU之于图形(两者都是专用集成电路(asic)),允许模型以令人印象深刻的速度在片上执行,每秒超过2万亿次操作!(见说明书)。
数据集集合
因为我们需要大量物体的图像来训练我们的模型,所以我们决定巴士站是我们可以在本地使用的常见项目。
首先,有一天我们在当地开车的时候拍了一些慢动作的视频。
然后我们从中提取了70张640px正方形的图像(包括一些不同的背景)。
图像可以是任何大小,我们的分辨率是船上珊瑚相机的两倍,但是图像越大,需要的时间就越长。
然而,图像越大,训练时间就越长。
这些需要放在一个名为“images”(区分大小写)的文件夹中。
数据集标签
在images文件夹旁边创建另一个名为Annotations的文件夹。
然后我们使用LabelImg工具。
点击左边的“保存目录”按钮,选择前面步骤中图像文件夹旁边的“annotation”文件夹。
在右侧设置默认标签(如果使用一个类),并选中它旁边的“使用默认标签”复选框。
然后我们通过左键点击并拖动来绘制每个公交车站周围的边界框。
现在单击左侧的Save,确保下面的格式选项设置为PascalVOC。
一旦所有的图片都被标注好了,我们就可以把这两个文件夹压缩成一个名为data . ZIP的文件。
Colab培训
现在我们可以打开Colab Notebook,并连接到运行时。如果你只是尝试,选择CPU,因为它是免费的,有最长的运行时间。GPU处理更快,但可能需要购买计算单元以在高峰时间运行。
连接运行时后,我们可以通过单击左侧的文件管理器上传dataset.zip,并将其拖放到....
现在我们可以开始一个接一个地运行每个代码块……最后,模型将被下载到您的PC的下载文件夹。
如果您愿意,您可以从此链接使用我们预先构建的公交车站模型。
根据使用的运行时间、上传/下载的互联网连接速度、图像数量和大小,这将需要大约45米到1小时来完成
一旦完成并下载了文件,就可以断开运行时。
在Visual Micro中安装Coral Micro板
需要附加板包URL来添加珊瑚微板,它可以在IDE位置屏幕上添加:
添加完成后,可以在浏览器中安装单板。
下载草图示例
从此链接下载CoralCustomObjectDetection ZIP,并将其解压缩到PC上的某个位置。
更新TFLite文件
使用从Colab下载的ZIP文件(或我们预先训练的文件):
model_int8_edgetpu。这个flite文件需要放到项目内部的data文件夹中。
在项目中,metadata.hpp位于INO文件旁边。
在vMicro中打开草图
在Visual Micro中正常打开解决方案,从板列表中选择Dev Board Micro + Wifi Add-on。
还要确保您设置了上传草图+数据的板选项。
用USB-C引线将电路板连接到PC,并检查COM端口是否正确选择。
如果您的板只有橙色灯显示,没有COM端口,您可能需要先将其强制进入SDP模式。请参阅Coral Micro故障排除指南。
更新WiFi凭据
在INO文件中,顶部有两个WIFI凭据的#定义,修改它们以适应您正在使用的网络。
上传到您的主板
点击Build and Upload按钮编译并显示代码,大约一分钟后,电路板就会启动。
查看串行输出并打开网页
串行输出将打印板上所有文件的列表,并显示其提供网页的地址。
将URL复制并粘贴到浏览器中,然后按enter键加载页面。
看看它是怎么工作的!
现在页面已经加载,你可以在页面上看到你的相机流。如果你把它指向一个你训练过的对象,你应该会看到一个识别项目的边界框和置信度。如果你没有一个物体的真实例子,你可以把它指向电脑屏幕上训练过的图像之一。
结束
所以我们得到了它!一个可定制的嵌入式目标检测系统,完全在船上运行,不需要云。当然,如果你在机器人割草机中使用它,你可以将板设置为接入点,只有当你靠近....时才能查看网页或者一旦你对它感到满意,就把Wifi代码全部删除。它不需要在任何形式的网络上工作。
本文编译自hackster.io