onnx模型转tensorflow的pb格式
遇到了很多坑,最常见的就是少了什么模块,或某个模块没有啥属性,
如: module ‘tensorflow’ has no attribute ‘ceil’
记录一下现在转换成功的方式,
首先:git clone https://github.com/onnx/onnx-tensorflow.git
之后在终端安装:
pip install -e.
pip install tensorflow-addons
都安装好了后就可以直接在终端转换了:
onnx-tf convert -i /path/to/input.onnx -o /path/to/output.pb
转换失败大多是版本的原因,
以下我的运行时的版本信息:
Python 3.6.9
ONNX version: 1.6.0
ONNX-TF version: 1.6.0
Tensorflow version: 2.2.0
注意:onnx_tf 无法用pip直接安装1.6.0的版本,需要从github上源码处安装,
https://github.com/onnx/onnx-tensorflow#installation
另附上用代码转换的方式:
import onnx
from onnx_tf.backend import prepare
import os
def onnx2pb(onnx_input_path, pb_output_path):
onnx_model = onnx.load(onnx_input_path) # load onnx model
tf_exp = prepare(onnx_model) # prepare tf representation
tf_exp.export_graph(pb_output_path) # export the model
if __name__ == "__main__":
os.makedirs("tensorflow", exist_ok=True)
onnx_input_path = './onnx/facedetectcnn_640.onnx'
pb_output_path = './tensorflow/model.pb'
onnx2pb(onnx_input_path, pb_output_path)