Skip to main content

A very simple tool for situations where optimization with onnx-simplifier would exceed the Protocol Buffers upper file size limit of 2GB, or simply to separate onnx files to any size you want. Simple Network Extraction for ONNX.

Project description

sne4onnx

A very simple tool for situations where optimization with onnx-simplifier would exceed the Protocol Buffers upper file size limit of 2GB, or simply to separate onnx files to any size you want. Simple Network Extraction for ONNX.

Downloads GitHub PyPI CodeQL

Key concept

  • If INPUT OP name and OUTPUT OP name are specified, the onnx graph within the range of the specified OP name is extracted and .onnx is generated.

1. Setup

1-1. HostPC

### option
$ echo export PATH="~/.local/bin:$PATH" >> ~/.bashrc \
&& source ~/.bashrc

### run
$ pip install -U onnx \
&& pip install -U sne4onnx

1-2. Docker

### docker pull
$ docker pull pinto0309/sne4onnx:latest

### docker build
$ docker build -t pinto0309/sne4onnx:latest .

### docker run
$ docker run --rm -it -v `pwd`:/workdir pinto0309/sne4onnx:latest
$ cd /workdir

2. CLI Usage

$ sne4onnx -h

usage:
    sne4onnx [-h] \
    --input_onnx_file_path INPUT_ONNX_FILE_PATH \
    --output_onnx_file_path OUTPUT_ONNX_FILE_PATH \
    --input_op_names INPUT_OP_NAMES \
    --output_op_names OUTPUT_OP_NAMES

optional arguments:
  -h, --help
        show this help message and exit
  --input_onnx_file_path INPUT_ONNX_FILE_PATH
        Input onnx file path.
  --output_onnx_file_path OUTPUT_ONNX_FILE_PATH
        Output onnx file path.
  --input_op_names INPUT_OP_NAMES
        List of OP names to specify for the input layer of the model.
        Specify the name of the OP, separated by commas.
        e.g. --input_op_names aaa,bbb,ccc
  --output_op_names OUTPUT_OP_NAMES
        List of OP names to specify for the output layer of the model.
        Specify the name of the OP, separated by commas.
        e.g. --output_op_names ddd,eee,fff

3. In-script Usage

$ python
>>> from sne4onnx import extraction
>>> help(extraction)

Help on function extraction in module sne4onnx.onnx_network_extraction:

extraction(
    input_onnx_file_path: str,
    output_onnx_file_path: str,
    input_op_names: List[str],
    output_op_names: List[str]
)

    Parameters
    ----------
    input_onnx_file_path: str
        Input onnx file path.

    output_onnx_file_path: str
        Output onnx file path.

    input_op_names: List[str]
        List of OP names to specify for the input layer of the model.
        Specify the name of the OP, separated by commas.
        e.g. ['aaa','bbb','ccc']

    output_op_names: List[str]
        List of OP names to specify for the output layer of the model.
        Specify the name of the OP, separated by commas.
        e.g. ['ddd','eee','fff']

4. CLI Execution

$ sne4onnx \
--input_onnx_file_path input.onnx \
--output_onnx_file_path output.onnx \
--input_op_names aaa,bbb,ccc \
--output_op_names ddd,eee,fff

5. In-script Execution

from sne4onnx import extraction

extraction(
  input_onnx_file_path='input.onnx',
  output_onnx_file_path='output.onnx',
  input_op_names=['aaa', 'bbb', 'ccc'],
  output_op_names=['ddd', 'eee', 'fff'],
)

6. Samples

6-1. Pre-extraction

image image image

6-2. Extraction

$ sne4onnx \
--input_onnx_file_path hitnet_sf_finalpass_720x1280.onnx \
--output_onnx_file_path hitnet_sf_finalpass_720x960_head.onnx \
--input_op_names 0,1 \
--output_op_names 497,785

6-3. Extracted

image image image

7. Reference

  1. https://github.com/onnx/onnx/blob/main/docs/PythonAPIOverview.md
  2. https://github.com/PINTO0309/snd4onnx
  3. https://github.com/PINTO0309/scs4onnx
  4. https://github.com/PINTO0309/snc4onnx

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sne4onnx-1.0.2.tar.gz (4.5 kB view hashes)

Uploaded Source

Built Distribution

sne4onnx-1.0.2-py3-none-any.whl (5.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page