Open2

onnx-simplifier (onnxsim) で複数INPUT (multi-input) の形状を指定するサンプル

PINTOPINTO

コマンドラインから複数入力を与えるとバグる。従って、いちいちPythonコードを書く必要がある。

import onnx
from onnxsim import simplify

H=480
W=640
MODEL='lac_gwcnet_maxdisp192_kitti'
model = onnx.load(f'{MODEL}_HxW.onnx')
model_simp, check = simplify(
    model,
    input_shapes={
        "input.1": [1,3,H,W],
        "input.401": [1,3,H,W],
    }
)
onnx.save(model_simp, f'{MODEL}_{H}x{W}.onnx')
PINTOPINTO
  • コマンドラインで指定する方法を見つけた。入出力ファイル名より後ろにオプションを指定して --input-shape オプションは一度だけ指定。入力レイヤーの数だけダブルコーテーション区切りで名前とshapeをセットで渡す。
  • 注意点は、input.onnx と output.onnx のファイル名の間の部分はバックスラッシュなどで改行を連結したコマンドにすると失敗するということ。
onnxsim input.onnx output.onnx \
--overwrite-input-shape "aaa:1,70,256" "bbb:1,200,200,3" "ccc:1,5,600"
onnxsim crestereo_init_iter2_120x160_mvn.onnx crestereo_init_iter2_120x160_mvn.onnx \
--overwrite-input-shape "onnx::MatMul_1030:1,70,256"