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

原文链接:TinyML-CAM pipeline enables 80 FPS image recognition on ESP32 using just 1 KB RAM 由Jean-Luc Aufranc撰写。
本文共计 897 字,预计阅读 2 分钟

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

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

TinyML-CAM pipeline

较早之前研究人员们就发现,用于微控制器的 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、分四步的特征提取

  • 将收集到的图像从 RGB 转换为灰色
  • 运行定向梯度直方图(HOG)特征提取器从而输出特征向量(即使用较低分辨率的 40 x 30 图像来加速任务)
  • 运行 Pairplot Visualization 从而直观地了解提取特征的信息量
  • 运行统一流形逼近和投影(UMAP)降维算法,从而获取特征向量并将其压缩到长度为 2

3、分类器训练

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

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

TinyML-CAM pipeline 演示

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

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

本文消息来源于 Hackster.io

分享这篇文章
订阅评论
提醒
0 评论
内联反馈
查看所有评论