I wanted to convert my face detection model written in caffe (https://github.com/adelekuzmiakova/onnx-converter/blob/master/res10_300x300_ssd_iter_140000.caffemodel) to ONNX format. I was following this tutorial: https://github.com/onnx/onnx-docker/blob/master/onnx-ecosystem/converter_scripts/caffe_coreml_onnx.ipynb and also here is my code:
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)
However, when I run this code, I get the following error message:
[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
To me it's a bit strange because when I look at my prototext
file (https://github.com/adelekuzmiakova/onnx-converter/blob/master/no_norm_param.deploy.prototext), there is no permute_param
. My prototext file, caffe model, and code can be found here: https://github.com/adelekuzmiakova/onnx-converter
Did anyone else run into this problem? Do you know what might be going on? Or does it have to do somethinng with SSD? Many thanks!