Checker with simple ONNX model structure. Simple Structure Checker for ONNX.
Project description
ssc4onnx
Checker with simple ONNX model structure. Simple Structure Checker for ONNX.
https://github.com/PINTO0309/simple-onnx-processing-tools
Key concept
- Analyzes and displays the structure of huge size models that cannot be displayed by Netron.
1. Setup
1-1. HostPC
### option
$ echo export PATH="~/.local/bin:$PATH" >> ~/.bashrc \
&& source ~/.bashrc
### run
$ pip install -U onnx rich \
&& pip install -U ssc4onnx
1-2. Docker
https://github.com/PINTO0309/simple-onnx-processing-tools#docker
2. CLI Usage
$ ssc4onnx -h
usage:
ssc4onnx [-h]
--input_onnx_file_path INPUT_ONNX_FILE_PATH
optional arguments:
-h, --help
show this help message and exit.
--input_onnx_file_path INPUT_ONNX_FILE_PATH
Input onnx file path.
3. In-script Usage
>>> from ssc4onnx import structure_check
>>> help(structure_check)
Help on function structure_check in module ssc4onnx.onnx_structure_check:
structure_check(
input_onnx_file_path: Union[str, NoneType] = '',
onnx_graph: Union[onnx.onnx_ml_pb2.ModelProto, NoneType] = None
) -> Tuple[Dict[str, int], int]
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.
Returns
-------
op_num: Dict[str, int]
Num of every op
model_size: int
Model byte size
4. CLI Execution
$ ssc4onnx --input_onnx_file_path deqflow_b_things_opset12_192x320.onnx
5. In-script Execution
from ssc4onnx import structure_check
structure_check(
input_onnx_file_path="deqflow_b_things_opset12_192x320.onnx",
)
6. Sample
┏━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ OP Type ┃ OPs ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Add │ 3907 │
│ AveragePool │ 3 │
│ Cast │ 2652 │
│ Concat │ 1983 │
│ Constant │ 14992 │
│ ConstantOfShape │ 1350 │
│ Conv │ 710 │
│ Div │ 1107 │
│ Einsum │ 353 │
│ Equal │ 1240 │
│ Expand │ 1662 │
│ Floor │ 416 │
│ Gather │ 1411 │
│ GatherElements │ 832 │
│ Greater │ 832 │
│ InstanceNormalization │ 15 │
│ Less │ 832 │
│ MatMul │ 1 │
│ Mul │ 5267 │
│ Neg │ 206 │
│ Not │ 102 │
│ Pad │ 212 │
│ Range │ 206 │
│ ReduceSum │ 14 │
│ Relu │ 352 │
│ Reshape │ 2410 │
│ ScatterND │ 102 │
│ Shape │ 1556 │
│ Sigmoid │ 208 │
│ Slice │ 620 │
│ Softmax │ 1 │
│ Split │ 208 │
│ Sqrt │ 13 │
│ Sub │ 2446 │
│ Tanh │ 104 │
│ Tile │ 2 │
│ Transpose │ 317 │
│ Unsqueeze │ 3866 │
│ Where │ 2904 │
│ ---------------------- │ ---------- │
│ Total number of OPs │ 55414 │
│ ====================== │ ========== │
│ Model Size │ 37.2MiB │
└────────────────────────┴────────────┘
INFO: file: deqflow_b_things_opset12_192x320.onnx
INFO: producer: pytorch 1.11.0
INFO: opset: 12
INFO: input_name.1: input1 shape: [1, 3, 192, 320] dtype: float32
INFO: input_name.2: input2 shape: [1, 3, 192, 320] dtype: float32
INFO: output_name.1: flow_up shape: [1, 2, 192, 320] dtype: float32
7. Reference
- https://github.com/onnx/onnx/blob/main/docs/Operators.md
- https://docs.nvidia.com/deeplearning/tensorrt/onnx-graphsurgeon/docs/index.html
- https://github.com/NVIDIA/TensorRT/tree/main/tools/onnx-graphsurgeon
- https://github.com/PINTO0309/simple-onnx-processing-tools
- https://github.com/PINTO0309/PINTO_model_zoo
8. Issues
https://github.com/PINTO0309/simple-onnx-processing-tools/issues
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
ssc4onnx-1.0.3.tar.gz
(6.1 kB
view hashes)