Git Product home page Git Product logo

onnx-tool's Introduction

onnx-tool

A tool for ONNX model:

  • Shape inference.
  • MACs(FLOPs) counting for each layer.
  • Extract subgraph from ONNX model, or do inplace op fusion.
    ...
    and any operation you can image with ONNX.

New:

  • The speedup of shape inference is 100x in v0.5.0 release. Release detail
  • Better support of Tensorflow-converted models in v0.4.0 release.
  • Sparse Models are initially supported in v0.3.1 release. view Sparse Model
  • Quantized models are initially supported in v0.3.0 release.
  • 4 onnx models of Stable Diffusion are supported in v0.2.14 release. view results
    ...

Shape inference

how to use: data/Profile.md.
pytorch usage: data/PytorchUsage.md.
tensorflow usage: data/TensorflowUsage.md.


MACs counting for each layer (FLOPs=2*MACs)

Float MultipleAdd Count, Memory Usage(in bytes), Parameters(elements number)

Sparse Pattern, Sparse Block Ratio, Sparse Element Ratio

how to use: data/Profile.md.
pytorch usage: data/PytorchUsage.md.
tensorflow usage: data/TensorflowUsage.md.


Extract subgraph from ONNX model

how to use: data/Subgraph.md.


Inplace op fusion

how to use: data/Subgraph.md.


Add any hidden tensors to model's outputs

how to use: data/Profile.md.


Tensor operations

  • Export weight tensors to files
  • Simplify tensor and node names, convert name from a long string to a short string
  • Remove unused tensors, models like vgg19-7.onnx set its static weight tensors as its input tensors
  • Set custom input and output tensors' name and dimension, change model from fixed input to dynamic input
    how to use: data/Tensors.md.

How to install

pip install onnx-tool

OR

pip install --upgrade git+https://github.com/ThanatosShinji/onnx-tool.git

python>=3.6

If pip install onnx-tool failed by onnx's installation, you may try pip install onnx==1.8.1 (a lower version like this) first.
Then pip install onnx-tool again.


Known Issues

  • Loop op is not supported

Results of ONNX Model Zoo and SOTA models

Some models have dynamic input shapes. The MACs varies from input shapes. The input shapes used in these results are writen to data/public/config.py. These onnx models with all tensors' shape can be downloaded: baidu drive(code: p91k) google drive

Model Params(M) MACs(M)
text_encoder 123.13 6,782
UNet2DCondition 859.52 888,870
VAE_encoder 34.16 566,371
VAE_decoder 49.49 1,271,959
SqueezeNet 1.0 1.23 351
VGG 19 143.66 19,643
AlexNet 60.96 665
GoogleNet 6.99 1,606
googlenet_age_adience 5.98 1,605
LResNet100E-IR 65.22 12,102
BERT-Squad 113.61 22,767
BiDAF 18.08 9.87
EfficientNet-Lite4 12.96 1,361
Emotion FERPlus 12.95 877
Mask R-CNN R-50-FPN-fp32 46.77 92,077
Model Params(M) MACs(M)
rvm_mobilenetv3_fp32.onnx 3.73 4,289
yolov4 64.33 3,319
ConvNeXt-L 229.79 34,872
edgenext_small 5.58 1,357
SSD 19.98 216,598
RealESRGAN_x4plus.pth 16.69 73,551
ShuffleNet-v2-fp32 2.29 146
GPT-2 137.02 1,103
T5-encoder 109.62 686
T5-decoder-with-lm-head 162.62 1,113
RoBERTa-BASE 124.64 688
Faster R-CNN R-50-FPN-fp32 44.10 46,018
FCN ResNet-50 35.29 37,056
MobileNet v2-1.0-fp32 3.3 300
ResNet50_fp32 25 3,868

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.