Skip to main content

A very simple script that only initializes the batch size of ONNX. Simple Batchsize Initialization for ONNX.

Project description

sbi4onnx

A very simple script that only initializes the batch size of ONNX. Simple Batchsize Initialization for ONNX.

https://github.com/PINTO0309/simple-onnx-processing-tools

Downloads GitHub PyPI CodeQL

Key concept

  • Initializes the ONNX batch size with the specified characters.
  • This tool is not a panacea and may fail to initialize models with very complex structures. For example, there is an ONNX that contains a Reshape that involves a batch size, or a Gemm that contains a batch output other than 1 in the output result.
  • A Reshape in a graph cannot contain more than two undefined shapes, such as -1 or N or None or unk_*. Therefore, before initializing the batch size with this tool, make sure that the Reshape does not already contain one or more -1 dimensions. If it already contains undefined dimensions, it may be possible to successfully initialize the batch size by pre-writing the undefined dimensions of the relevant Reshape to static values using sam4onnx.

1. Setup

1-1. HostPC

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

### run
$ pip install -U onnx \
&& python3 -m pip install -U onnx_graphsurgeon --index-url https://pypi.ngc.nvidia.com \
&& pip install --no-deps -U onnx-simplifier \
&& pip install -U sbi4onnx

1-2. Docker

https://github.com/PINTO0309/simple-onnx-processing-tools#docker

2. CLI Usage

$ sbi4onnx -h

usage:
  sbi4onnx [-h]
  -if INPUT_ONNX_FILE_PATH
  -of OUTPUT_ONNX_FILE_PATH
  -ics INITIALIZATION_CHARACTER_STRING
  [-dos]
  [-n]

optional arguments:
  -h, --help
      show this help message and exit.

  -if INPUT_ONNX_FILE_PATH, --input_onnx_file_path INPUT_ONNX_FILE_PATH
      Input onnx file path.

  -of OUTPUT_ONNX_FILE_PATH, --output_onnx_file_path OUTPUT_ONNX_FILE_PATH
      Output onnx file path.

  -ics INITIALIZATION_CHARACTER_STRING, --initialization_character_string INITIALIZATION_CHARACTER_STRING
      String to initialize batch size. "-1" or "N" or "xxx", etc...
      Default: '-1'

  -dos, --disable_onnxsim
      Suppress the execution of onnxsim on the backend and dare to leave redundant processing.

  -n, --non_verbose
      Do not show all information logs. Only error logs are displayed.

3. In-script Usage

>>> from sbi4onnx import initialize
>>> help(initialize)

Help on function initialize in module sbi4onnx.onnx_batchsize_initialize:

initialize(
  input_onnx_file_path: Union[str, NoneType] = '',
  onnx_graph: Union[onnx.onnx_ml_pb2.ModelProto, NoneType] = None,
  output_onnx_file_path: Union[str, NoneType] = '',
  initialization_character_string: Union[str, NoneType] = '-1',
  non_verbose: Union[bool, NoneType] = False,
  disable_onnxsim: Union[bool, NoneType] = False,
) -> onnx.onnx_ml_pb2.ModelProto

    Parameters
    ----------
    input_onnx_file_path: Optional[str]
        Input onnx file path.
        Either input_onnx_file_path or onnx_graph must be specified.
        Default: ''

    onnx_graph: Optional[onnx.ModelProto]
        onnx.ModelProto.
        Either input_onnx_file_path or onnx_graph must be specified.
        onnx_graph If specified, ignore input_onnx_file_path and process onnx_graph.

    output_onnx_file_path: Optional[str]
        Output onnx file path. If not specified, no ONNX file is output.
        Default: ''

    initialization_character_string: Optional[str]
        String to initialize batch size. "-1" or "N" or "xxx", etc...
        Default: '-1'

    disable_onnxsim: Optional[bool]
        Suppress the execution of onnxsim on the backend and dare to leave redundant processing.
        Default: False

    non_verbose: Optional[bool]
        Do not show all information logs. Only error logs are displayed.
        Default: False

    Returns
    -------
    changed_graph: onnx.ModelProto
        Changed onnx ModelProto.

4. CLI Execution

$ sbi4onnx \
--input_onnx_file_path whenet_224x224.onnx \
--output_onnx_file_path whenet_Nx224x224.onnx \
--initialization_character_string N

$ sbi4onnx \
--input_onnx_file_path whenet_224x224.onnx \
--output_onnx_file_path whenet_Nx224x224.onnx \
--initialization_character_string -1

$ sbi4onnx \
--input_onnx_file_path whenet_224x224.onnx \
--output_onnx_file_path whenet_Nx224x224.onnx \
--initialization_character_string abcdefg

5. In-script Execution

from sbi4onnx import initialize

onnx_graph = initialize(
  input_onnx_file_path="whenet_224x224.onnx",
  output_onnx_file_path="whenet_Nx224x224.onnx",
  initialization_character_string="abcdefg",
)

# or

onnx_graph = initialize(
  onnx_graph=graph,
  initialization_character_string="abcdefg",
)

6. Sample

Before

image

After

image

7. Reference

  1. https://github.com/onnx/onnx/blob/main/docs/Operators.md
  2. https://docs.nvidia.com/deeplearning/tensorrt/onnx-graphsurgeon/docs/index.html
  3. https://github.com/NVIDIA/TensorRT/tree/main/tools/onnx-graphsurgeon
  4. https://github.com/PINTO0309/simple-onnx-processing-tools
  5. https://github.com/PINTO0309/PINTO_model_zoo

8. Issues

https://github.com/PINTO0309/simple-onnx-processing-tools/issues

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

sbi4onnx-1.0.7.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

sbi4onnx-1.0.7-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file sbi4onnx-1.0.7.tar.gz.

File metadata

  • Download URL: sbi4onnx-1.0.7.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for sbi4onnx-1.0.7.tar.gz
Algorithm Hash digest
SHA256 1e1a4255ff749e497c6f1e2488eb8b5042d47f698583049207aae59a1117d124
MD5 79f59a2e3516348af8d8c6f6afcbde0d
BLAKE2b-256 4d84c560b4ecdc548d72d2d2293db14d80868bad00a957e0b8d954cf2aaffc35

See more details on using hashes here.

File details

Details for the file sbi4onnx-1.0.7-py3-none-any.whl.

File metadata

  • Download URL: sbi4onnx-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 6.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for sbi4onnx-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 44845074b09d466a8b004fd98c601ac1f0cd36635167c6b1991397a276eb08d6
MD5 f49586c59b538a06776c6bf3e142ca40
BLAKE2b-256 cc75daa32d109a94c169ec1b49a16cf7ed3473a029bf6ebaaa8255ca10d1e4f1

See more details on using hashes here.

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