适用于微控制器的 TensorFlow Lite 用于在微控制器和其他只有几千字节内存的设备上运行机器学习模型。核心运行时在 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 Endpoint AI 开发板
- Synopsys 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
- 不支持设备端训练