ONNX Runtimeの学習済みモデルの入力サイズ可変にする

TensorFlowのモデルを、ONNX Runtimeのモデルに変換したいときは、tf2onnxを使用します。

pbファイルを変換するときは、以下のように使用します。

python -m tf2onnx.convert \
  --graphdef path-to-model.pb \
  --output model.onnx \
  --opset 15 \
  --inputs 'input0:0' \
  --outputs 'output0:0'

入力サイズを指定するには、--inputs オプションで指定します。

python -m tf2onnx.convert \
  --graphdef path-to-model.pb \
  --output model.onnx \
  --opset 15 \
  --inputs 'input0:0[1,1024,1024,4]' \
  --outputs 'output0:0'

この例では1024×1024という固定サイズの入力になります。サイズに-1を使うと可変にできます。

python -m tf2onnx.convert \
  --graphdef path-to-model.pb \
  --output model.onnx \
  --opset 15 \
  --inputs 'input0:0[-1,-1,-1,4]' \
  --outputs 'output0:0'
目次

パフォーマンスへの影響

学習済みモデルによっては、可変にすると大幅にパフォーマンスが向上することがあります。

自分の経験では、4倍程度まで処理速度が改善したことがありました。

ただし、常に早くなるということはないようなので、その都度、ベンチマークを取る必要があるようです。

著書紹介

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Akira Hayashi (林 晃)のアバター Akira Hayashi (林 晃) Representative(代表), Software Engineer(ソフトウェアエンジニア)

アールケー開発代表。Appleプラットフォーム向けの開発を専門としているソフトウェアエンジニア。ソフトウェアの受託開発、技術書執筆、技術指導・セミナー講師。note, Medium, LinkedIn
-
Representative of RK Kaihatsu. Software Engineer Specializing in Development for the Apple Platform. Specializing in contract software development, technical writing, and serving as a tech workshop lecturer. note, Medium, LinkedIn

目次