keras将h5模型转onnx

最近在转deepface的代码

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import (
    Conv2D,
    MaxPooling2D,
    AveragePooling2D,
    Flatten,
    Dense,
    Dropout,
)
import tf2onnx
num_classes = 7
model = Sequential()

# 1st convolution layer
model.add(Conv2D(64, (5, 5), activation="relu", input_shape=(48, 48, 1)))
model.add(MaxPooling2D(pool_size=(5, 5), strides=(2, 2)))

# 2nd convolution layer
model.add(Conv2D(64, (3, 3), activation="relu"))
model.add(Conv2D(64, (3, 3), activation="relu"))
model.add(AveragePooling2D(pool_size=(3, 3), strides=(2, 2)))

# 3rd convolution layer
model.add(Conv2D(128, (3, 3), activation="relu"))
model.add(Conv2D(128, (3, 3), activation="relu"))
model.add(AveragePooling2D(pool_size=(3, 3), strides=(2, 2)))

model.add(Flatten())

# fully connected neural networks
model.add(Dense(1024, activation="relu"))
model.add(Dropout(0.2))
model.add(Dense(1024, activation="relu"))
model.add(Dropout(0.2))

model.add(Dense(num_classes, activation="softmax"))

model.load_weights("facial_expression_model_weights.h5")

onnx_model, _ = tf2onnx.convert.from_keras(model)
import onnxmltools
onnxmltools.utils.save_model(onnx_model, 'facial_expression_model.onnx')
# tf2onnx.convert.export_onnx_model(onnx_model, 'facial_expression_model.onnx')
# tf2onnx.save_model(onnx_model, 'facial_expression_model.onnx')

这里注意安装了onnxmltool后会改变
protobuf的版本需要重新安装

pip install protobuf==3.20.0

猜你喜欢

转载自blog.csdn.net/qq_16792139/article/details/131328957
今日推荐