2026-01-28 06:16:04 +00:00

48 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ONNX Convertors
## Introduction
This project include converters and optimizers in Python3 that are used to generate and optimize ONNX models for Kneron Toolchain.
The current using onnx version is 1.7.0.
Note that the generated onnx is **especially optimized for Kneron Toolchain**, which may not be the best solution for general purpose ONNX usage, though in most cases, math optimal solutions are good for the toolchain. For example, the ONNX to ONNX optimizer has an option on add a do-nothing BatchNormalization node on the skip branch. This seems not optimal from the math perspective. However, for the Kneron Toolchain, adding such a layer can improve its quantization process.
## Dependencies
* onnx == 1.7.0
* onnxruntime >= 1.10.0 (if using onnx)
* numpy >= 1.18.5
* keras == 2.2.4 (if using keras-onnx)
* tensorflow == 1.15.3 (if using tflite-onnx)
* tf2onnx == 1.8.4 (if using tflite-onnx)
* caffe == 1.0.0 (if using caffe-onnx. Recommend installing through `conda install -c intel caffe=1.0.0`)
## Keras to ONNX
The Keras to ONNX converter support convert Keras version 2.2.4) model to onnx. For detail, please check folder `keras-onnx`.
Note that what we support here is Keras, not `tf.Keras`. `tf.Keras` is actually a part of Tensorflow.
## Caffe to ONNX
The Caffe to ONNX converter support convert Caffe to ONNX. Since Caffe is an old platform which is using C++, our support for the Caffe is based on [`intel-caffe`](https://github.com/intel/caffe). We are currently using version 1.1.3. You may need to test other versions yourself. Customized operators may not be supported. Please check folder` caffe-onnx`.
## Pytorch to ONNX
Pytorch to onnx is achieved through the combination of the [`torch.onnx`](https://pytorch.org/docs/stable/onnx.html) and our optimizer under `optimizer_scripts` folder. Note that you may need to specify opset to 11 while you are exporting the model using `torch.onnx`. Please check `optimizer_scripts` folder. We are currently using version 1.7.1. Other version's which has `torch.onnx` may also works. But versions earlier than 1.1.0 are not recommended.
## Tensorflow to ONNX
Tensorflow to onnx is based on the open source project [`tensorflow-onnx`](https://github.com/onnx/tensorflow-onnx). Our `tensorflow2onnx.py` use the open source project to generate the ONNX file and optimize the generated ONNX. Currently, the Tensorflow model support is pretty limited. It is still under development. Please check `optimizer_scripts` folder. We are currently using version 1.6.0. You can use the latest version of `tensorflow-onnx`. Just remember to set the onnx opset version to 11.
## Optimizers
General optimizer optimize ONNX model for the Kneron Toolchain use. Please check `optimizer_scripts` folder.
## Development Guide.
Please utilize the Github merge request system.
If you have any question about the project, please contact <jiyuan@kneron.us>.