%global _empty_manifest_terminate_build 0 Name: python-onnx-simplifier Version: 0.4.24 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/a4/42/899654fae8596260e151375e2b6862e01583853a0b0c135478d59d2a891f/onnx-simplifier-0.4.24.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.24 %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 * Sun Apr 23 2023 Python_Bot - 0.4.24-1 - Package Spec generated