diff --git a/modules/dnn/src/onnx/onnx_importer.cpp b/modules/dnn/src/onnx/onnx_importer.cpp index 742ea7c8a2..7396e00fdc 100644 --- a/modules/dnn/src/onnx/onnx_importer.cpp +++ b/modules/dnn/src/onnx/onnx_importer.cpp @@ -623,6 +623,14 @@ void ONNXImporter::populateNet(Net dstNet) layerParams.set("adj_h", (outH - kernelH) % strideY); } } + else if (layerParams.has("output_padding")) + { + const DictValue& adj_pad = layerParams.get("output_padding"); + if (adj_pad.size() != 2) + CV_Error(Error::StsNotImplemented, "Deconvolution3D layer is not supported"); + layerParams.set("adj_w", adj_pad.get(1)); + layerParams.set("adj_h", adj_pad.get(0)); + } } else if (layer_type == "Transpose") { diff --git a/modules/dnn/test/test_onnx_importer.cpp b/modules/dnn/test/test_onnx_importer.cpp index 3500688696..992a9f31cf 100644 --- a/modules/dnn/test/test_onnx_importer.cpp +++ b/modules/dnn/test/test_onnx_importer.cpp @@ -100,6 +100,7 @@ TEST_P(Test_ONNX_layers, Deconvolution) testONNXModels("two_deconvolution"); testONNXModels("deconvolution_group"); testONNXModels("deconvolution_output_shape"); + testONNXModels("deconv_adjpad_2d"); } TEST_P(Test_ONNX_layers, Dropout)