dnn: do not try to rebuilt network during setInput()
authorAlexander Alekhin <alexander.a.alekhin@gmail.com>
Thu, 23 Dec 2021 02:37:45 +0000 (02:37 +0000)
committerAlexander Alekhin <alexander.a.alekhin@gmail.com>
Thu, 23 Dec 2021 02:40:33 +0000 (02:40 +0000)
- this doesn't make sense in case of multiple inputs

modules/dnn/src/dnn.cpp

index b35dda9..65b8205 100644 (file)
@@ -1339,6 +1339,11 @@ struct Net::Impl : public detail::NetImplBase
 #endif
             clear();
 
+            if (hasDynamicShapes)
+            {
+                updateLayersShapes();
+            }
+
             this->blobsToKeep = blobsToKeep_;
 
             allocateLayers(blobsToKeep_);
@@ -3886,13 +3891,8 @@ void Net::setInput(InputArray blob, const String& name, double scalefactor, cons
     bool oldShape = prevShape == blobShape;
 
     blob_.copyTo(impl->netInputLayer->inputsData[pin.oid]);
-    if (!oldShape) {
+    if (!oldShape)
         ld.outputBlobs[pin.oid] = impl->netInputLayer->inputsData[pin.oid];
-        if (impl->hasDynamicShapes)
-        {
-            impl->updateLayersShapes();
-        }
-    }
 
     if (!ld.outputBlobsWrappers[pin.oid].empty())
     {