站点图标 CNX中文站

TinyML-CAM pipeline,仅使用1 KB RAM即可在ESP32上实现80 FPS图像识别

本文共计 897 字,预计阅读 2 分钟

TinyML 目前面临的挑战是“如何在微控制器级硬件上以最小的占用空间为 AI 工作负载提供最大的性能和效率比”。由欧洲一组机器学习研究人员开发的 TinyML-CAM pipeline 刚好能满足这一点,该项目证明在相对低端且带有相机的硬件上是可以实现这一目标的。

更具体点地说就是:现在该项目已经在价格低于 10 美元的 ESP32-CAM 板上实现超过 80 FPS 的图像识别了,而且开源 TinyML-CAM pipeline 仅占用了大约 1KB RAM。另外,它应该是可以在带有摄像头的其他 MCU 板上工作的,而且学习使用似乎也并不复杂,因为我得知使用其完成定制任务大约只需要 30 分钟。

较早之前研究人员们就发现,用于微控制器的 TensorFlow Lite 和 Edge Impulse 等解决方案目前已经能够使用神经网络(NN)在 MCU 板上执行 ML 工作负载了。但是,能够使用的前提是需要足够多的内存,至少需要 50 到 500 kB RAM,而且需要 100 到 600 毫秒进行计算,这使得开发人员不得不选择低复杂度或低准确度的神经网络。

因此,研究人员们决定使用更高效的非神经网络算法(比如:决策树、SVM),利用他们的Eloquent Arduino替代 TFLite for Microcontrollers,并设计出了分四个阶段工作的 TinyML-CAM pipeline:

1、通过相机服务器(160×120 分辨率)和 MjpegCollector 收集数据,向用户询问类名并在给定时间内收集图像帧,直到用户退出

2、分四步的特征提取

3、分类器训练

4、移植到 C++,将 HOG 组件和分类器(Pairplot)转换为 C++ 代码,更准确地说是头文件(.h)

通过以上四个阶段的工作之后,将头文件添加到 Arduino 库中,程序就可以在板上编译并运行了。如果有需要,你们可以 GitHub 上找到相关源代码,以及在 ESP32 硬件上安装的说明和演示视频。

为了测试这一解决方案,他们使用 ESP32-CAM 来识别树莓派 Pico、Arduino Portenta H7 和 Wio 终端。测试结果表明,TinyML-CAM pipeline 在识别此类板子的时候性能非常好,占用空间非常小。不过研究人员也指出,在 Pairplot 分析期间,Portenta 和 Pi 电路板经常会出现标记错误的现象,他们希望之后可以通过提高数据集质量来纠正这个问题。

除了查看 GitHub 上的源代码外,大家还可以在这个共计 4 页的简短研究论文中找到更多相关信息。

本文消息来源于 Hackster.io

分享这篇文章
退出移动版