Skip to content

Latest commit

 

History

History
78 lines (45 loc) · 4.07 KB

README_cn.md

File metadata and controls

78 lines (45 loc) · 4.07 KB

ESP-DL [English]

Documentation Status Component Registry

ESP-DL 是一个专为 ESP 系列芯片设计的轻量级且高效的神经网络推理框架。通过 ESP-DL,您可以轻松快速地使用乐鑫的系统级芯片 (SoC) 开发 AI 应用。

Overview

ESP-DL 提供了加载、调试和运行 AI 模型的 API。该框架易于使用,并且可以与其他乐鑫 SDK 无缝集成。ESP-PPQ 作为 ESP-DL 的量化工具,能够量化来自 ONNX、Pytorch 和 TensorFlow 的模型,并将其导出为 ESP-DL 标准模型格式。

  • ESP-DL 标准模型格式: 该格式类似于 ONNX,但使用 FlatBuffers 而不是 Protobuf,使其更轻量级并支持零拷贝反序列化,文件后缀为.espdl

  • 高效算子实现: ESP-DL 高效地实现了常见的 AI 算子,如 Conv、Pool、Gemm、Add 和 Mul等。目前算子支持状态

  • 静态内存规划器: 内存规划器根据用户指定的内部 RAM 大小,自动将不同层分配到最佳内存位置,确保高效的整体运行速度同时最小化内存使用。

  • 双核调度: 自动双核调度允许计算密集型算子充分利用双核计算能力。目前,Conv2D 和 DepthwiseConv2D 支持双核调度。

  • 8bit LUT Activation: 除了Relu, PRelu(n>1)之外的所有激活函数,ESP-DL 默认使用 8bit LUT(Look Up Table)方式实现,以加速推理。

Getting Started

软件要求

  • ESP-IDF

ESP-DL 基于 ESP-IDF 运行。有关如何获取 ESP-IDF 的详细说明,请参阅 ESP-IDF 编程指南

请使用 ESP-IDF release/v5.3 或更高版本。

  • ESP-PPQ

ESP-PPQ 是基于 ppq 的量化工具。如果你想量化自己的模型,请使用以下命令安装 esp-ppq:

pip uninstall ppq
pip install git+https://github.com/espressif/esp-ppq.git

Model Quantization

ESP-PPQ 可以直接读取 ONNX 模型进行量化。Pytorch 和 TensorFlow 需要先转换为 ONNX 模型,因此请确保你的模型可以转换为 ONNX 模型。

我们提供了以下 Python 脚本模板。你可以根据你自己的模型选择合适的模板进行修改。更多详细信息请参阅 使用 ESP-PPQ 量化模型

quantize_onnx_model.py: 量化 ONNX 模型

quantize_torch_model.py: 量化 Pytorch 模型

quantize_tf_model.py: 量化 TensorFlow 模型

Model Deployment

ESP-DL 提供了一系列 API 来快速加载和运行模型。一个典型的示例如下:

#include "dl_model_base.hpp"

extern const uint8_t espdl_model[] asm("_binary_model_name_espdl_start");
Model *model = new Model((const char *)espdl_model, fbs::MODEL_LOCATION_IN_FLASH_RODATA);
model->run(inputs); // inputs 是一个张量或张量映射

更多详细信息,请参阅 使用 ESP-DL 加载模型mobilenet_v2 示例

Support models

行人检测
人脸检测
人脸识别
Imagenet 分类

Suport Operators

如果你有遇到不支持的算子,请将问题在issues中反馈给我们,我们会尽快支持。
也欢迎大家贡献新的算子, 具体方法请参考创建新模块(算子)

算子支持状态