Преобразование модели кафе в формат ONNX - проблема с coremltools - PullRequest
1 голос
/ 27 мая 2020

Я хотел преобразовать мою модель распознавания лиц, написанную в caffe (https://github.com/adelekuzmiakova/onnx-converter/blob/master/res10_300x300_ssd_iter_140000.caffemodel), в формат ONNX. Я следил за этим руководством: https://github.com/onnx/onnx-docker/blob/master/onnx-ecosystem/converter_scripts/caffe_coreml_onnx.ipynb, а также вот мой код:

import coremltools
import onnxmltools

# Update your input name and path for your caffe model
proto_file = 'no_norm_param.deploy.prototext' 
input_caffe_path = 'res10_300x300_ssd_iter_140000.caffemodel'

# Update the output name and path for intermediate coreml model, or leave as is
output_coreml_model = 'model.mlmodel'

# Change this path to the output name and path for the onnx model
output_onnx_model = 'model.onnx'



# Convert Caffe model to CoreML 
coreml_model = coremltools.converters.caffe.convert((input_caffe_path, proto_file))

# Save CoreML model
coreml_model.save(output_coreml_model)

# Load a Core ML model
coreml_model = coremltools.utils.load_spec(output_coreml_model)

# Convert the Core ML model into ONNX
onnx_model = onnxmltools.convert_coreml(coreml_model)

# Save as protobuf
onnxmltools.utils.save_model(onnx_model, output_onnx_model)

Однако, когда я запускаю этот код, я получаю следующее сообщение об ошибке:

[libprotobuf ERROR /Users/zach/builds/peTAVmNC/3/nn-inference/coremltools-build/deps/protobuf/src/google/protobuf/text_format.cc:287] Error parsing text-format caffe.NetParameter: 1010:17: Message type "caffe.LayerParameter" has no field named "permute_param".
Traceback (most recent call last):
  File "convert-caffe-onnx.py", line 19, in <module>
    coreml_model = coremltools.converters.caffe.convert((input_caffe_path, proto_file))
  File "/Users/adele/Desktop/vay-sports/onnx-converter/.env/lib/python3.7/site-packages/coremltools/converters/caffe/_caffe_converter.py", line 192, in convert
    predicted_feature_name)
  File "/Users/adele/Desktop/vay-sports/onnx-converter/.env/lib/python3.7/site-packages/coremltools/converters/caffe/_caffe_converter.py", line 260, in _export
    predicted_feature_name)
RuntimeError: Unable to load caffe network Prototxt file: no_norm_param.deploy.prototext

Для меня это немного странно, потому что, когда я смотрю свой файл prototext (https://github.com/adelekuzmiakova/onnx-converter/blob/master/no_norm_param.deploy.prototext), там нет permute_param. Мой файл прототипа, модель кафе и код можно найти здесь: https://github.com/adelekuzmiakova/onnx-converter

Кто-нибудь еще сталкивался с этой проблемой? Вы знаете, что может происходить? Или это должно что-то делать с SSD? Большое спасибо!

...