Open4

onnxモデルの部分切り出し、分離方法

PINTOPINTO

構造が複雑なモデル HITNet などの高解像度のモデルを onnx-simplifier で最適化しようとすると、onnxのファイルフォーマット Protocol Buffers のファイルサイズ上限 2GB を超えてしまってAbortする。したがって、onnx-simplifier へ掛ける前に、もとのモデルを部分的なonnxファイルに分離し、分離したonnxファイルを個々に onnx-simplifier で最適化することで、バッファサイズ上限2GBの超過を抑制することができそう。ファイルの分離は簡単。

extract_model.py
import onnx

input_path = 'hitnet_sf_finalpass_720x1280_nonopt.onnx'
output_path = 'hitnet_sf_finalpass_720x1280_1.onnx'
input_names = ['0', '1']
output_names = ['497', '785']

onnx.utils.extract_model(input_path, output_path, input_names, output_names)