Merge remote-tracking branch 'upstream/3.4' into merge-3.4
authorAlexander Alekhin <alexander.a.alekhin@gmail.com>
Wed, 24 Mar 2021 18:55:24 +0000 (18:55 +0000)
committerAlexander Alekhin <alexander.a.alekhin@gmail.com>
Wed, 24 Mar 2021 18:58:46 +0000 (18:58 +0000)
12 files changed:
1  2 
cmake/OpenCVDetectInferenceEngine.cmake
modules/dnn/include/opencv2/dnn/shape_utils.hpp
modules/dnn/src/layers/eltwise_layer.cpp
modules/dnn/src/op_inf_engine.hpp
modules/dnn/src/tensorflow/tf_importer.cpp
modules/dnn/test/test_common.hpp
modules/dnn/test/test_common.impl.hpp
modules/dnn/test/test_darknet_importer.cpp
modules/dnn/test/test_layers.cpp
modules/dnn/test/test_onnx_importer.cpp
modules/dnn/test/test_tf_importer.cpp
modules/dnn/test/test_torch_importer.cpp

@@@ -235,7 -235,24 +235,25 @@@ Range normalize_axis_range(const Range
      return clamped;
  }
  
 -CV__DNN_EXPERIMENTAL_NS_END
+ static inline
+ bool isAllOnes(const MatShape &inputShape, int startPos, int endPos)
+ {
+     CV_Assert(!inputShape.empty());
+     CV_CheckGE((int) inputShape.size(), startPos, "");
+     CV_CheckGE(startPos, 0, "");
+     CV_CheckLE(startPos, endPos, "");
+     CV_CheckLE((size_t)endPos, inputShape.size(), "");
+     for (size_t i = startPos; i < endPos; i++)
+     {
+         if (inputShape[i] != 1)
+             return false;
+     }
+     return true;
+ }
++
 +CV__DNN_INLINE_NS_END
  }
  }
  #endif
@@@ -156,15 -151,11 +158,18 @@@ public
  
      virtual bool supportBackend(int backendId) CV_OVERRIDE
      {
+         if (hasVecInput && ELTWISE_CHANNNELS_SAME)
+             return backendId == DNN_BACKEND_OPENCV;
 +        if (backendId == DNN_BACKEND_CUDA)
 +        {
 +            if(channelsModeInput == ELTWISE_CHANNNELS_INPUT_0 || channelsModeInput == ELTWISE_CHANNNELS_INPUT_0_TRUNCATE)
 +                return op == SUM && coeffs.empty();
 +            return channelsModeInput == ELTWISE_CHANNNELS_SAME;
 +        }
 +
          return backendId == DNN_BACKEND_OPENCV ||
 -               backendId == DNN_BACKEND_HALIDE ||
 +               (backendId == DNN_BACKEND_HALIDE && op != DIV) ||  // TODO: not implemented, see PR #15811
                 ((((backendId == DNN_BACKEND_INFERENCE_ENGINE_NN_BUILDER_2019 && (preferableTarget != DNN_TARGET_OPENCL || coeffs.empty()))
                  || backendId == DNN_BACKEND_INFERENCE_ENGINE_NGRAPH) && channelsMode == ELTWISE_CHANNNELS_SAME));
      }
Simple merge
Simple merge
@@@ -460,17 -391,7 +459,18 @@@ void initDNNTests(
          // see validateVPUType(): CV_TEST_TAG_DNN_SKIP_IE_MYRIAD_2, CV_TEST_TAG_DNN_SKIP_IE_MYRIAD_X
          CV_TEST_TAG_DNN_SKIP_IE_OPENCL, CV_TEST_TAG_DNN_SKIP_IE_OPENCL_FP16
      );
+ #endif
 +#ifdef HAVE_VULKAN
 +    registerGlobalSkipTag(
 +        CV_TEST_TAG_DNN_SKIP_VULKAN
 +    );
 +#endif
 +
 +#ifdef HAVE_CUDA
 +    registerGlobalSkipTag(
 +        CV_TEST_TAG_DNN_SKIP_CUDA, CV_TEST_TAG_DNN_SKIP_CUDA_FP32, CV_TEST_TAG_DNN_SKIP_CUDA_FP16
 +    );
 +#endif
  }
  
  } // namespace
Simple merge
Simple merge