diff --git a/modules/dnn/src/onnx/onnx_importer.cpp b/modules/dnn/src/onnx/onnx_importer.cpp index 5af114e803..11d24eadb8 100644 --- a/modules/dnn/src/onnx/onnx_importer.cpp +++ b/modules/dnn/src/onnx/onnx_importer.cpp @@ -2163,6 +2163,14 @@ void ONNXImporter::parseSqueeze(LayerParams& layerParams, const opencv_onnx::Nod else CV_Error(Error::StsNotImplemented, cv::format("ONNX/Squeeze: doesn't support non-constant 'axes' input")); } + else + { + for (int i = 0; i < inpShape.size(); ++i) + { + if (inpShape[i] == 1) + maskedAxes[i] = true; + } + } MatShape outShape; for (int i = 0; i < inpShape.size(); ++i) diff --git a/modules/dnn/test/test_onnx_importer.cpp b/modules/dnn/test/test_onnx_importer.cpp index c1b50f3fcf..a69e94990b 100644 --- a/modules/dnn/test/test_onnx_importer.cpp +++ b/modules/dnn/test/test_onnx_importer.cpp @@ -103,6 +103,8 @@ public: net.setInput(inps[i], inputNames[i]); Mat out = net.forward(""); + EXPECT_EQ(shape(out), shape(ref)); + if (useSoftmax) { LayerParams lp; @@ -1187,6 +1189,7 @@ TEST_P(Test_ONNX_layers, Squeeze) applyTestTag(CV_TEST_TAG_DNN_SKIP_IE_MYRIAD, CV_TEST_TAG_DNN_SKIP_IE_NN_BUILDER); testONNXModels("squeeze"); testONNXModels("squeeze_axes_op13"); + testONNXModels("squeeze_no_axes"); } TEST_P(Test_ONNX_layers, ReduceL2)