[英]How to load Yolo object detection network with OpenCV C++
我按照本教程实现了Yolo对象检测器: https : //github.com/thtrieu/darkflow/,并且我成功完成了它。
创建的.pb文件可用于将图形迁移到移动设备(JAVA / C ++ / Objective-C ++)。 输入张量和输出张量的名称分别为“输入”和“输出”。
我想用OpenCV(c ++)加载网络。 readNetFromTensorflow()方法需要两个文件:.pb和.pbtxt。 后者不是由上面指出的实现方式生成的。 同样,要使用readNetFromDarknet()方法,必须有两个文件:.cfg和.weights。 后者不是由上面指出的实现方式生成的。
那么,如何使用opencv将yolo网络从python迁移到c ++?
我也尝试直接从.pb文件生成.pbtxt文件,但readNetFromTensorflow()方法不成功(在没有有用信息的情况下会生成通用异常)
抛出引用异常:
[在Object_detection_inference_cpp.exe中的0x00007FFFB80C9129处引发的异常:Microsoft C ++异常:内存位置0x000000CBC18FDC90处的cv :: Exception。]
提前致谢。
这是我用来将.pb文件转换成.pbtxt文件的代码:
import tensorflow as tf
from google.protobuf import text_format
from tensorflow.python.platform import gfile
def graphdef_to_pbtxt(filename):
with gfile.FastGFile(filename,'rb') as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
tf.import_graph_def(graph_def, name='')
tf.train.write_graph(graph_def, 'pbtxt/', 'tiny-yolov2-trial3-test.pbtxt', as_text=True)
return
graphdef_to_pbtxt('tiny-yolov2-trial3-test.pb')
使用tf_text_xxx.py必须具有.config文件。 我只有上述教程中的.cfg文件。 因此,我无法使用您报告的这三个功能。 难道我做错了什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.