我使用AutoML Vision训练了对象检测模型,然后将其导出为“ saved_model.pb ”文件。我可以使用以下几行代码来加载和运行此模型:
import tensorflow as tf
with tf.Session(graph=tf.Graph()) as sess:
tf.saved_model.loader.load(sess, ['serve'], export_path)
output = sess.run("detection_boxes:0", feed_dict= { INPUT_NODE : [<some_image_in_binary>]})
当我尝试使用OpenCV v4.1.2的函数cv::dnn::readNetFromTensorflow("saved_model.pb")
加载相同的模型时,它会显示以下消息:
[libprotobuf ERROR C:\build\master_winpack-build-win64-vc14\opencv\3rdparty\protobuf\src\google\protobuf\wire_format_lite.cc:629] String field 'opencv_tensorflow.FunctionDef.Node.ret' contains invalid UTF-8 data when parsing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes.
在尝试阅读某处的答案后,我尝试将 saved_model.pb 中出现的“ 字符串”更改为“ 字节”。在这种情况下,代码会以未处理的异常中断。
此外,如果我尝试使用tf.gfile.FastGile()
对该文件进行解析,它会产生google.protobuf.message.DecodeError: Error parsing message
这是保存的模型-Model
关于如何在OpenCV中导入此模型的任何想法?