如何将使用 Keras 模型训练的 Tensorflow 2.* 转换为 .onnx 格式?

Mim*_*imi 2 python opencv keras tensorflow onnx

我使用 Python 3.7.4 和 TensorFlow 2.0 和 Keras 2.2.4-tf 来训练我自己的 CNN 模型。一切顺利。我可以使用例如model.save(my_model),然后在其他Python 脚本中使用它。当我想在 OpenCV 中使用经过训练的模型及其 C++ 中的 DNN 模块时出现问题。cv::dnn:readNetFromTensorflow(model.pb, model.pbtxt),你可以看到两个参数,但我无法获得第二个 .pbtxt 文件。所以我决定使用 .onnx 格式,因为它的灵活性。问题是现有的库 keras2onnx 只采用 TensorFlow 1.* 的模型,我想避免使用它。转换它的代码示例如下所示:

import tensorflow as tf
import onnx
import keras2onnx
model = tf.keras.models.load_model(my_model_folder_path)
onnx_model = keras2onnx.convert_keras(model, model.name)
onnx.save_model(onnx_model, model_name_onnx)
Run Code Online (Sandbox Code Playgroud)

是否有其他方法可以将此类模型转换为 onnx 格式?

小智 5

最新版本的 keras2onnx(在 github master 中)支持 TensorFlow 2。

您可以像这样安装它:

pip install git+https://github.com/microsoft/onnxconverter-common
pip install git+https://github.com/onnx/keras-onnx
Run Code Online (Sandbox Code Playgroud)