From 5992c4660608e0f55294fff31cd0788d3bd9b7d8 Mon Sep 17 00:00:00 2001 From: Li Peng Date: Mon, 12 Feb 2018 22:52:37 +0800 Subject: [PATCH] add fallback case for ocl convolution The ocl convolution doesn't support tensorflow padMode well. Add fallback check if we meet this situation, it could fix the tensorflow MobileNet SSD failure. Signed-off-by: Li Peng --- modules/dnn/src/layers/convolution_layer.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/dnn/src/layers/convolution_layer.cpp b/modules/dnn/src/layers/convolution_layer.cpp index 64c2212f59..b0ca770f62 100644 --- a/modules/dnn/src/layers/convolution_layer.cpp +++ b/modules/dnn/src/layers/convolution_layer.cpp @@ -759,6 +759,13 @@ public: for (int i = 0; i < inputs.size(); ++i) CV_Assert(inputs[i].u != outputs[0].u); + int inpH = inputs[0].size[2]; + int inpW = inputs[0].size[3]; + int out_h = (inpH + 2 * pad.height - (dilation.height * (kernel.height - 1) + 1)) / stride.height + 1; + int out_w = (inpW + 2 * pad.width - (dilation.width * (kernel.width - 1) + 1)) / stride.width + 1; + if (out_h != outputs[0].size[2] || out_w != outputs[0].size[3]) + return false; + int group = inputs[0].size[1] / umat_blobs[0].size[1]; if (convolutionOp.empty())