Hey, I’m trying the popular deep sort market1501.pb model to use with opencv dnn.

I was not yet successful in doing that.

I’m using Opencv 4.5.0 dev, and tensorflow 2.4.0.

The steps I followed:

- Optimized the freeze model for inference.
- Removed const nodes and weights and saved as text representation.
- Replace and remove problematic subgraph without trying to break node.

4 . Launced using opencvDnn

Step1

`!python /tensorflow/python/tools/optimize_for_inference.py \ --input=/model_data/market1501.pb \ --output=optimized_graph.pb \ --frozen_graph=True \ --input_names=images \ --output_names=features`

Step 2-

import tensorflow.compat.v1 as tf

## Read the graph.

with tf.gfile.GFile(‘optimized_graph.pb’, ‘rb’) as f:

`graph_def = tf.GraphDef() graph_def.ParseFromString(f.read())`

## Remove Const nodes.

for i in reversed(range(len(graph_def.node))):

`if graph_def.node[i].op == 'Const': del graph_def.node[i] for attr in ['T', 'data_format', 'Tshape', 'N', 'Tidx', 'Tdim', 'use_cudnn_on_gpu', 'Index', 'Tperm', 'is_training', 'Tpaddings']: if attr in graph_def.node[i].attr: del graph_def.node[i].attr[attr]`

## Save as text.

tf.train.write_graph(graph_def, “”, “market1501.pbtxt”, as_text=True)

Step3:

changed market1501.pbtxt to market.pbtxt after replacing subgraphs.

Step4:

dsNet = cv2.dnn.readNetFromTensorflow(‘tensorflow-yolo/model_data/market1501.pb’, ‘market.pbtxt’)

error Traceback (most recent call last)

in ()

----> 1 dsNet = cv2.dnn.readNetFromTensorflow(‘tensorflow-yolo/model_data/market1501.pb’, ‘market.pbtxt’)

`error: OpenCV(4.5.0-dev) /content/opencv/modules/dnn/src/tensorflow/tf_importer.cpp:586: error: (-2:Unspecified error) Const input blob for weights not found in function 'getConstBlob'`

How to get it working?