Мы пытаемся преобразовать модель кафе в формат onnx.Изначально мы преобразовали модель caffe в caffe2 с помощью инструмента перевода CaffetoCaffe2 .Для этого мы установили caffe и caffe2 (conda) с python 2.7.После успешного преобразования из caffe в caffe2 мы получили три файла, а именно.Предсказание_net.pb, Предсказание_нет.pbtxt и inet_net.pb.Затем мы попытались преобразовать эти файлы в формат «onnx» с помощью конвертера Caffe2toONNX . На этой странице мы использовали команду оболочки и скрипт python для преобразования моделей в формат onnx.Но мы получили следующую ошибку: -
RuntimeError: [принудительное завершение в net.cc:69].op Concat: источник для маски ввода неизвестен для net Context-Encoder, оператор ввода: "данные" ввод: "маска" вывод: "data_all" вывод: "_data_all_dims" тип: "Concat" arg {name: "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')
Вот файл pbtxt caffe2 ссылки: вести caffe_to_tf tool;но обнаружена другая ошибка: -
Ошибка обнаружена: несколько верхних узлов не поддерживаются.