Simple tool to change the INPUT and OUTPUT shape of ONNX.
Project description
sio4onnx
Simple tool to change the INPUT and OUTPUT shape of ONNX.
https://github.com/PINTO0309/simple-onnx-processing-tools
1. Setup
1-1. HostPC
### option
$ echo export PATH="~/.local/bin:$PATH" >> ~/.bashrc \
&& source ~/.bashrc
### run
$ pip install -U onnx \
&& pip install -U sio4onnx
1-2. Docker
https://github.com/PINTO0309/simple-onnx-processing-tools#docker
2. CLI Usage
$ sio4onnx -h
usage:
sio4onnx [-h]
-if INPUT_ONNX_FILE_PATH
-of OUTPUT_ONNX_FILE_PATH
-i INPUT_NAMES
-is INPUT_SHAPES [INPUT_SHAPES ...]
-o OUTPUT_NAMES
-os OUTPUT_SHAPES [OUTPUT_SHAPES ...]
[-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
-i INPUT_NAMES, --input_names INPUT_NAMES
List of input OP names. All input OPs of the model must be specified.
The order is unspecified, but must match the order specified for input_shapes.
e.g.
--input_names "input.A" \
--input_names "input.B" \
--input_names "input.C"
-is INPUT_SHAPES [INPUT_SHAPES ...], --input_shapes INPUT_SHAPES [INPUT_SHAPES ...]
List of input OP shapes. All input OPs of the model must be specified.
The order is unspecified, but must match the order specified for input_names.
e.g.
--input_shapes 1 3 "H" "W" \
--input_shapes "N" 3 "H" "W" \
--input_shapes "-1" 3 480 640
-o OUTPUT_NAMES, --output_names OUTPUT_NAMES
List of output OP names. All output OPs of the model must be specified.
The order is unspecified, but must match the order specified for output_shapes.
e.g.
--output_names "output.a" \
--output_names "output.b" \
--output_names "output.c"
-os OUTPUT_SHAPES [OUTPUT_SHAPES ...], --output_shapes OUTPUT_SHAPES [OUTPUT_SHAPES ...]
List of input OP shapes. All output OPs of the model must be specified.
The order is unspecified, but must match the order specified for output_shapes.
e.g.
--output_shapes 1 3 "H" "W" \
--output_shapes "N", 3, "H", "W" \
--output_shapes "-1" 3 480 640
-n, --non_verbose
Do not show all information logs. Only error logs are displayed.
3. In-script Usage
>>> from sio4onnx import io_change
>>> help(io_change)
Help on function io_change in module sio4onnx.onnx_input_output_variable_changer:
io_change(
input_onnx_file_path: Union[str, NoneType] = '',
onnx_graph: Union[onnx.onnx_ml_pb2.ModelProto, NoneType] = None,
output_onnx_file_path: Union[str, NoneType] = '',
input_names: Union[List[str], NoneType] = [],
input_shapes: Union[List[Union[int, str]], NoneType] = [],
output_names: Union[List[str], NoneType] = [],
output_shapes: Union[List[Union[int, str]], NoneType] = [],
non_verbose: 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: ''
input_names: Optional[List[str]]
List of input OP names. All input OPs of the model must be specified.
The order is unspecified, but must match the order specified for input_shapes.
e.g. ['input.A', 'input.B', 'input.C']
input_shapes: Optional[List[Union[int, str]]]
List of input OP shapes. All input OPs of the model must be specified.
The order is unspecified, but must match the order specified for input_names.
e.g.
[
[1, 3, 'H', 'W'],
['N', 3, 'H', 'W'],
['-1', 3, 480, 640],
]
output_names: Optional[List[str]]
List of output OP names. All output OPs of the model must be specified.
The order is unspecified, but must match the order specified for output_shapes.
e.g. ['output.a', 'output.b', 'output.c']
output_shapes: Optional[List[Union[int, str]]]
List of input OP shapes. All output OPs of the model must be specified.
The order is unspecified, but must match the order specified for output_shapes.
e.g.
[
[1, 3, 'H', 'W'],
['N', 3, 'H', 'W'],
['-1', 3, 480, 640],
]
non_verbose: Optional[bool]
Do not show all information logs. Only error logs are displayed.
Default: False
Returns
-------
io_changed_graph: onnx.ModelProto
onnx ModelProto with modified INPUT and OUTPUT shapes.
4. CLI Execution
$ sio4onnx \
--input_onnx_file_path yolov3-10.onnx \
--output_onnx_file_path yolov3-10_upd.onnx \
--input_names "input_1" \
--input_names "image_shape" \
--input_shapes "batch" 3 "H" "W" \
--input_shapes "batch" 2 \
--output_names "yolonms_layer_1/ExpandDims_1:0" \
--output_names "yolonms_layer_1/ExpandDims_3:0" \
--output_names "yolonms_layer_1/concat_2:0" \
--output_shapes 1 "boxes" 4 \
--output_shapes 1 "classes" "boxes" \
--output_shapes "boxes" 3
5. In-script Execution
from sio4onnx import io_change
estimated_graph = io_change(
input_onnx_file_path="yolov3-10.onnx",
output_onnx_file_path="yolov3-10_upd.onnx",
input_names=[
"input_1",
"image_shape",
],
input_shapes=[
["batch", 3, "H", "W"],
["batch", 2],
],
output_names=[
"yolonms_layer_1/ExpandDims_1:0",
"yolonms_layer_1/ExpandDims_3:0",
"yolonms_layer_1/concat_2:0",
],
output_shapes=[
[1, "boxes", 4],
[1, "classes", "boxes"],
["boxes", 3],
],
)
6. Sample
Before
After
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
sio4onnx-1.0.2.tar.gz
(7.2 kB
view details)
Built Distribution
File details
Details for the file sio4onnx-1.0.2.tar.gz
.
File metadata
- Download URL: sio4onnx-1.0.2.tar.gz
- Upload date:
- Size: 7.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 927a584c679a73080f481951d67df01924eb14980d28542542cab95b2c9a1f4f |
|
MD5 | a8950718737834c11c93a389fc4cd7aa |
|
BLAKE2b-256 | 103a9654d281161ea316879cfca320ac6897f1694ea2f6ac9a945aaaac86eaa7 |
File details
Details for the file sio4onnx-1.0.2-py3-none-any.whl
.
File metadata
- Download URL: sio4onnx-1.0.2-py3-none-any.whl
- Upload date:
- Size: 6.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e5b5bc7097740b2f988de745ed2c5a0c69c91cfdc3248d7f7b5d29df9acf46f |
|
MD5 | acf2b4059a6c75b2a4a2e9c314723928 |
|
BLAKE2b-256 | 7e1661b40a5445ef890262227bc1dd7c61073049c02595cb8e423765a7979962 |