动态环境中的物联网 (IoT) 运用正在不断扩展,已经超出物体检测范围,在诸如安全、环境监测、安防和工业物联网 (IIoT) 之类应用中现已包括视觉物体识别。由于物体识别是自适应的,并且涉及使用机器学习 (ML) 模型,因此是一个复杂的领域,很难从头开始学习并获得有效实现。
困难在于 ML 模型只与其数据集好坏有关。一旦获得了正确的数据,系统必须经过适当的训练,然后根据数据集进行操作,才能实用。
本文将向开发者展示如何将 Google 的 TensorFlow Lite for Microcontrollers ML 模型实现到 Microchip Technology 微控制器中。然后将解释如何使用图像分类和物体检测学习数据集以及 TensorFlow Lite 以最少的定制编码轻松识别物体。
最后将介绍来自 Adafruit Industries 的 TensorFlow Lite ML 入门套件,让开发人员了解 ML 的基础知识。
用于嵌入式视觉系统的 ML
广义上讲,ML 给计算机或嵌入式系统赋予了类似人的模式识别能力。从人类感官的角度来看,这意味着使用麦克风和摄像头之类传感器来模仿人类的听觉和视觉的感官感知。虽然传感器很容易用于捕捉音频和视觉数据,但是一旦数据被数字化和存储起来,就必须对其进行处理,这样才能与存储在存储器中代表已知声音或物体的模式进行匹配。这种方式也面临着挑战,例如摄像头捕捉到的视觉物体的图像数据不会与存储器中存储的物体数据完全匹配。需要视觉识别物体的 ML 应用必须对数据进行处理,以便能够准确有效地将摄像头捕捉到的模式与存储在存储器中的模式进行匹配。 有不同的库或引擎用于传感器所捕获数据的匹配。TensorFlow 就是一个用于模式匹配的开源代码库。TensorFlow Lite for Microcontrollers 代码库专门为在微控制器上运行而设计,因此降低了对存储器和 CPU 的要求,可以在更有限的硬件上运行。具体来说,它只需要一个 32 位的微控制器和不到 25 千字节 (KB) 的闪存。
然而,虽然 TensorFlow Lite for Microcontrollers 就是 ML 引擎,但系统仍然需要一个模式学习数据集,供其进行识别学习。无论 ML 引擎有多好,系统也不会好过其学习数据集。对于视觉物体来说,一些学习数据集可能需要多个大型模型和无数 GB 的数据。更多的数据需要更高的 CPU 性能来快速寻找精确的匹配,这就是为什么这类应用通常要在高性能计算机或高端笔记本电脑上运行的原因。
对于嵌入式系统应用来说,应该只需要在学习数据集中存储那些应用所需的特定模型。如果一个系统应该识别工具和五金件,那么代表水果和玩具的模型就可以去掉。这样可以减少学习数据集的大小,进而降低嵌入式系统的存储器需求,从而在降低成本的同时提高性能。
一个 ML 微控制器
为了运行 TensorFlow Lite for Microcontrollers,Microchip Technology 将机器学习目标主体投向了微控制器,即基于 Arm® Cortex®-M4F 的 ATSAMD51J19A-AFT 微控制器(图 1)。它具有 512KB 的闪存和 192KB 的 SRAM,运行速度为 120 兆赫兹 (MHz)。ATSAMD51J19A-AFT 是 Microchip Technology ATSAMD51 ML 微控制器家族的一员。它符合汽车级 AEC-Q100 1 级质量标准,可在 -40°C 至 +125°C 的温度下工作,因此适合用于最恶劣的物联网和工业物联网环境。它是一款低电压微控制器,在 120 MHz 下运行时,工作电压为 1.71 至 3.63 伏。
图 1:ATSAMD51J19A 基于 Arm Cortex-M4F 内核,运行频率为 120 MHz,是一款全功能的微控制器,具有 512 KB 闪存和 192 KB SRAM。(图片来源:Microchip Technology)
ATSAMD51J19A 支持的网络协议包括用于工业网络的 CAN 2.0B 和用于大多数有线网络的10/100 以太网。这样该微控制器就可以在各种物联网网络上工作。
其 USB 2.0 接口支持主机和设备两种工作模式,可用于设备调试或系统联网。
4 KB 的组合指令和数据缓存提高了处理 ML 代码时的性能。浮点单元 (FPU) 对于提高 ML 代码的性能以及处理原始传感器数据也很有用。
存储学习数据集
ATSAMD51J19A 还有一个 QSPI 接口,用于外部程序或数据存储器存储。当学习数据集超过片上闪存容量时,这非常有用,可外接额外数据存储器。QSPI 还支持芯片内执行 (XiP),用于外部高速程序存储器扩展。
ATSAMD51J19A 还具有 SD/MMC 存储卡主控制器 (SDHC),这对于 ML 应用来说非常有用,因为它能够轻松实现 ML 代码和学习数据集的存储器交换。TensorFlow Lite for Microcontrollers 引擎可以在 ATSAMD51J19A 的 512KB 闪存中运行,同时学习数据集可以定期升级和改进。学习数据集可以存储在外部 QSPI 闪存或 QSPI EEPROM 中,根据网络配置,可以通过网络远程升级。然而,对于某些系统来说,用另一张存储卡进行改进学习数据集的物理交换可能更方便。在这种配置中,开发人员需要决定系统是否应该将存储卡设计成支持热插拔,或者是否需要关闭物联网节点。
如果物联网节点的空间极其有限,那么与其使用外部存储器,不如尽可能多地将应用放到微控制器存储器中,因为这可能更有利。Microchip Technology 的 ATSAMD51J20A-AFT 与 ATSAMD51J19A 类似,引脚兼容,只是它有 1 MB 的闪存和 256 KB 的 SRAM,为学习数据集提供了更多的片上存储空间。
使用 TensorFlow Lite for Microcontrollers 进行开发
Adafruit Industries 支持使用 4317 TensorFlow Lite for Microcontrollers 开发套件在 ATSAMD51J19A 上进行开发(图 2)。该板有 2 MB 的 QSPI 闪存,可用于存储学习数据集。该套件附带一个用于 ML 音频识别的麦克风插孔。其 1.8 英寸彩色 160 × 128 TFT LCD 可用于开发和调试。当 TensorFlow Lite for Microcontrollers 与语音识别学习数据集一起使用时,该显示屏也可用于语音识别演示。当应用识别出不同的单词时,它们可以显示在这块屏幕上。
这个 Adafruit Industries 套件带有八个按钮、一个三轴加速计、一个光传感器、一个迷你扬声器和一块锂聚合物电池。ATSAMD51J19A 上的 USB2.0 端口连接了一个连接器,用于电池充电、调试和编程。
图 2:Adafruit Industries 4317 TensorFlow Lite for Microcontrollers 开发套件配备了一个用于开发的彩色 TFT LCD,并可用于显示 ML 操作的结果。(图片来源:Adafruit Industries)
Adafruit 套件附带最新版本 TensorFlow Lite for Microcontrollers。学习数据集可以使用 USB 端口加载到 ATSAMD51J19A 微控制器的 512KB 闪存中,也可以加载到外部 2MB 的 QSPI 存储器中。
进行图像识别评估时,可以将 TensorFlow 物体检测学习数据集加载到开发板上。开发板带有连接微控制器并口和串口的端口,其中许多端口可用于连接到外部摄像头。在微控制器上加载了物体检测学习数据集后,LCD 可以用来显示物体检测 ML 处理结果输出。因此,当它识别出一个香蕉时,TFT 显示屏就会显示识别出的物体以及置信度百分比。以下为结果显示示例: 香蕉:95%
扳手:12%
眼镜:8%
梳子:2%。 对于物联网物体检测应用的开发,该套件可以加快开发速度,并帮助诊断任何不正确的检测结果。
总结
ML 是一个不断扩展的技术领域,需要专业的技能才能从头开始开发微控制器引擎和模型并在边缘有效地实现它们。但是,如果在低成本、高效率的微控制器或开发板上使用像 TensorFlow Lite for Microcontrollers 这样的现有代码库,那么就可以节省时间和金钱,快速打造一个高性能的 ML 系统,在一个物联网节点快速、可靠、高效地检测物体。
|