无法将caffe2模型转换为onnx或张量流格式

时间:2019-05-07 14:45:35

标签: python tensorflow caffe caffe2 onnx

我们正在尝试将caffe模型转换为onnx格式。最初,我们使用CaffetoCaffe2转换工具将caffe模型转换为caffe2。为此,我们使用python 2.7安装了caffe和caffe2(conda)。从caffe成功转换为caffe2之后,我们得到了三个文件。 Forecast_net.pb,predict_net.pbtxt和inet_net.pb。然后,我们尝试使用Caffe2toONNX转换器将这些文件转换为'onnx'格式。我们在此页面中尝试了shell命令和python脚本将模型转换为onnx格式。但是,我们收到以下错误:-

RuntimeError:[在net.cc:69强制执行失败]。 op Concat:网络上下文编码器的输入掩码的来源未知,操作员输入:“ data”输入:“ mask”输出:“ data_all”输出:“ _data_all_dims”类型:“ Concat” arg {名称:“ order” s: “ NCHW”}

该模型似乎无法正确识别其两个输入。如何正确处理(或指定)两个输入(或多个)并将caffe2模型正确转换为onnx格式?

以下是转换脚本:-

import onnx
import caffe2.python.onnx.frontend
from caffe2.proto import caffe2_pb2

# We need to provide type and shape of the model inputs, 
# see above Note section for explanation
data_type = onnx.TensorProto.FLOAT
data_shape1 = (1, 3, 512, 512)
data_shape2 = (1, 1, 512, 512)
value_info = {
    'data': (data_type, data_shape1),
    'mask': (data_type, data_shape2),
}

predict_net = caffe2_pb2.NetDef()
with open('predict_net.pb', 'rb') as f:
    predict_net.ParseFromString(f.read())

init_net = caffe2_pb2.NetDef()
with open('init_net.pb', 'rb') as f:
    init_net.ParseFromString(f.read())

onnx_model = caffe2.python.onnx.frontend.caffe2_net_to_onnx_model(
    predict_net,
    init_net,
    value_info,
)

#onnx.checker.check_model(onnx_model)
onnx.save(onnx_model, 'model.onnx')

这是链接caffe2 pbtxt文件:predict_net.pbtxt

更新:我们还尝试了caffe_to_tf工具;但遇到另一个错误:-

遇到错误:不支持多个顶级节点。

0 个答案:

没有答案