小编gwe*_*e14的帖子

如何将 keras 模型转换为 tensorflow .pb 和 .pbtxt 没有问题?

我正在编写教程https://www.pyimagesearch.com/2019/03/11/liveness-detection-with-opencv/。本教程完美运行,我想使用 .pb 和 .pbtxt 文件将 keras 模型转换为 tensorflow 模型。我搜索了许多教程如何在 Python 中将 keras 模型转换为 .pb 和 pb.txt。我创建了一个函数“freeze_session”,它可以在这些文件中进行转换。无论如何,当我尝试使用 OpenCV 导入这些文件时,它会触发几个错误。

我第一次导入文件 pb 和 pbtxt 时收到此错误:

错误:(-215:断言失败)const_layers.insert(std::make_pair(name, li)).second in function 'cv::dnn::dnn4_v20190122::`anonymous-namespace'::addConstNodes'

我在论坛上创建过,他们说我们必须在导出图形之前使用此行代码将学习阶段设置为使用值 0 进行测试:

K.set_learning_phase(0)

在此之后,我成功地仅使用 pb 文件导入了 TensorFlow:

cvNet = cv.dnn.readNetFromTensorflow('./model/tf_model.pb')

在这些之后,当我想使用以下命令测试 TensorFlow 神经网络时,会触发一个新错误:

blob2 = cv2.dnn.blobFromImage(cv2.resize(face, (32, 32)), 1.0)

cvNet.setInput(blob2)
detections2 = cvNet.forward()
Run Code Online (Sandbox Code Playgroud)

错误:

detections2 = cvNet.forward() cv2.error: OpenCV(4.1.0) C:\projects\opencv-python\opencv\modules\dnn\src\dnn.cpp:524: error: (-2:Unspecified error) 可以'不在函数'cv::dnn::dnn4_v20190122::LayerData::getLayerInstance'中创建“Shape”类型的层“flatten_1/Shape”

我在几个论坛上看到我们必须删除节点和优化图,但它对我不起作用:

https://answers.opencv.org/question/183507/opencv-dnn-import-error-for-keras-pretrained-vgg16-model/

事实上,我无法使用两个文件导入模型,导入仅适用于 pb 文件,但不适用于检测。

我如何轻松地进行这种转换?为什么有时用户只用 pb 文件导入,有时用 pb 和 pbtxt 导入?

import tensorflow as …
Run Code Online (Sandbox Code Playgroud)

python opencv keras tensorflow

5
推荐指数
0
解决办法
1423
查看次数

标签 统计

keras ×1

opencv ×1

python ×1

tensorflow ×1