适用于微控制器的 TensorFlow Lite

适用于微控制器的 TensorFlow Lite 专门用于在微控制器和其他只有几千字节内存的设备上运行机器学习模型。核心运行时可以放入 Arm Cortex M3 上 16 KB 的存储空间中,并且可以运行许多基本模型。它不需要操作系统支持、任何标准 C/C++ 库或动态内存分配。

为什么微控制器非常重要

微控制器通常是小型低功耗计算设备,可嵌入到需要执行基本计算的硬件中。通过将机器学习引入尺寸极小的微控制器,我们可以提升生活中数十亿台设备的智能性,包括家用电器和物联网设备,而无需依赖昂贵的硬件或可靠的互联网连接。硬件和互联网连接常常受带宽和功率限制,并且会导致出现长时间延迟。使用微控制器还有助于保护隐私,因为数据不会离开设备。不妨想象下这样一个世界:智能设备能根据您的日常安排自动调整,智能工业传感器能理解故障与正常操作之间的差异,还有神奇的玩具帮助孩子们通过有趣而愉悦的方式进行学习。

支持的平台

适用于微控制器的 TensorFlow Lite 用 C++ 11 编写而成,需要使用 32 位平台。针对基于 Arm Cortex-M 系列架构的众多处理器,它已经过了广泛的测试,并已移植到其他架构(包括 ESP32)。该框架可作为 Arduino 库提供。它还可以为 Mbed 等开发环境生成项目。它是开源的,可以包含在任何 C++ 11 项目中。

支持的开发板包括:

探索示例

每个示例应用都位于 GitHub 上,并有一个 README.md 文件说明了如何将应用部署到受支持的平台。部分示例还有使用特定平台的端到端教程,如下所示:

工作流程

若要在微控制器上部署并运行 TensorFlow 模型,必须执行以下步骤:

  1. 训练模型
    • 生成小型 TensorFlow 模型,该模型适合您的目标设备并包含支持的操作
    • 使用 TensorFlow Lite 转换器转换为 TensorFlow Lite 模型。
    • 使用标准工具转换为 C 语言字节数组,以将其存储在设备上的只读程序内存中。
  2. 使用 C++ 库在设备上进行推断并处理结果。

限制

适用于微控制器的 TensorFlow Lite 专为满足微控制器开发的特定限制条件而设计。如果您使用的是更强大的设备(例如 Raspberry Pi 等嵌入式 Linux 设备),那么标准 TensorFlow Lite 框架可能更易于集成。

应考虑以下限制:

  • 支持的 TensorFlow 操作有限
  • 支持的设备有限
  • 需要手动管理内存的低阶 C++ API
  • 不支持设备端训练

后续步骤