Merge remote-tracking branch 'upstream/3.4' into merge-3.4
authorAlexander Alekhin <alexander.a.alekhin@gmail.com>
Sun, 6 Feb 2022 16:10:43 +0000 (16:10 +0000)
committerAlexander Alekhin <alexander.a.alekhin@gmail.com>
Sun, 6 Feb 2022 16:10:43 +0000 (16:10 +0000)
1  2 
CMakeLists.txt
cmake/OpenCVDetectInferenceEngine.cmake
cmake/OpenCVUtils.cmake
modules/dnn/include/opencv2/dnn/shape_utils.hpp
modules/dnn/src/dnn.cpp
modules/dnn/src/ie_ngraph.cpp
modules/dnn/test/test_onnx_conformance_layer_filter__openvino.inl.hpp

diff --cc CMakeLists.txt
@@@ -240,11 -241,11 +240,11 @@@ OCV_OPTION(WITH_1394 "Include IEEE1394 
  OCV_OPTION(WITH_AVFOUNDATION "Use AVFoundation for Video I/O (iOS/Mac)" ON
    VISIBLE_IF APPLE
    VERIFY HAVE_AVFOUNDATION)
 -OCV_OPTION(WITH_CARBON "Use Carbon for UI instead of Cocoa (OBSOLETE)" OFF
 -  VISIBLE_IF (APPLE OR HAVE_COCOA)
 -  VERIFY HAVE_CARBON)
 +OCV_OPTION(WITH_CAP_IOS "Enable iOS video capture" ON
 +  VISIBLE_IF IOS
 +  VERIFY HAVE_CAP_IOS)
- OCV_OPTION(WITH_CAROTENE "Use NVidia carotene acceleration library for ARM platform" ON
+ OCV_OPTION(WITH_CAROTENE "Use NVidia carotene acceleration library for ARM platform" (NOT CV_DISABLE_OPTIMIZATION)
 -  VISIBLE_IF (ARM OR AARCH64) AND NOT IOS AND NOT (CMAKE_VERSION VERSION_LESS "2.8.11"))
 +  VISIBLE_IF (ARM OR AARCH64) AND NOT IOS)
  OCV_OPTION(WITH_CPUFEATURES "Use cpufeatures Android library" ON
    VISIBLE_IF ANDROID
    VERIFY HAVE_CPUFEATURES)
@@@ -3,14 -3,21 +3,27 @@@
  # Result:
  # - target ocv.3rdparty.openvino
  
 -if(NOT HAVE_CXX11)
 -    message(WARNING "DL Inference engine requires C++11. You can turn it on via ENABLE_CXX11=ON CMake flag.")
 +if(WITH_OPENVINO)
 +  find_package(OpenVINO QUIET)
 +  if(OpenVINO_FOUND)
 +    message(STATUS "OpenVINO FOUND: ${OpenVINO_VERSION}")
 +    math(EXPR ver "${OpenVINO_VERSION_MAJOR} * 1000000 + ${OpenVINO_VERSION_MINOR} * 10000 + ${OpenVINO_VERSION_PATCH} * 100")
 +    ocv_add_external_target(openvino "" "openvino::runtime" "INF_ENGINE_RELEASE=${ver};HAVE_NGRAPH;HAVE_DNN_NGRAPH;HAVE_INF_ENGINE")
 +    set(HAVE_OPENVINO 1)
      return()
 -# =======================
++  endif()
+ endif()
++# ======================
+ if(WITH_OPENVINO)
+   find_package(OpenVINO QUIET)
+   if(OpenVINO_FOUND)
+     message(STATUS "OpenVINO FOUND: ${OpenVINO_VERSION}")
+     math(EXPR ver "${OpenVINO_VERSION_MAJOR} * 1000000 + ${OpenVINO_VERSION_MINOR} * 10000 + ${OpenVINO_VERSION_PATCH} * 100")
+     ocv_add_external_target(openvino "" "openvino::runtime" "INF_ENGINE_RELEASE=${ver};HAVE_NGRAPH;HAVE_DNN_NGRAPH;HAVE_INF_ENGINE")
+     set(HAVE_OPENVINO 1)
+     return()
    endif()
  endif()
  
Simple merge
@@@ -2993,11 -2462,13 +3030,18 @@@ struct Net::Impl : public detail::NetIm
                  LayerPin lpNext(ld.consumers[0].lid, 0);
                  while (nextData)
                  {
+ #ifdef HAVE_INF_ENGINE
+                     if (preferableBackend == DNN_BACKEND_INFERENCE_ENGINE_NGRAPH && pinsToKeep.count(lpNext) != 0)
+                     {
+                         CV_LOG_DEBUG(NULL, "DNN/IE: skip fusing with 'output' node: " << nextData->name << "@" << nextData->type);
+                         break;
+                     }
+ #endif
 +                    /* we use `tryFuse` member of convolution layer to fuse eltwise later
 +                     * it's not intended to be fused here; hence, we stop when we encounter eltwise
 +                     */
 +                    if (preferableBackend == DNN_BACKEND_CUDA && ld.type == "Convolution" && nextData->type == "Eltwise")
 +                        break;
                      Ptr<Layer> nextLayer = nextData->layerInstance;
                      if (currLayer->tryFuse(nextLayer))
                      {
Simple merge