summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-04-11 14:21:05 +0000
committerCoprDistGit <infra@openeuler.org>2023-04-11 14:21:05 +0000
commit148b487848bec1f0cb7ed5205c7007af0d182bf6 (patch)
treed09fae016b0a66c6fb59477b5c1be2da64f17199
parent813f61c82aee525efb3130e5250a7c5f584327e1 (diff)
automatic import of python-onnx-simplifier
-rw-r--r--.gitignore1
-rw-r--r--python-onnx-simplifier.spec409
-rw-r--r--sources1
3 files changed, 411 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..80f9261 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/onnx-simplifier-0.4.19.tar.gz
diff --git a/python-onnx-simplifier.spec b/python-onnx-simplifier.spec
new file mode 100644
index 0000000..671bf83
--- /dev/null
+++ b/python-onnx-simplifier.spec
@@ -0,0 +1,409 @@
+%global _empty_manifest_terminate_build 0
+Name: python-onnx-simplifier
+Version: 0.4.19
+Release: 1
+Summary: Simplify your ONNX model
+License: Apache License v2.0
+URL: https://github.com/daquexian/onnx-simplifier
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/31/70/4056e2a5797dae2e3edda382e35eb5ee95ba3040e8201fe5737d9e72b1fa/onnx-simplifier-0.4.19.tar.gz
+
+Requires: python3-onnx
+Requires: python3-rich
+
+%description
+# ONNX Simplifier
+
+[![PyPI version](https://img.shields.io/pypi/v/onnx-simplifier.svg)](https://pypi.python.org/pypi/onnx-simplifier/)
+[![PyPI pyversions](https://img.shields.io/pypi/pyversions/onnx-simplifier.svg)](https://pypi.python.org/pypi/onnx-simplifier/)
+[![PyPI license](https://img.shields.io/pypi/l/onnx-simplifier.svg)](https://pypi.python.org/pypi/onnx-simplifier/)
+[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/daquexian/onnx-simplifier/pulls)
+
+_ONNX is great, but sometimes too complicated._
+
+## Background
+
+One day I wanted to export the following simple reshape operation to ONNX:
+
+```python
+import torch
+
+
+class JustReshape(torch.nn.Module):
+ def __init__(self):
+ super(JustReshape, self).__init__()
+
+ def forward(self, x):
+ return x.view((x.shape[0], x.shape[1], x.shape[3], x.shape[2]))
+
+
+net = JustReshape()
+model_name = 'just_reshape.onnx'
+dummy_input = torch.randn(2, 3, 4, 5)
+torch.onnx.export(net, dummy_input, model_name, input_names=['input'], output_names=['output'])
+```
+
+The input shape in this model is static, so what I expected is
+
+![simple_reshape](imgs/simple_reshape.png)
+
+However, I got the following complicated model instead:
+
+![complicated_reshape](imgs/complicated_reshape.png)
+
+## Our solution
+
+ONNX Simplifier is presented to simplify the ONNX model. It infers the whole computation graph
+and then replaces the redundant operators with their constant outputs (a.k.a. constant folding).
+
+### Web version
+
+We have published ONNX Simplifier on [convertmodel.com](https://www.convertmodel.com/#input=onnx&output=onnx). It works out of the box and **doesn't need any installation**. Note that it runs in the browser locally and your model is completely safe.
+
+### Python version
+
+
+```
+pip3 install -U pip && pip3 install onnxsim
+```
+
+Then
+
+```
+onnxsim input_onnx_model output_onnx_model
+```
+
+For more advanced features, try the following command for help message
+
+```
+onnxsim -h
+```
+
+## Demonstration
+
+An overall comparison between
+[a complicated model](https://github.com/JDAI-CV/DNNLibrary/issues/17#issuecomment-455934190)
+and its simplified version:
+
+![Comparison between old model and new model](imgs/comparison.png)
+
+## In-script workflow
+
+If you would like to embed ONNX simplifier python package in another script, it is just that simple.
+
+```python
+import onnx
+from onnxsim import simplify
+
+# load your predefined ONNX model
+model = onnx.load(filename)
+
+# convert model
+model_simp, check = simplify(model)
+
+assert check, "Simplified ONNX model could not be validated"
+
+# use model_simp as a standard ONNX model object
+```
+
+You can see more details of the API in [onnxsim/onnx_simplifier.py](onnxsim/onnx_simplifier.py)
+
+## Projects Using ONNX Simplifier
+
+* [MXNet](https://mxnet.apache.org/versions/1.9.1/api/python/docs/tutorials/deploy/export/onnx.html#Simplify-the-exported-ONNX-model)
+* [MMDetection](https://github.com/open-mmlab/mmdetection)
+* [YOLOv5](https://github.com/ultralytics/yolov5)
+* [ncnn](https://github.com/Tencent/ncnn)
+* ...
+
+## Chat
+
+We created a Chinese QQ group for ONNX!
+
+ONNX QQ Group (Chinese): 1021964010, verification code: nndab. Welcome to join!
+
+For English users, I'm active on the [ONNX Slack](https://github.com/onnx/onnx#discuss). You can find and chat with me (daquexian) there.
+
+
+%package -n python3-onnx-simplifier
+Summary: Simplify your ONNX model
+Provides: python-onnx-simplifier
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+BuildRequires: python3-cffi
+BuildRequires: gcc
+BuildRequires: gdb
+%description -n python3-onnx-simplifier
+# ONNX Simplifier
+
+[![PyPI version](https://img.shields.io/pypi/v/onnx-simplifier.svg)](https://pypi.python.org/pypi/onnx-simplifier/)
+[![PyPI pyversions](https://img.shields.io/pypi/pyversions/onnx-simplifier.svg)](https://pypi.python.org/pypi/onnx-simplifier/)
+[![PyPI license](https://img.shields.io/pypi/l/onnx-simplifier.svg)](https://pypi.python.org/pypi/onnx-simplifier/)
+[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/daquexian/onnx-simplifier/pulls)
+
+_ONNX is great, but sometimes too complicated._
+
+## Background
+
+One day I wanted to export the following simple reshape operation to ONNX:
+
+```python
+import torch
+
+
+class JustReshape(torch.nn.Module):
+ def __init__(self):
+ super(JustReshape, self).__init__()
+
+ def forward(self, x):
+ return x.view((x.shape[0], x.shape[1], x.shape[3], x.shape[2]))
+
+
+net = JustReshape()
+model_name = 'just_reshape.onnx'
+dummy_input = torch.randn(2, 3, 4, 5)
+torch.onnx.export(net, dummy_input, model_name, input_names=['input'], output_names=['output'])
+```
+
+The input shape in this model is static, so what I expected is
+
+![simple_reshape](imgs/simple_reshape.png)
+
+However, I got the following complicated model instead:
+
+![complicated_reshape](imgs/complicated_reshape.png)
+
+## Our solution
+
+ONNX Simplifier is presented to simplify the ONNX model. It infers the whole computation graph
+and then replaces the redundant operators with their constant outputs (a.k.a. constant folding).
+
+### Web version
+
+We have published ONNX Simplifier on [convertmodel.com](https://www.convertmodel.com/#input=onnx&output=onnx). It works out of the box and **doesn't need any installation**. Note that it runs in the browser locally and your model is completely safe.
+
+### Python version
+
+
+```
+pip3 install -U pip && pip3 install onnxsim
+```
+
+Then
+
+```
+onnxsim input_onnx_model output_onnx_model
+```
+
+For more advanced features, try the following command for help message
+
+```
+onnxsim -h
+```
+
+## Demonstration
+
+An overall comparison between
+[a complicated model](https://github.com/JDAI-CV/DNNLibrary/issues/17#issuecomment-455934190)
+and its simplified version:
+
+![Comparison between old model and new model](imgs/comparison.png)
+
+## In-script workflow
+
+If you would like to embed ONNX simplifier python package in another script, it is just that simple.
+
+```python
+import onnx
+from onnxsim import simplify
+
+# load your predefined ONNX model
+model = onnx.load(filename)
+
+# convert model
+model_simp, check = simplify(model)
+
+assert check, "Simplified ONNX model could not be validated"
+
+# use model_simp as a standard ONNX model object
+```
+
+You can see more details of the API in [onnxsim/onnx_simplifier.py](onnxsim/onnx_simplifier.py)
+
+## Projects Using ONNX Simplifier
+
+* [MXNet](https://mxnet.apache.org/versions/1.9.1/api/python/docs/tutorials/deploy/export/onnx.html#Simplify-the-exported-ONNX-model)
+* [MMDetection](https://github.com/open-mmlab/mmdetection)
+* [YOLOv5](https://github.com/ultralytics/yolov5)
+* [ncnn](https://github.com/Tencent/ncnn)
+* ...
+
+## Chat
+
+We created a Chinese QQ group for ONNX!
+
+ONNX QQ Group (Chinese): 1021964010, verification code: nndab. Welcome to join!
+
+For English users, I'm active on the [ONNX Slack](https://github.com/onnx/onnx#discuss). You can find and chat with me (daquexian) there.
+
+
+%package help
+Summary: Development documents and examples for onnx-simplifier
+Provides: python3-onnx-simplifier-doc
+%description help
+# ONNX Simplifier
+
+[![PyPI version](https://img.shields.io/pypi/v/onnx-simplifier.svg)](https://pypi.python.org/pypi/onnx-simplifier/)
+[![PyPI pyversions](https://img.shields.io/pypi/pyversions/onnx-simplifier.svg)](https://pypi.python.org/pypi/onnx-simplifier/)
+[![PyPI license](https://img.shields.io/pypi/l/onnx-simplifier.svg)](https://pypi.python.org/pypi/onnx-simplifier/)
+[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/daquexian/onnx-simplifier/pulls)
+
+_ONNX is great, but sometimes too complicated._
+
+## Background
+
+One day I wanted to export the following simple reshape operation to ONNX:
+
+```python
+import torch
+
+
+class JustReshape(torch.nn.Module):
+ def __init__(self):
+ super(JustReshape, self).__init__()
+
+ def forward(self, x):
+ return x.view((x.shape[0], x.shape[1], x.shape[3], x.shape[2]))
+
+
+net = JustReshape()
+model_name = 'just_reshape.onnx'
+dummy_input = torch.randn(2, 3, 4, 5)
+torch.onnx.export(net, dummy_input, model_name, input_names=['input'], output_names=['output'])
+```
+
+The input shape in this model is static, so what I expected is
+
+![simple_reshape](imgs/simple_reshape.png)
+
+However, I got the following complicated model instead:
+
+![complicated_reshape](imgs/complicated_reshape.png)
+
+## Our solution
+
+ONNX Simplifier is presented to simplify the ONNX model. It infers the whole computation graph
+and then replaces the redundant operators with their constant outputs (a.k.a. constant folding).
+
+### Web version
+
+We have published ONNX Simplifier on [convertmodel.com](https://www.convertmodel.com/#input=onnx&output=onnx). It works out of the box and **doesn't need any installation**. Note that it runs in the browser locally and your model is completely safe.
+
+### Python version
+
+
+```
+pip3 install -U pip && pip3 install onnxsim
+```
+
+Then
+
+```
+onnxsim input_onnx_model output_onnx_model
+```
+
+For more advanced features, try the following command for help message
+
+```
+onnxsim -h
+```
+
+## Demonstration
+
+An overall comparison between
+[a complicated model](https://github.com/JDAI-CV/DNNLibrary/issues/17#issuecomment-455934190)
+and its simplified version:
+
+![Comparison between old model and new model](imgs/comparison.png)
+
+## In-script workflow
+
+If you would like to embed ONNX simplifier python package in another script, it is just that simple.
+
+```python
+import onnx
+from onnxsim import simplify
+
+# load your predefined ONNX model
+model = onnx.load(filename)
+
+# convert model
+model_simp, check = simplify(model)
+
+assert check, "Simplified ONNX model could not be validated"
+
+# use model_simp as a standard ONNX model object
+```
+
+You can see more details of the API in [onnxsim/onnx_simplifier.py](onnxsim/onnx_simplifier.py)
+
+## Projects Using ONNX Simplifier
+
+* [MXNet](https://mxnet.apache.org/versions/1.9.1/api/python/docs/tutorials/deploy/export/onnx.html#Simplify-the-exported-ONNX-model)
+* [MMDetection](https://github.com/open-mmlab/mmdetection)
+* [YOLOv5](https://github.com/ultralytics/yolov5)
+* [ncnn](https://github.com/Tencent/ncnn)
+* ...
+
+## Chat
+
+We created a Chinese QQ group for ONNX!
+
+ONNX QQ Group (Chinese): 1021964010, verification code: nndab. Welcome to join!
+
+For English users, I'm active on the [ONNX Slack](https://github.com/onnx/onnx#discuss). You can find and chat with me (daquexian) there.
+
+
+%prep
+%autosetup -n onnx-simplifier-0.4.19
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-onnx-simplifier -f filelist.lst
+%dir %{python3_sitearch}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 0.4.19-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..90f26bf
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+afe55d0a2d50646ff834967af625f89e onnx-simplifier-0.4.19.tar.gz