我已经在 ssd_mobilenet_v1_coco 之上为自定义数据集训练了新模型。该模型在 tensorflow 中运行良好。但现在我想在 OpenCV 中使用它。
net = cv2.dnn.readNetFromTensorflow("model/frozen_inference_graph.pb", "model/protobuf.pbtxt")
detections = net.forward()
因此对于配置文件,我将 frozen_graph 转换为 pbtxt 并添加它。但是后来我得到了以下错误
[libprotobuf ERROR /home/chamath/Projects/opencv/opencv/3rdparty/protobuf/src/google/protobuf/text_format.cc:298] Error parsing text-format tensorflow.GraphDef: 731:5: Unknown enumeration value of "DT_RESOURCE" for field "type".
按照建议here我尝试使用 this线程中提到的配置文件,但是当我使用它时,对象检测无法正常工作。检测到的方 block 数量不正确,并且放错了位置。
有什么方法可以创建与 OpenCV 一起使用的 pbtxt 配置文件吗?或者关于如何使我的模型在 OpenCV 中工作的任何建议?
最佳答案
很可能您在训练后还没有生成合适的图。 您必须像这样转换图表:
python ../opencv/samples/dnn/tf_text_graph_ssd.py --input trained-inference-graphs/inference_graph_v5.pb/frozen_inference_graph.pb --output trained-inference-graphs/inference_graph_v5.pb/graph.pbtxt
然后将 .pb 和 graph.pbtxt 传递给应该适合您的 DNN.readNetFromTensorflow :)
关于python - OpenCV 中的 Tensorflow 自定义模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47737307/