Repository: opencv
Issue: cant run converted keras model in dnn model, get error 'allocateLayers' or 'cv::dnn::dnn4_v20210301::`anonymous-namespace'::addConstNodes'
Labels: category: dnn

##### System information (version)

- OpenCV => 4.5.2 / 4.1.1
- Operating System / Platform => Windows 10 64 Bit / Ubuntu 16.04 64 Bit
- python=> 3.7.9


##### Detailed description

Hello, i am try to run my trained model with openCV but get errors:

first i am train my model in keras (down will be show summary).
After training i convert keras model to tensorflow model and get pb file
when i try to run the model get error :
```.py
// python code example
error: OpenCV(4.5.2) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-dn5w5exm\opencv\modules\dnn\src\dnn.cpp:3127: error: (-215:Assertion failed) inp.total() in function 'cv::dnn::dnn4_v20210301::Net::Impl::allocateLayers'
```

if i try to load pb model with pbtxt configuration i am get error:
```.py
// python code example
[ERROR:0] global C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-dn5w5exm\opencv\modules\dnn\src\tensorflow\tf_importer.cpp (748) cv::dnn::dnn4_v20210301::`anonymous-namespace'::addConstNodes DNN/TF: Can't handle node='strided_slice/stack_2'. Exception: OpenCV(4.5.2) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-dn5w5exm\opencv\modules\dnn\src\tensorflow\tf_importer.cpp:742: error: (-215:Assertion failed) const_layers.insert(std::make_pair(name, li)).second in function 'cv::dnn::dnn4_v20210301::`anonymous-namespace'::addConstNodes'
```

i am try first with openCV version 4.1.1, and after i am try with version 4.5.2  and try different OS (windows 10 and Ubuntu 16.04)

may be someone can help me to load my trained model with openCV

##### Steps to reproduce


    ```.py
    // python code example
    import numpy as np
    import cv2
    from keras.models import load_model
    
    
    keras_mdodel = load_model('pb_people_20/sim_mdl_func_v2_pow2_china_people_20.h5')
    keras_mdodel.summary()
    
    matcher_path_opencv='pb_people_20/sim_mdl_func_v2_pow2_china_people_20.pb'
    matcher_path_opencv_pbtxt='pb_people_20/sim_mdl_func_v2_pow2_china_people_20_constant_graph.pbtxt'
    
    matcher_opencv = cv2.dnn.readNetFromTensorflow(matcher_path_opencv,matcher_path_opencv_pbtxt)
    
    def get_match_opencv(embs_0,embs_1):
        blobs = cv2.dnn.blobFromImages([embs_0,embs_1])
        # Set blob as input to faceNet
        matcher_opencv.setInput(blobs)#,'input_1')
        #opencv_matcher_model.setInput(blobs)
        #opencv_matcher_model.forward() 
        # Runs a forward pass to compute the net output
        return matcher_opencv.forward() 
    
    def match_opencv(embs_0,embs_1):
        res = 0
        for first_emb in embs_0:
            for second_emb in embs_1:
                match_res = np.squeeze(get_match_opencv(first_emb,second_emb))
                res = max(res,match_res)
        return res
    
    
    emb_comp = np.array([[-0.01565263, -0.03656595, -0.02106497, -0.01172114, -0.03183658,
             0.04423258,  0.07379042, -0.03448544,  0.00917874,  0.10619327,
             0.067057  , -0.04213215, -0.07464422, -0.06878724, -0.09982515,
             0.01137134,  0.04709429,  0.02330536, -0.00764309, -0.14052634,
            -0.17314363, -0.04568923,  0.01383415, -0.00578358, -0.08864444,
             0.07767007, -0.06337555, -0.09800968, -0.04953913,  0.01720826,
            -0.00948498, -0.09592741, -0.10465072, -0.06163599,  0.22899778,
             0.10588204, -0.03106888,  0.06826289,  0.19125976,  0.09685656,
             0.10258153, -0.04890387,  0.07771394,  0.10267048,  0.12820566,
            -0.17984524,  0.10338812,  0.11158907, -0.06663922,  0.05078162,
            -0.0144849 ,  0.03813416, -0.12748823,  0.06191524, -0.09051557,
             0.01777557,  0.14020114, -0.00481044, -0.04369346, -0.06189118,
             0.02411589, -0.2553893 ,  0.04399932, -0.11846916,  0.08772267,
             0.14251669, -0.11032436,  0.09020332, -0.04854635, -0.1081277 ,
            -0.11582536, -0.03723017,  0.03233388,  0.00288666,  0.13660526,
            -0.03048528, -0.10125471,  0.0071717 ,  0.00672208, -0.02564991,
             0.02921752,  0.03457039,  0.01814651, -0.04918699, -0.08088212,
            -0.00733991, -0.0040632 ,  0.12189984, -0.02091988,  0.27729505,
            -0.09878255,  0.01982491,  0.10892831, -0.05085582, -0.08475107,
             0.13422482, -0.04512339,  0.01896015, -0.10464227,  0.04971102,
            -0.07694119, -0.06038413, -0.0517869 ,  0.00917315,  0.00206291,
            -0.02974024, -0.01651836,  0.16789761,  0.07368388, -0.10541685,
             0.14497165,  0.06329738,  0.1521214 , -0.01266835, -0.00671655,
            -0.083036  ,  0.07795148, -0.02421858,  0.17278863, -0.05978476,
            -0.06421243, -0.14550938,  0.00752902,  0.01600735, -0.07240639,
             0.02841103, -0.05694156, -0.11571351]], dtype=np.float32)
    
    img_embs = np.array([[ 0.11008514,  0.01455243,  0.01908959, -0.05834481, -0.14181934,
             0.1882611 ,  0.08232455, -0.11491345,  0.05500843,  0.04011501,
            -0.04828305, -0.03326504, -0.05615507, -0.02345234, -0.0491137 ,
             0.12314314,  0.03639589, -0.02172398,  0.12210201, -0.09503838,
            -0.08331381,  0.01604286,  0.00464164, -0.01787202, -0.0006151 ,
             0.13468699,  0.01733225, -0.10102501, -0.02729505, -0.10542642,
            -0.07366027,  0.02062424, -0.08315776, -0.01222375,  0.18682827,
             0.11723035, -0.16790824,  0.0639649 ,  0.17808685,  0.05183998,
             0.07382489, -0.0351243 ,  0.00582562,  0.01956308,  0.04352709,
            -0.10843045,  0.02012463, -0.05169405, -0.05626178,  0.07084419,
            -0.03077255, -0.02904841, -0.0701267 , -0.04788103,  0.08546986,
             0.05289406,  0.05466829,  0.05425635, -0.0813577 , -0.03403144,
             0.00544576, -0.2616964 ,  0.06646861, -0.05636386,  0.0138996 ,
             0.01612337, -0.00722741, -0.06695902,  0.05770075, -0.05611902,
            -0.00302837, -0.05027693,  0.03430333,  0.02994055,  0.16164383,
            -0.02481532, -0.20324335,  0.0160754 ,  0.06737015, -0.01307072,
             0.14364758,  0.0039455 ,  0.09170939, -0.03038747,  0.02139785,
            -0.0776043 ,  0.07581864,  0.00768354, -0.03795378,  0.11794008,
            -0.10925949, -0.07035936,  0.03584298, -0.05980027, -0.05402324,
             0.11599824, -0.2232277 ,  0.05435819, -0.06722381,  0.04105445,
            -0.12166104,  0.02219271, -0.10503792,  0.04090016,  0.01218935,
            -0.1845343 , -0.00819734,  0.2274523 , -0.0579717 , -0.19095403,
             0.14852127,  0.10555372,  0.11048518,  0.05386249, -0.07497197,
            -0.01151269,  0.15070955,  0.0480066 ,  0.06213563, -0.01823237,
             0.09147692, -0.14006777,  0.072235  ,  0.03428208, -0.08408232,
             0.03943622, -0.07408921, -0.08130765]], dtype=np.float32)
    
    
    res2 = match_opencv([emb_comp],[img_embs])




    ```
[Test_load_with_open_CV.zip](https://github.com/opencv/opencv/files/6538904/Test_load_with_open_CV.zip)


the summary of the model:
    ```.py
    // python code example
    Model: "Similarity_Model"
    __________________________________________________________________________________________________
    Layer (type)                    Output Shape         Param #     Connected to                     
     
    =================================================================================
    ImageA_Input (InputLayer)       (None, 128)          0                                            
    __________________________________________________________________________________________________
    ImageB_Input (InputLayer)       (None, 128)          0                                            
    __________________________________________________________________________________________________
    lambda_1 (Lambda)               (None, 128)          0           ImageA_Input[0][0]               
                                                                     ImageB_Input[0][0]               
    __________________________________________________________________________________________________
    dense_1 (Dense)                 (None, 32)           4128        lambda_1[0][0]                   
    __________________________________________________________________________________________________
    dropout_1 (Dropout)             (None, 32)           0           dense_1[0][0]                    
    __________________________________________________________________________________________________
    dense_2 (Dense)                 (None, 16)           528         dropout_1[0][0]                  
    __________________________________________________________________________________________________
    dropout_2 (Dropout)             (None, 16)           0           dense_2[0][0]                    
    __________________________________________________________________________________________________
    dense_3 (Dense)                 (None, 1)            17          dropout_2[0][0]                  
    
    ============================================================================    
    Total params: 4,673
    Trainable params: 4,673
    Non-trainable params: 0
    '''