# nnoir-onnx
nnoir-onnx is a converter from ONNX model to NNOIR model.
## Install
From [PyPI](https://pypi.org/project/nnoir-onnx/):
```
pip install nnoir-onnx
```
From [Dockerhub](https://hub.docker.com/repository/docker/idein/nnoir-tools):
```
docker pull idein/nnoir-tools:20240208
```
## Example
~~~~bash
wget https://www.cntk.ai/OnnxModels/mnist/opset_7/mnist.tar.gz
tar xvzf mnist.tar.gz
onnx2nnoir -o model.nnoir mnist/model.onnx
~~~~
With docker:
```
docker run --rm -it -u $UID:$GID -v $(pwd):/work idein/nnoir-tools:20240208 onnx2nnoir --graph_name "mobilenet" -o mobilenetv2-1.0.nnoir mobilenetv2-1.0.onnx
```
## Supported ONNX Operators
* [Add](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Add)
* [AveragePool](https://github.com/onnx/onnx/blob/master/docs/Operators.md#AveragePool)
* [BatchNormalization](https://github.com/onnx/onnx/blob/master/docs/Operators.md#BatchNormalization)
* `scale`, `B`, `mean`, and `var` must be `"constant"`
* [Clip](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Clip)
* must be opset version 6 or 11
* if opset version is 11
* `max` must be `"constant"`
* `min` must be `0`
* [Concat](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Concat)
* [Conv](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Conv)
* `W` must be [Constant](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Constant) value or have initializer value
* `b` must be [Constant](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Constant) value or have initializer value
* [Cos](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Cos)
* [Div](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Div)
* 1st input must not be `"constant"`
* [Dropout](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Dropout)
* equivalent identity function
* [Elu](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Elu)
* [Exp](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Exp)
* [Flatten](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Flatten)
* [Gemm](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Gemm)
* `B` must be [Constant](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Constant) value or have initializer value
* `C` must be [Constant](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Constant) value or have initializer value
* [GlobalAveragePool](https://github.com/onnx/onnx/blob/master/docs/Operators.md#GlobalAveragePool)
* [HardSigmoid](https://github.com/onnx/onnx/blob/main/docs/Operators.md#hardsigmoid)
* [HardSwish](https://github.com/onnx/onnx/blob/main/docs/Operators.md#hardswish)
* [LeakyRelu](https://github.com/onnx/onnx/blob/master/docs/Operators.md#LeakyRelu)
* [LRN](https://github.com/onnx/onnx/blob/master/docs/Operators.md#LRN)
* [LSTM](https://github.com/onnx/onnx/blob/master/docs/Operators.md#lstm)
* only `seq_length == 1`
* `direction` must be forward
* Supported `activations` are below
* `Sigmoid`
* `Tanh`
* `Relu`
* Not support `clip` and `input_forget`
* [MatMul](https://github.com/onnx/onnx/blob/master/docs/Operators.md#MatMul)
* [MaxPool](https://github.com/onnx/onnx/blob/master/docs/Operators.md#MaxPool)
* `ceil_mode = 1` is not supported
* `dilations` must be array of 1.
* [Mul](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Mul)
* [Pad](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Pad)
* `mode` must be `"constant"`
* [Pow](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Pow)
* 2nd input must be `2.0`
* [PRelu](https://github.com/onnx/onnx/blob/master/docs/Operators.md#PRelu)
* `slope` must be `"constant"` and a single value tensor
* [ReduceMean](https://github.com/onnx/onnx/blob/master/docs/Operators.md#reducemean)
* [ReduceSum](https://github.com/onnx/onnx/blob/master/docs/Operators.md#reducesum)
* [Relu](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Relu)
* [Reshape](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Reshape)
* [Resize](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Resize)
* must be from opset version >= 11
* `mode` must be `"linear"` or `"nearest"`
* `nearest_mode` must be `"floor"`
* `coordinate_transformation_mode` must be either `"pytorch_half_pixel"` or `"align_corners"` for `"linear"` mode
* `coordinate_transformation_mode` must be either `"asymmetric"` for `"nearest"` mode
* [Sigmoid](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Sigmoid)
* [Sin](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Sin)
* [Slice](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Slice)
* must be from opset version >= 10
* `starts` must be [Constant](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Constant) value or have initializer value
* `ends` must be [Constant](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Constant) value or have initializer value
* `axes` must be [Constant](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Constant) value or have initializer value
* `steps` is not supported
* [Softmax](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Softmax)
* [Split](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Split)
* [Sqrt](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Sqrt)
* [Squeeze](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Squeeze)
* [Sub](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Sub)
* [Sum](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Sum)
* 2 inputs
* [Tan](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Tan)
* [Tanh](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Tanh)
* [Transpose](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Transpose)
* [Unsqueeze](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Unsqueeze)
* [Where](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Where)
* `condition` must be [Constant](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Constant) value
* `condition` must all true or all false
* the input value not selected must be constant
Raw data
{
"_id": null,
"home_page": "https://github.com/Idein/nnoir/tree/master/nnoir-onnx",
"name": "nnoir-onnx",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": "nnoir, onnx, machine learning",
"author": "Idein Inc.",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/ac/87/31809ef86a073a8ec1d21a195f4e9fbec6f8ba3b0ddf6f1671be5ddc9f45/nnoir_onnx-1.5.0.tar.gz",
"platform": null,
"description": "# nnoir-onnx\n\nnnoir-onnx is a converter from ONNX model to NNOIR model.\n\n## Install\nFrom [PyPI](https://pypi.org/project/nnoir-onnx/):\n\n```\npip install nnoir-onnx\n```\n\nFrom [Dockerhub](https://hub.docker.com/repository/docker/idein/nnoir-tools):\n\n```\ndocker pull idein/nnoir-tools:20240208\n```\n\n## Example\n\n~~~~bash\nwget https://www.cntk.ai/OnnxModels/mnist/opset_7/mnist.tar.gz\ntar xvzf mnist.tar.gz\nonnx2nnoir -o model.nnoir mnist/model.onnx\n~~~~\n\nWith docker:\n\n```\ndocker run --rm -it -u $UID:$GID -v $(pwd):/work idein/nnoir-tools:20240208 onnx2nnoir --graph_name \"mobilenet\" -o mobilenetv2-1.0.nnoir mobilenetv2-1.0.onnx\n```\n\n## Supported ONNX Operators\n\n* [Add](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Add)\n* [AveragePool](https://github.com/onnx/onnx/blob/master/docs/Operators.md#AveragePool)\n* [BatchNormalization](https://github.com/onnx/onnx/blob/master/docs/Operators.md#BatchNormalization)\n * `scale`, `B`, `mean`, and `var` must be `\"constant\"`\n* [Clip](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Clip)\n * must be opset version 6 or 11\n * if opset version is 11\n * `max` must be `\"constant\"`\n * `min` must be `0`\n* [Concat](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Concat)\n* [Conv](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Conv)\n * `W` must be [Constant](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Constant) value or have initializer value\n * `b` must be [Constant](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Constant) value or have initializer value\n* [Cos](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Cos)\n* [Div](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Div)\n * 1st input must not be `\"constant\"`\n* [Dropout](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Dropout)\n * equivalent identity function\n* [Elu](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Elu)\n* [Exp](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Exp)\n* [Flatten](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Flatten)\n* [Gemm](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Gemm)\n * `B` must be [Constant](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Constant) value or have initializer value\n * `C` must be [Constant](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Constant) value or have initializer value\n* [GlobalAveragePool](https://github.com/onnx/onnx/blob/master/docs/Operators.md#GlobalAveragePool)\n* [HardSigmoid](https://github.com/onnx/onnx/blob/main/docs/Operators.md#hardsigmoid)\n* [HardSwish](https://github.com/onnx/onnx/blob/main/docs/Operators.md#hardswish)\n* [LeakyRelu](https://github.com/onnx/onnx/blob/master/docs/Operators.md#LeakyRelu)\n* [LRN](https://github.com/onnx/onnx/blob/master/docs/Operators.md#LRN)\n* [LSTM](https://github.com/onnx/onnx/blob/master/docs/Operators.md#lstm)\n * only `seq_length == 1`\n * `direction` must be forward\n * Supported `activations` are below\n * `Sigmoid`\n * `Tanh`\n * `Relu`\n * Not support `clip` and `input_forget`\n* [MatMul](https://github.com/onnx/onnx/blob/master/docs/Operators.md#MatMul)\n* [MaxPool](https://github.com/onnx/onnx/blob/master/docs/Operators.md#MaxPool)\n * `ceil_mode = 1` is not supported\n * `dilations` must be array of 1.\n* [Mul](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Mul)\n* [Pad](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Pad)\n * `mode` must be `\"constant\"`\n* [Pow](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Pow)\n * 2nd input must be `2.0`\n* [PRelu](https://github.com/onnx/onnx/blob/master/docs/Operators.md#PRelu)\n * `slope` must be `\"constant\"` and a single value tensor\n* [ReduceMean](https://github.com/onnx/onnx/blob/master/docs/Operators.md#reducemean)\n* [ReduceSum](https://github.com/onnx/onnx/blob/master/docs/Operators.md#reducesum)\n* [Relu](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Relu)\n* [Reshape](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Reshape)\n* [Resize](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Resize)\n * must be from opset version >= 11\n * `mode` must be `\"linear\"` or `\"nearest\"`\n * `nearest_mode` must be `\"floor\"`\n * `coordinate_transformation_mode` must be either `\"pytorch_half_pixel\"` or `\"align_corners\"` for `\"linear\"` mode\n * `coordinate_transformation_mode` must be either `\"asymmetric\"` for `\"nearest\"` mode\n* [Sigmoid](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Sigmoid)\n* [Sin](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Sin)\n* [Slice](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Slice)\n * must be from opset version >= 10\n * `starts` must be [Constant](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Constant) value or have initializer value\n * `ends` must be [Constant](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Constant) value or have initializer value\n * `axes` must be [Constant](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Constant) value or have initializer value\n * `steps` is not supported\n* [Softmax](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Softmax)\n* [Split](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Split)\n* [Sqrt](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Sqrt)\n* [Squeeze](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Squeeze)\n* [Sub](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Sub)\n* [Sum](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Sum)\n * 2 inputs\n* [Tan](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Tan)\n* [Tanh](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Tanh)\n* [Transpose](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Transpose)\n* [Unsqueeze](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Unsqueeze)\n* [Where](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Where)\n * `condition` must be [Constant](https://github.com/onnx/onnx/blob/master/docs/Operators.md#Constant) value\n * `condition` must all true or all false\n * the input value not selected must be constant\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "ONNX to NNOIR Converter",
"version": "1.5.0",
"project_urls": {
"Homepage": "https://github.com/Idein/nnoir/tree/master/nnoir-onnx",
"Repository": "https://github.com/Idein/nnoir/tree/master/nnoir-onnx"
},
"split_keywords": [
"nnoir",
" onnx",
" machine learning"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "387f8e19b720f86cd7031475a0ab42f2c5af526afb634504522d6773b978a509",
"md5": "6e24ed738f71cb428429d36a5f533427",
"sha256": "849d3d8a43f6c2dd80ec5f01fa86175324ae6e9dd121afb8c255996d72c5af42"
},
"downloads": -1,
"filename": "nnoir_onnx-1.5.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6e24ed738f71cb428429d36a5f533427",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 43203,
"upload_time": "2024-11-27T02:37:02",
"upload_time_iso_8601": "2024-11-27T02:37:02.364390Z",
"url": "https://files.pythonhosted.org/packages/38/7f/8e19b720f86cd7031475a0ab42f2c5af526afb634504522d6773b978a509/nnoir_onnx-1.5.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ac8731809ef86a073a8ec1d21a195f4e9fbec6f8ba3b0ddf6f1671be5ddc9f45",
"md5": "7f1ba7b65b8d476c433af1fa74469f63",
"sha256": "a78c7ebdc47aa629cbcd169a38890bdfc2898e849164c95e95c92ccc6b72324c"
},
"downloads": -1,
"filename": "nnoir_onnx-1.5.0.tar.gz",
"has_sig": false,
"md5_digest": "7f1ba7b65b8d476c433af1fa74469f63",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 21760,
"upload_time": "2024-11-27T02:37:03",
"upload_time_iso_8601": "2024-11-27T02:37:03.980126Z",
"url": "https://files.pythonhosted.org/packages/ac/87/31809ef86a073a8ec1d21a195f4e9fbec6f8ba3b0ddf6f1671be5ddc9f45/nnoir_onnx-1.5.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-27 02:37:03",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Idein",
"github_project": "nnoir",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"circle": true,
"lcname": "nnoir-onnx"
}