探索keras2onnx:将Keras模型无缝转换为ONNX格式
keras-onnxConvert tf.keras/Keras models to ONNX项目地址:https://gitcode.com/gh_mirrors/ke/keras-onnx
项目介绍
keras2onnx 是一个强大的开源工具,旨在将Keras模型转换为ONNX(Open Neural Network Exchange)格式。这一转换工具最初是在onnxmltools项目中开发的,后来为了支持更多类型的Keras模型并简化多个转换器的混合使用,其开发被转移到了一个独立的仓库。
尽管keras2onnx的活跃开发已经停止,并且目前冻结在tf-2.3和onnx-1.10版本,但它仍然是一个非常有价值的工具,特别是对于那些希望将Keras模型转换为ONNX格式的用户。对于最新的转换需求,建议使用tf2onnx,它支持TensorFlow、Keras、Tflite和TensorFlow.js模型的转换。
项目技术分析
keras2onnx的核心功能是提供一个桥梁,使得Keras模型能够被转换为ONNX格式,从而可以在不同的平台和框架中使用。它支持大多数常见的Keras层,并且已经通过CI构建在Python 3.5至3.8和TensorFlow 1.x/2.0至2.2版本上进行了测试。
项目及技术应用场景
keras2onnx的应用场景非常广泛,包括但不限于:
- 模型部署:将训练好的Keras模型转换为ONNX格式,以便在不同的硬件和平台上进行部署。
- 模型优化:利用ONNX Runtime等优化工具对模型进行加速。
- 跨平台兼容性:确保模型在不同的操作系统和设备上的一致性和兼容性。
项目特点
- 广泛的支持:keras2onnx支持多种Keras模型,包括子类化模型和常见的预训练模型。
- 易于使用:提供了简单的API和脚本,使得用户可以轻松地将Keras模型转换为ONNX格式。
- 社区支持:虽然活跃开发已停止,但社区仍然提供支持和维护,确保工具的稳定性和可用性。
安装与使用
你可以通过以下命令从PyPi安装keras2onnx:
pip install keras2onnx
或者从源代码安装:
pip install -U git+https://github.com/microsoft/onnxconverter-common
pip install -U git+https://github.com/onnx/keras-onnx
在运行转换器之前,请确保你的Python环境中已经安装了TensorFlow。
示例代码
以下是一个简单的示例,展示如何将Keras模型转换为ONNX格式并进行推理:
import numpy as np
from keras.preprocessing import image
from keras.applications.resnet50 import preprocess_input
import keras2onnx
import onnxruntime
# 图像预处理
img_path = 'street.jpg' # 确保图像在img_path中
img_size = 224
img = image.load_img(img_path, target_size=(img_size, img_size))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
# 加载Keras模型
from keras.applications.resnet50 import ResNet50
model = ResNet50(include_top=True, weights='imagenet')
# 转换为ONNX模型
onnx_model = keras2onnx.convert_keras(model, model.name)
# 运行时预测
content = onnx_model.SerializeToString()
sess = onnxruntime.InferenceSession(content)
x = x if isinstance(x, list) else [x]
feed = dict([(input.name, x[n]) for n, input in enumerate(sess.get_inputs())])
pred_onnx = sess.run(None, feed)
结论
keras2onnx是一个强大且易于使用的工具,它为Keras用户提供了一个无缝转换到ONNX格式的途径。尽管其活跃开发已经停止,但它仍然是一个非常有价值的资源,特别是对于那些希望在不同平台和框架中使用Keras模型的用户。通过使用
keras-onnxConvert tf.keras/Keras models to ONNX项目地址:https://gitcode.com/gh_mirrors/ke/keras-onnx