怎么把Keras模型转换成Darknet模型?

时间:2019-03-14 08:08:06

标签: opencv

我有一个项目,使用keras(tensorflow后端)训练数据,并使用opencv dnn(cv2.dnn)检测对象。 当我在使用opencv dnn模型的代码上使用keras模型时,出现了一个错误: cv2.error:OpenCV(4.0.0)/io/opencv/modules/dnn/src/dnn.cpp:3644:错误:(-2:未指定错误)无法确定文件的原始框架:函数'readNet'中的model_architecture.json,model_weights.h5

我正在寻找处理此错误的方法,并且已知Keras保存了模型权重(.h5),模型体系结构(.json)( https://jovianlin.io/saving-loading-keras-models/ ),但是darknet使用模型权重(.weights)和模型体系结构(.cfg)。 我想必须将keras模型转换为darknet模型,但是我不知道怎么办? 因此,您能告诉我如何解决此问题。 谢谢!

2 个答案:

答案 0 :(得分:1)

您需要吗

  1. 将keras模型转换为TensorFlow:https://github.com/amir-abdi/keras_to_tensorflow

  2. 使用本手册将TensorFlow模型转换为OpenCV可读格式:https://github.com/opencv/opencv/wiki/TensorFlow-Object-Detection-API#troubleshooting

答案 1 :(得分:0)

cv :: dnn不支持读取keras模型,这就是您收到此错误的原因。尝试将模型转换为其他格式,例如tensorflow。

我使用了下面的链接进行转换,并发现有关泄漏的Relu的一些错误,因为如果您不使用opencv模块,它不支持泄漏的relu激活,请尝试这样做,

链接:https://github.com/Tony607/keras-tf-pb