我在.h5中从Matterport的MaskRCNN实现构建了一个自定义模型。我成功地保存了整个模型,而不是仅使用model.keras_model.save()保存权重,并假设它正常工作。
我需要在中将这个模型转换为ONNX到推论,而且我在这过程中遇到了几个错误。我试过:
T1。.h5到ONNX使用本教程和keras2onnx包,我在以下位置碰到了一个错误:
model = load_model('model.h5')
Error:
ValueError: Unknown layer: BatchNormT2。使用这个GitHub代码定义自定义层
model = keras.models.load_model(r'model.h5', custom_objects={'BatchNorm':BatchNorm,
'tf':tf, 'ProposalLayer':ProposalLayer,
'PyramidROIAlign1':PyramidROIAlign1, 'PyramidROIAlign2':PyramidROIAlign2,
'DetectionLayer':DetectionLayer}, compile=False)
Error:
ValueError: No model found in config file.
ValueError: Unknown layer: PyramidROIAlignT3。.h5到.pb (冻结图)和.pbtxt,然后在找到输入和输出节点之后使用tf2onnx从.pb到ONNX (似乎只是其中的一个?):
assert d in name_to_node, "%s is not in graph" % d
AssertionError: output0 is not in graphT4。使用tf服务代码.h5到SavedModel,然后使用python -m tf2onnx.convert --saved-model exported_models\coco_mrcnn\3 --opset 15 --output "model.onnx"转换为ONNX:
ValueError: make_sure failure: variable mrcnn_detection/map/while/Enter already exists as state variable.有办法通过任何直接或间接的方式将我的.h5模型转换成ONNX吗?,我被困在这上面好几天了!
提前谢谢。
编辑1:keras.models.load_model()似乎抛出了前两个错误--不知道是否有一种方法可以使用..pb/..pbtxt模型,或者不使用load_model()的方法,或者解决load_model()问题的方法?
编辑2:
T1代码:从Matterport的MaskRCNN实现修改的自定义数据集
发布于 2021-09-01 03:04:10
尝试将其转换为保存的模型格式,然后转换为onnx。
import numpy as np
import tensorflow as tf
from tensorflow import keras
def get_model():
# Create a simple model.
inputs = keras.Input(shape=(32,))
outputs = keras.layers.Dense(1)(inputs)
model = keras.Model(inputs, outputs)
model.compile(optimizer="adam", loss="mean_squared_error")
return model
model = get_model()
# Train the model.
test_input = np.random.random((128, 32))
test_target = np.random.random((128, 1))
model.fit(test_input, test_target)
# Calling `save('my_model.h5')` creates a h5 file `my_model.h5`.
model.save("my_h5_model.h5")
# It can be used to reconstruct the model identically.
model = keras.models.load_model("my_h5_model.h5")
tf.saved_model.save(model, "tmp_model")然后使用tf2onnx进行转换。
python3 -m tf2onnx.convert --saved-model tmp_model --output "model.onnx"https://stackoverflow.com/questions/69007059
复制相似问题