0

当我尝试使用 coremltools 将模型从 Caffe 转换为 Core ML 模型时,我得到以下信息:

================= Starting Conversion from Caffe to CoreML ======================
Layer 0: Type: 'Data', Name: 'data'. Output(s): 'data', 'label'.
WARNING: Skipping Data Layer 'data' of type 'Data'. It is recommended to use Input layer for deployment.
Layer 1: Type: 'Split', Name: 'label_data_1_split'. Input(s): 'label'. Output(s): 'label_data_1_split_0', 'label_data_1_split_1'.
Layer 2: Type: 'Convolution', Name: 'conv1'. Input(s): 'data'. Output(s): 'conv1'.
Layer 3: Type: 'Slice', Name: 'slice1'. Input(s): 'conv1'. Output(s): 'slice1_1', 'slice1_2'.
Layer 4: Type: 'Eltwise', Name: 'etlwise1'. Input(s): 'slice1_1', 'slice1_2'. Output(s): 'eltwise1'.
Traceback (most recent call last):
  File "test.py", line 2, in <module>
    coreml_model = coremltools.converters.caffe.convert('_iter_3560000.caffemodel')
  File "/Users/zfh/Desktop/face_verification_experiment/model/python27/lib/python2.7/site-packages/coremltools/converters/caffe/_caffe_converter.py", line 142, in convert
    predicted_feature_name)
  File "/Users/zfh/Desktop/face_verification_experiment/model/python27/lib/python2.7/site-packages/coremltools/converters/caffe/_caffe_converter.py", line 187, in _export
    predicted_feature_name
RuntimeError: Unsupported option 'Max' for the parameter 'operation' in layer 'etlwise1' of type 'Elementwise' during caffe conversion.

这是我正在使用的代码:

import coremltools
coreml_model = coremltools.converters.caffe.convert(('_iter_3560000.caffemodel', 'LCNN_deploy.prototxt'))

coreml_model.save('_iter_3560000.mlmodel')

任何想法是什么问题?非常感谢!

4

2 回答 2

1

正如错误消息所说,问题在于 coremltools 不支持 Eltwise 层中的 Max 操作。Core ML 仅支持有限数量的层。

但是...似乎您正在尝试转换用于培训的 .prototxt (即使文件名是LCNN_deploy.prototxt)。你确定这是正确的 deploy.prototxt 吗?

于 2017-07-28T08:07:42.187 回答
0

最近,我从coremltools中提取了caffe2mlmodel的转换工具,它是c++实现的。首先,你需要知道这个工具支持的caffe层,定义在caffe.proto(包含在caffeconverter目录下),然后打开caffe.proto,你可以在消息LayerParameter处找到,如下图:,。您可以找到支持的 caffe 层。 coremltools 的 caffeconverter 中的 caffe.proto 最后,如果你想要自定义 caffe 层,只需添加适配 caffe.proto ,并学习 Core ML 模式 protobuf 规范(https://apple.github.io/coremltools/coremlspecification/#

于 2018-04-18T04:45:57.073 回答