ESP-DL v3.2.0 continues to provide a lightweight, efficient neural network inference framework optimized for ESP series chips, now with broader model and operator compatibility and enhanced profiling tools for better application optimization.
New Key Features
A comprehensive profiling API has been introduced to help developers optimize their applications:
- Model memory profiling capabilities to analyze memory usage
- Performance profiling tools for detailed execution analysis
- API for model testing and profiling during runtime
- Optimized memory allocation and usage statistics
- Model lazy loading for improved memory efficiency
More Models Supported
ESP-DL v3.2.0 introduces support for a broader range of AI models, including:
- YOLO11n and YOLO11n-pose for advanced object detection and pose estimation
- ESPDet-Pico cat detection model for lightweight object detection
- LSTM and GRU models for sequence processing
- Enhanced human face detection and recognition models
Expanded Operator Support
The ESP-DL operator interface is aligned with ONNX. The opset 18 is recommended to export ONNX. Currently, the following 56 operators have been implemented and tested.
| Operator | int8 | int16 | float32 | Restrictions |
|---|---|---|---|---|
| Add(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | Support up to 4D |
| AveragePool(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | Support 1d/2d, don't support dilation |
| Clip(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | |
| Concat(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | |
| Conv(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | Support 1d/2d conv, groups only support 1 or input_channels |
| Div(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | Support up to 4D |
| Elu(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | |
| Equal(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | |
| Exp(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | |
| Flatten(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | |
| Gather(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | |
| Gemm(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | |
| GlobalAveragePool(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | Support 1d/2d |
| Greater(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | |
| GreaterOrEqual(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | |
| GRU(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | |
| HardSigmoid(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | |
| HardSwish(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | |
| LeakyRelu(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | |
| Less(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | |
| LessOrEqual(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | |
| Log(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | |
| LSTM(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | |
| MatMul(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | Support up to 4D |
| MaxPool(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | Support 1d/2d, don't support dilation |
| Mul(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | Support up to 4D |
| Neg(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | |
| Pad(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | Do not support wrap mode |
| Pow(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | Support up to 4D, multidirectional broadcasting |
| PRelu(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | |
| ReduceL1(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | Support up to 4D |
| ReduceL2(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | Support up to 4D |
| ReduceLogSum(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | Support up to 4D |
| ReduceLogSumExp(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | Support up to 4D |
| ReduceMax(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | Support up to 4D |
| ReduceMean(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | Support up to 4D |
| ReduceMin(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | Support up to 4D |
| ReduceProd(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | Support up to 4D |
| ReduceSum(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | Support up to 4D |
| ReduceSumSquare(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | Support up to 4D |
| Relu(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | |
| Requantize(ESP-DL) | ✔ | ✔ | ✖ | |
| Reshape(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | |
| Resize(ESP-DL)(ONNX) | ✔ | ✖ | ✖ | support 1d/2d nearest/linear/bilinear, don't support roi and antialias |
| ReverseSequence(ESP-DL)(ONNX) | ✔ | ✔ | ✖ | |
| 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 |
| Swish(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | alpha=1.0 |
| Tanh(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | |
| Transpose(ESP-DL)(ONNX) | ✔ | ✔ | ✔ | |
| Unsqueeze(ESP-DL)(ONNX) | ✔ | ✔ | ✔ |