Skip to content

ESP-DL Release v3.0.0

Latest
Compare
Choose a tag to compare
@sun-xiangyu sun-xiangyu released this 20 Dec 11:12
· 26 commits to master since this release

We are excited to introduce ESP-DL v3.0.0 , a lightweight and efficient neural network inference framework tailored for ESP series chips. This release brings significant enhancements and new features, making it easier than ever to develop AI applications on Espressif's System on Chips (SoCs). However, please be aware that v3.0.0 is not compatible with v2.0. Below are the key updates and improvements in this release:


Key Features and Improvements

ESP-DL Standard Model Format

Introduced a new model format similar to ONNX but optimized for ESP-DL, using FlatBuffers instead of Protobuf. This format supports zero-copy deserialization and has a file extension of .espdl.

Efficient Operator Implementation

Enhanced support by ESP32-S3 and ESP32-P4 PIE (Processor Instruction Extensions) for common AI operators such as Conv, Gemm, Add, and Mul.

Static Memory Planner

A new memory planner automatically allocates layers to the optimal memory location based on the user-specified internal RAM size, ensuring both efficient memory usage and faster overall performance.

Dual-Core Scheduling

Introduced automatic dual-core scheduling to fully utilize the dual-core computing power of ESP chips. Currently, Conv2D and DepthwiseConv2D operators support dual-core scheduling.

8-bit LUT Activation

All activation functions except ReLU and PReLU are implemented using an 8-bit Look-Up Table (LUT) method to accelerate inference. This allows for flexible activation function usage while maintaining consistent computational complexity.


Supported Models


Supported Operators

The ESP-DL operator interface is aligned with ONNX. The opset 13 is recommended to export ONNX.
Currently, the following 31 operators have been implemented and tested. Some operators do not implement all functionalities and attributes. Please refer to the description of each operator or test cases for details.

Operator int8 int16 Description
Add(ESP-DL)(ONNX) Support up to 4D
AveragePool(ESP-DL)(ONNX)
Clip(ESP-DL)(ONNX)
Concat(ESP-DL)(ONNX)
Conv(ESP-DL)(ONNX) Groups only support 1 or input_channels
Div(ESP-DL)(ONNX) Support up to 4D
Exp(ESP-DL)(ONNX)
Flatten(ESP-DL)(ONNX)
Gemm(ESP-DL)(ONNX)
GlobalAveragePool(ESP-DL)(ONNX)
HardSigmoid(ESP-DL)(ONNX)
HardSwish(ESP-DL)(ONNX)
LeakyRelu(ESP-DL)(ONNX)
Log(ESP-DL)(ONNX)
MatMul(ESP-DL)(ONNX) Support up to 4D
MaxPool(ESP-DL)(ONNX)
Mul(ESP-DL)(ONNX) Support up to 4D
Pad(ESP-DL)(ONNX) Do not support wrap mode
PRelu(ESP-DL)(ONNX)
Reshape(ESP-DL)(ONNX)
Resize(ESP-DL)(ONNX) Only support nearest and do not support roi
Sigmoid(ESP-DL)(ONNX)
Slice(ESP-DL)(ONNX)
Softmax(ESP-DL)(ONNX) Dtype of output is float32
Split(ESP-DL)(ONNX)
Sqrt(ESP-DL)(ONNX)
Squeeze(ESP-DL)(ONNX)
Sub(ESP-DL)(ONNX) Support up to 4D
Tanh(ESP-DL)(ONNX)
Transpose(ESP-DL)(ONNX)
Unsqueeze(ESP-DL)(ONNX)

Important Note

  • v3.0.0 is not backward compatible with v2.0.0. Please ensure you update your workflows and models accordingly.

We hope you enjoy the new features and improvements in ESP-DL v3.0.0. For any questions or feedback, feel free to reach out via the issues page. Happy coding!