Opencv4.0.0 failed to parse *.pbtxt from tensorflow 1.12.0: "Unknown enumeration value of \"DT_RESOURCE\" for field \"type\"."
Hi,
I used opencv3.4.1 to load pre-trained model from tensorflow. *.pb and *.pbtxt which were generated by the following code:
output_nodes = [n.name for n in tf.get_default_graph().as_graph_def().node]
# Freeze the graph
frozen_graph_def = tf.graph_util.convert_variables_to_constants(
sess,
sess.graph_def,
output_nodes)
# Save the frozen graph
with open('./model/output_graph.pb', 'wb') as f:
f.write(frozen_graph_def.SerializeToString())
tf.train.write_graph(sess.graph_def, "./model", "output_graph_def.pbtxt", True)
And I loaded them by using cv::dnn
cv::dnn::Net local_cvNet = cv::dnn::readNetFromTensorflow("./model/output_graph.pb",
"./model/output_graph_def.pbtxt");
That gave me an error :
FAILED: ReadProtoFromTextFile(param_file, param). Failed to parse GraphDef file: ./output_graph_def.pbtxt" char *
In addition, I used CTC_loss layer in tensorflow, it may be the problem for opencv parser ?
I dont know what is wrong ? in python script to generate *pbtxt or *.pbtxt itself ? Any suggestion ?
I switched to opencv4.0.0 as dkurt proposed, but the problem is still there. Here is callstack:
(-2:Unspecified error)
FAILED: ReadProtoFromTextFile(param_file, param). Failed to parse GraphDef file: ./output_graph_def.pbtxt"
opencv_world400d.dll!cv::error(const cv::Exception & exc) Line 1032 C++
opencv_world400d.dll!cv::error(int _code, const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > & _err, const char * _func, const char *
_file, int _line) Line 1044 C++
opencv_world400d.dll!cv::dnn::GLogWrapper::check() Line 90 C++
opencv_world400d.dll!cv::dnn::ReadTFNetParamsFromTextFileOrDie(const char * param_file,
opencv_tensorflow::GraphDef * param) Line 54 C++
> opencv_world400d.dll!cv::dnn::dnn4_v20180917::`anonymous
namespace'::TFImporter::TFImporter(const char * model, const char * config) Line 438 C++
opencv_world400d.dll!cv::dnn::dnn4_v20180917::readNetFromTensorflow(const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > & model, const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > & config) Line 1931 C++
Well, go deep into these stack, I found this message:
"Unknown enumeration value of \"DT_RESOURCE\" for field \"type\"." from text_format.cc
It seems this value type is new from Opencv ? Here is my graph followed l'architexture : CNN+BLSTM+CTC: You have to change the format from png-> pbtxt C:\fakepath\output_graph.png
Any luck ?
the error msg looks incomplete. can you take another look ?
OpenCV 3.4.1 released 3 quarters ago. Please use the latest state or specify in your question that you're not able to use different version.
could you at least add the pbtxt file to your question ?