首页 > AI资讯 > 最新资讯 > 人工智能 | TensorFlow 简介

人工智能 | TensorFlow 简介

新火种    2023-09-05

TensorFlow 简介

TensorFlow是一个用于机器学习和人工智能的免费的开源软件库,用于各种机器学习与数据处理任务,特别是深度神经网络的训练和推理。TensorFlow是由Google Brain团队开发,最初主要用于Google内部的研究和生产,如语音识别、Gmail、相册和搜索等。TensorFlow最初版本于2015年11月9日在Apache 2.0开源许可证下发布。

2017年5月,Google宣布了一个专门用于移动开发的软件栈TensorFlow Lite,是针对移动设备和边缘设备的轻量级解决方案。TensorFlow Lite 可以在 Android、iOS、Edge TPU 和 Raspberry Pi 等移动设备和嵌入式设备上进行推断。

2019年5月,Google的Tensor Flow Lite Micro与ARM的uTensor宣布合并。uTensor可以将机器学习模型转换为可读和独立的C++源文件,简化了与任何嵌入式项目的集成,特别是为低功耗、资源受限的嵌入式设备而设计,支持广泛的基于Arm Cortex-M内核的微控制器。

TensorFlow 平台及其生态系统

TensorFlow 是一个端到端的机器学习开源平台。由工具、库和社区资源组成的全面、灵活的生态系统,使研究人员能够推动机器学习最新技术的发展,开发人员能够轻松构建和部署由机器学习驱动的应用。

针对不同的应用,TensorFlow提供了3种类型的库:

TensorFlow (library) 是可以帮助开发和训练机器学习模型的核心开源库。TensorFlow Lite 是用于在移动、微处理器和其他边缘设备上部署模型的库。TensorFlow Lite Micro (TFLM) 是在DSP、微控制器和其他嵌入式目标上运行机器学习模型的库,具有较小的内存占用和极低的功耗。

其中,TensorFlow Lite Micro 是 TensorFlow Lite 的一个移植版本,主要面向微控制器(MCU)、DSP(digital signal processors)和其他存储资源受限的设备部署的机器学习模型。

TensorFlow Lite Micro可以直接在微控制器(MCU)上运行,不需要操作系统支持,也不需要任何标准 C/C++ 库和动态内存分配。核心运行时(core runtime)在 Arm Cortex M3 上运行时仅需16KB字节的存储空间。即使运行语音关键字检测模型,也只需 22KB 字节的存储空间。

利用TensorFlow生态系统的模型优化工具,并另有嵌入式专用的离线和在线优化工具,以减少模型和框架的内存占用。TensorFlow Lite Micro提供了工具、CI以及如何将其集成到各种嵌入式开发环境中的例子。

TensorFlow Lite Micro 支持的平台

适用于微控制器的 TensorFlow Lite Micro 用 C++ 11 编写而成,需要使用 32 位平台。针对基于 Arm Cortex-M 系列架构的众多处理器,它已经过了广泛的测试,并已移植到其他架构(包括 ESP32)。

TensorFlow Lite Micro功能和组件:

C++ API,其运行时(runtime)在 Cortex M3 上仅需 16KB使用标准的 TensorFlow Lite FlatBuffer 架构(schema)为 Arduino、Keil 和 Mbed 等较为流行的嵌入式开发平台预生成的项目文件针对多个嵌入式平台优化演示口语热词检测的示例代码

支持的开发板包括:

Arduino Nano 33 BLE Sense - 基于 Nordic nRF52840 微控制器,Arm Cortex-M4内核,频率64MHz,运行在 Arm® Mbed™ OS 上SparkFun Edge - 基于Ambiq Micro Apollo3 Blue微控制器,ARM Cortex-M4F内核,频率48MHzSTM32F746 Discovery kit - STMicroelectronics STM32F746NG微控制器,Arm® Cortex®-M7内核,频率216MHzAdafruit EdgeBadge - 基于Microchip ATSAMD51J19微控制器,ARM Cortex-M4F内核,频率120MHzAdafruit TensorFlow Lite for Microcontrollers Kit - 基于Microchip ATSAMD51J19微控制器,ARM Cortex-M4F内核,频率120MHzAdafruit Circuit Playground Bluefruit - 基于 Nordic nRF52840 微控制器,Arm Cortex-M4内核,频率64MHzEspressif ESP32-DevKitC - 基于乐鑫的ESP32微控制, Xtensa® 32-bit LX6内核, 主频达 240 MHzEspressif ESP-EYE - 基于乐鑫的ESP32-S3 SoC,Xtensa® 32 位 LX7内核,主频达 240 MHzWio Terminal:ATSAMD51 - 基于Microchip ATSAMD51P19微控制器,ARM Cortex-M4F内核,频率 120MHzHimax WE-I Plus EVB Endpoint AI 开发板 - 基于奇景光电 HX6537-A处理器,Synopsys ARC® EM9D内核,频率达400MHzSynopsys DesignWare ARC EM 软件开发平台 - ARC EM处理器和子系统Sony Spresense - Sony 多核微处理器,基于ARM® Cortex®-M4F,频率达156MHz

社区支持的TFLM例程:

ArduinoCoral Dev Board Micro - NXP RT1176 microcontroller, dual-core MCU with Cortex M7 and M4Espressif Systems Dev BoardsRenesas Boards - Renesas Advanced (RA) 32-bit microcontrollers (MCUs) ,Arm® Cortex®-M33,up to 240MHz(RA8), 60MHz(RA2)Silicon Labs Dev Kits - EFR32xG24 Dev Kit, ARM® Cortex®-M33, 78 MHzSparkfun EdgeTexas Instruments Dev Boards

社区支持的内核:

Cortex-MHexagonRISC-VXtensa

TensorFlow Lite Micro 的工作流程

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

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

TensorFlow Lite Micro 的限制

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

应考虑以下限制:

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

相关推荐
免责声明
本文所包含的观点仅代表作者个人看法,不代表新火种的观点。在新火种上获取的所有信息均不应被视为投资建议。新火种对本文可能提及或链接的任何项目不表示认可。 交易和投资涉及高风险,读者在采取与本文内容相关的任何行动之前,请务必进行充分的尽职调查。最终的决策应该基于您自己的独立判断。新火种不对因依赖本文观点而产生的任何金钱损失负任何责任。