加载自定义模型时Tensorflow keras模型到opencv错误(C++)

2024-04-16 20:49:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把这个模型(https://www.pyimagesearch.com/2020/05/04/covid-19-face-mask-detector-with-opencv-keras-tensorflow-and-deep-learning/)应用到C++代码中,这个模型是用KARAS和H5编写的,所以我搜索和发现比我首先需要将H5模型转换成PB模型的原因,因为OpenCV不支持H5。p>

按照这个指南(https://www.youtube.com/watch?v=2UgqCwVfdJY)我可以做到,现在我有了一个prototxt文件和一个pb文件

所以我只需要输入我的代码并编写:

'''cv::dnn::Net mask_net = cv::dnn::readNetFromTensorflow("output_graph.pb","proto_file.prototxt");

对吧??但它不起作用。。。我尝试了另一个模型,如SDDMobilent2,效果很好,但对于这个自定义模型,它不起作用

我有这个日志:

terminate called after throwing an instance of 'cv::Exception' what(): OpenCV(4.4.0-pre) /home/luiz/Libraries/CPP/opencv/modules/dnn/src/tensorflow/tf_graph_simplifier.cpp:1016: error: (-215:Assertion failed) permIds.size() == net.node_size() in function 'sortByExecutionOrder'

Aborted (core dumped)

有人能帮我吗


Tags: 文件代码https模型comtensorflowwwwmask
1条回答
网友
1楼 · 发布于 2024-04-16 20:49:44

我遇到了同样的问题,并设法通过仅使用冻结的.pb文件来修复它。OpenCV在文档中仅给出模型+配置函数声明:

cv::dnn::readNetFromTensorflow  (const String & model, const String & config = String())    

但也可以使用只有该模型的模型:

cv::dnn::readNetFromTensorflow  (const String & model)  

有关如何在TensorFlow 2中冻结图形的示例,请参见:How to save Keras model as frozen graph?

相关问题 更多 >