适用于微控制器的 TensorFlow Lite 旨在在微控制器和其他仅具有几 KB 内存的设备上运行机器学习模型。核心运行时仅适合 Arm Cortex M3 上的 16 KB,并且可以运行许多基本模型。它不需要操作系统支持、任何标准 C 或 C++ 库或动态内存分配。
为什么微控制器很重要
微控制器通常是小型、低功耗的计算设备,嵌入在需要基本计算的硬件中。通过将机器学习引入微型微控制器,我们可以提高我们生活中使用的数十亿台设备的智能,包括家用电器和物联网设备,而无需依赖昂贵的硬件或可靠的互联网连接,这些连接通常会受到带宽和电源限制,并导致高延迟。这也有助于保护隐私,因为没有数据离开设备。想象一下,智能家电可以适应您的日常生活,智能工业传感器可以区分问题和正常运行,以及可以帮助孩子们以有趣和令人愉快的方
支持的平台
适用于微控制器的 TensorFlow Lite 是用 C++ 17 编写的,需要一个 32 位平台。它已在基于 Arm Cortex-M 系列 架构的许多处理器上进行了广泛测试,并且已移植到其他架构,包括 ESP32。该框架可作为 Arduino 库使用。它还可以为 Mbed 等开发环境生成项目。它是开源的,可以包含在任何 C++ 17 项目中。
支持以下开发板
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- STM32F746 Discovery 套件
- Adafruit EdgeBadge
- Adafruit 适用于微控制器的 TensorFlow Lite 套件
- Adafruit Circuit Playground Bluefruit
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- Wio Terminal: ATSAMD51
- Himax WE-I Plus EVB 端点 AI 开发板
- 新思科技 DesignWare ARC EM 软件开发平台
- 索尼 Spresense
探索示例
每个示例应用程序都在 Github 上,并且有一个 README.md
文件,解释了如何将其部署到其支持的平台。一些示例还提供了使用特定平台的端到端教程,如下所示
- Hello World - 演示了使用适用于微控制器的 TensorFlow Lite 的绝对基础知识
- 微型语音 - 使用麦克风捕获音频以检测“是”和“否”这两个词
- 人员检测 - 使用图像传感器捕获摄像头数据以检测人员的存在或不存在
工作流程
在微控制器上部署和运行 TensorFlow 模型需要执行以下步骤
- 训练模型:
- 生成一个小型 TensorFlow 模型,该模型可以适合您的目标设备,并且包含 支持的操作。
- 使用 TensorFlow Lite 转换器 转换为 TensorFlow Lite 模型。
- 使用 标准工具 转换为 C 字节数组,以便将其存储在设备上的只读程序内存中。
- 在设备上运行推理,使用 C++ 库 并处理结果。
限制
适用于微控制器的 TensorFlow Lite 是为微控制器开发的特定约束而设计的。如果您正在处理功能更强大的设备(例如,Raspberry Pi 等嵌入式 Linux 设备),标准 TensorFlow Lite 框架可能更容易集成。
应考虑以下限制
- 支持 TensorFlow 操作的有限子集
- 支持有限的设备集
- 需要手动内存管理的低级 C++ API
- 不支持设备上训练