diff --git a/modules/dnn/src/tensorflow/tf_importer.cpp b/modules/dnn/src/tensorflow/tf_importer.cpp index 6c16502aa2..fcca577094 100644 --- a/modules/dnn/src/tensorflow/tf_importer.cpp +++ b/modules/dnn/src/tensorflow/tf_importer.cpp @@ -1293,7 +1293,13 @@ void TFImporter::populateNet(Net dstNet) if (!next_layers.empty()) { int maximumLayerIdx = next_layers[0].second; - ExcludeLayer(net, maximumLayerIdx, 0, false); + + CV_Assert(net.node(maximumLayerIdx).input_size() == 2); + + // The input from the Mul layer can also be at index 1. + int mulInputIdx = (net.node(maximumLayerIdx).input(0) == name) ? 0 : 1; + + ExcludeLayer(net, maximumLayerIdx, mulInputIdx, false); layers_to_ignore.insert(next_layers[0].first); layerParams.set("negative_slope", scaleMat.at(0)); diff --git a/modules/dnn/test/test_tf_importer.cpp b/modules/dnn/test/test_tf_importer.cpp index 8b0a20747b..0bcbe562a3 100644 --- a/modules/dnn/test/test_tf_importer.cpp +++ b/modules/dnn/test/test_tf_importer.cpp @@ -230,6 +230,13 @@ TEST_P(Test_TensorFlow_layers, flatten) runTensorFlowNet("unfused_flatten_unknown_batch"); } +TEST_P(Test_TensorFlow_layers, leaky_relu) +{ + runTensorFlowNet("leaky_relu_order1"); + runTensorFlowNet("leaky_relu_order2"); + runTensorFlowNet("leaky_relu_order3"); +} + TEST_P(Test_TensorFlow_layers, l2_normalize) { runTensorFlowNet("l2_normalize");