1. RuntimeError: Only tuples, lists and Variables supported as JIT inputs, but got collections.OrderedDictが発生する

deeplabv3などでは以下のようにOrderedDictに値を代入して返していますが、ONNXエクスポータが扱うことができません。

result = OrderedDict()
x = features["out"]
x = self.classifier(x)
x = F.interpolate(x, size=input_shape, mode='bilinear')
result["out"] = x
return result

そのようなケースでは、下記のように書き換えます。

x = features["out"]
x = self.classifier(x)
x = F.interpolate(x, size=input_shape, mode='bilinear')
return x

RuntimeError: Only tuples, lists and Variables supported as JIT inputs, but got dict #13040

2. KeyError: 'upsample_bilinear2d'が発生する

ONNXのエクスポータにバイリニアが定義されていないため、エラーになります。

x = F.interpolate(x, size=input_shape, mode='bilinear')

nearestに置き換えるか、/usr/local/lib/python3.7/site-packages/torch/onnx/symbolic_opset10.pyに下記を追加します。

upsample_bilinear1d = _interpolate('upsample_bilinear1d', 3, "linear")
upsample_bilinear2d = _interpolate('upsample_bilinear2d', 4, "linear")
upsample_bilinear3d = _interpolate('upsample_bilinear3d', 5, "linear")

upsample_bilinear2d issue when exporting to onnx #22906