Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Coremltools转换CAFEMODEL问题_Python_Macos_Neural Network_Coreml_Coremltools - Fatal编程技术网

Python Coremltools转换CAFEMODEL问题

Python Coremltools转换CAFEMODEL问题,python,macos,neural-network,coreml,coremltools,Python,Macos,Neural Network,Coreml,Coremltools,有一个奇妙的设置说明,允许应用任何图像的风格到我的照片 但它返回.caffemodel格式,我想将其转换为核心ML格式 有一个 我创建了一个python文件,其中包含: import coremltools # Convert a Caffe model to a classifier in Core ML coreml_model = coremltools.converters.caffe.convert( ('nin_imagenet_conv.caffe

有一个奇妙的设置说明,允许应用任何图像的风格到我的照片

但它返回.caffemodel格式,我想将其转换为核心ML格式

有一个

我创建了一个python文件,其中包含:

import coremltools

    # Convert a Caffe model to a classifier in Core ML
    coreml_model = coremltools.converters.caffe.convert(
        ('nin_imagenet_conv.caffemodel', 'train_val.prototxt'), predicted_feature_name='class_labels.txt'
    )

    # Now save the model
    coreml_model.save('nin_imagenet_conv.mlmodel')
然后在终端中运行
python convert.py

但是我得到了一个错误:

================= 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: '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 2: Type: 'Convolution', Name: 'conv1'. Input(s): 'data'. Output(s): 'conv1'.
Layer 3: Type: 'ReLU', Name: 'relu0'. Input(s): 'conv1'. Output(s): 'conv1'.
Layer 4: Type: 'Convolution', Name: 'cccp1'. Input(s): 'conv1'. Output(s): 'cccp1'.
Layer 5: Type: 'ReLU', Name: 'relu1'. Input(s): 'cccp1'. Output(s): 'cccp1'.
Layer 6: Type: 'Convolution', Name: 'cccp2'. Input(s): 'cccp1'. Output(s): 'cccp2'.
Layer 7: Type: 'ReLU', Name: 'relu2'. Input(s): 'cccp2'. Output(s): 'cccp2'.
Layer 8: Type: 'Pooling', Name: 'pool0'. Input(s): 'cccp2'. Output(s): 'pool0'.
Layer 9: Type: 'Convolution', Name: 'conv2'. Input(s): 'pool0'. Output(s): 'conv2'.
Layer 10: Type: 'ReLU', Name: 'relu3'. Input(s): 'conv2'. Output(s): 'conv2'.
Layer 11: Type: 'Convolution', Name: 'cccp3'. Input(s): 'conv2'. Output(s): 'cccp3'.
Layer 12: Type: 'ReLU', Name: 'relu5'. Input(s): 'cccp3'. Output(s): 'cccp3'.
Layer 13: Type: 'Convolution', Name: 'cccp4'. Input(s): 'cccp3'. Output(s): 'cccp4'.
Layer 14: Type: 'ReLU', Name: 'relu6'. Input(s): 'cccp4'. Output(s): 'cccp4'.
Layer 15: Type: 'Pooling', Name: 'pool2'. Input(s): 'cccp4'. Output(s): 'pool2'.
Layer 16: Type: 'Convolution', Name: 'conv3'. Input(s): 'pool2'. Output(s): 'conv3'.
Layer 17: Type: 'ReLU', Name: 'relu7'. Input(s): 'conv3'. Output(s): 'conv3'.
Layer 18: Type: 'Convolution', Name: 'cccp5'. Input(s): 'conv3'. Output(s): 'cccp5'.
Layer 19: Type: 'ReLU', Name: 'relu8'. Input(s): 'cccp5'. Output(s): 'cccp5'.
Layer 20: Type: 'Convolution', Name: 'cccp6'. Input(s): 'cccp5'. Output(s): 'cccp6'.
Layer 21: Type: 'ReLU', Name: 'relu9'. Input(s): 'cccp6'. Output(s): 'cccp6'.
Layer 22: Type: 'Pooling', Name: 'pool3'. Input(s): 'cccp6'. Output(s): 'pool3'.
Layer 23: Type: 'Dropout', Name: 'drop'. Input(s): 'pool3'. Output(s): 'pool3'.
WARNING: Skipping training related layer 'drop' of type 'Dropout'.
Layer 24: Type: 'Convolution', Name: 'conv4-1024'. Input(s): 'pool3'. Output(s): 'conv4'.
Layer 25: Type: 'ReLU', Name: 'relu10'. Input(s): 'conv4'. Output(s): 'conv4'.
Layer 26: Type: 'Convolution', Name: 'cccp7-1024'. Input(s): 'conv4'. Output(s): 'cccp7'.
Layer 27: Type: 'ReLU', Name: 'relu11'. Input(s): 'cccp7'. Output(s): 'cccp7'.
Layer 28: Type: 'Convolution', Name: 'cccp8-1024'. Input(s): 'cccp7'. Output(s): 'cccp8'.
Layer 29: Type: 'ReLU', Name: 'relu12'. Input(s): 'cccp8'. Output(s): 'cccp8'.
Layer 30: Type: 'Pooling', Name: 'pool4'. Input(s): 'cccp8'. Output(s): 'pool4'.
Layer 31: Type: 'Accuracy', Name: 'accuracy'. Input(s): 'pool4', 'label'. Output(s): 'accuracy'.
WARNING: Skipping training related layer 'accuracy' of type 'Accuracy'.
Layer 32: Type: 'SoftmaxWithLoss', Name: 'loss'. Input(s): 'pool4', 'label'. WARNING: Skipping training related layer 'loss' of type 'SoftmaxWithLoss'.

================= Summary of the conversion: ===================================
Traceback (most recent call last):
  File "convert.py", line 5, in <module>
    ('nin_imagenet_conv.caffemodel', 'train_val.prototxt'), predicted_feature_name='class_labels.txt'
  File "/Users/pavel.tarasevich/Library/Python/2.7/lib/python/site-packages/coremltools/converters/caffe/_caffe_converter.py", line 192, in convert
    predicted_feature_name)
  File "/Users/pavel.tarasevich/Library/Python/2.7/lib/python/site-packages/coremltools/converters/caffe/_caffe_converter.py", line 260, in _export
    predicted_feature_name)
RuntimeError: Unable to infer input name and dimensions. Please provide a .prototxt file with 'Input' layer and dimensions defined.
=====================开始从Caffe到CoreML的转换======================
图层0:类型:“数据”,名称:“数据”。输出:“数据”、“标签”。
警告:正在跳过类型为“Data”的数据层“Data”。建议使用输入层进行部署。
第1层:类型:“数据”,名称:“数据”。输出:“数据”、“标签”。
警告:正在跳过类型为“Data”的数据层“Data”。建议使用输入层进行部署。
第2层:类型:“卷积”,名称:“conv1”。输入:“数据”。输出:“conv1”。
第3层:类型:“ReLU”,名称:“relu0”。输入:“conv1”。输出:“conv1”。
第4层:类型:“卷积”,名称:“cccp1”。输入:“conv1”。输出:“cccp1”。
第5层:类型:“ReLU”,名称:“relu1”。输入:“cccp1”。输出:“cccp1”。
第6层:类型:“卷积”,名称:“cccp2”。输入:“cccp1”。输出:“cccp2”。
第7层:类型:“ReLU”,名称:“relu2”。输入:“cccp2”。输出:“cccp2”。
第8层:类型:“池”,名称:“池0”。输入:“cccp2”。输出:'pool0'。
第9层:类型:“卷积”,名称:“conv2”。输入:'pool0'。输出:'conv2'。
第10层:类型:“ReLU”,名称:“relu3”。输入:'conv2'。输出:'conv2'。
第11层:类型:“卷积”,名称:“cccp3”。输入:'conv2'。输出:“cccp3”。
第12层:类型:“ReLU”,名称:“relu5”。输入:“cccp3”。输出:“cccp3”。
第13层:类型:“卷积”,名称:“cccp4”。输入:“cccp3”。输出:“cccp4”。
第14层:类型:“ReLU”,名称:“relu6”。输入:“cccp4”。输出:“cccp4”。
第15层:类型:“池”,名称:“池2”。输入:“cccp4”。输出:'pool2'。
第16层:类型:“卷积”,名称:“conv3”。输入:'pool2'。输出:“conv3”。
第17层:类型:“ReLU”,名称:“relu7”。输入:“conv3”。输出:“conv3”。
第18层:类型:“卷积”,名称:“cccp5”。输入:“conv3”。输出:“cccp5”。
第19层:类型:“ReLU”,名称:“relu8”。输入:“cccp5”。输出:“cccp5”。
第20层:类型:“卷积”,名称:“cccp6”。输入:“cccp5”。输出:“cccp6”。
第21层:类型:“ReLU”,名称:“relu9”。输入:“cccp6”。输出:“cccp6”。
第22层:类型:“池”,名称:“池3”。输入:“cccp6”。输出:“池3”。
第23层:类型:“Dropout”,名称:“drop”。输入:'pool3'。输出:“池3”。
警告:跳过类型为“辍学”的培训相关层“辍学”。
第24层:类型:“卷积”,名称:“conv4-1024”。输入:'pool3'。输出:“conv4”。
第25层:类型:“ReLU”,名称:“relu10”。输入:“conv4”。输出:“conv4”。
第26层:类型:“卷积”,名称:“cccp7-1024”。输入:“conv4”。输出:“cccp7”。
第27层:类型:“ReLU”,名称:“relu11”。输入:“cccp7”。输出:“cccp7”。
第28层:类型:“卷积”,名称:“cccp8-1024”。输入:“cccp7”。输出:“cccp8”。
第29层:类型:“ReLU”,名称:“relu12”。输入:“cccp8”。输出:“cccp8”。
第30层:类型:“池”,名称:“池4”。输入:“cccp8”。输出:'pool4'。
第31层:类型:“精度”,名称:“精度”。输入:'pool4','label'。输出:“准确度”。
警告:跳过“准确性”类型的培训相关层“准确性”。
第32层:类型:“SoftmaxWithLoss”,名称:“loss”。输入:'pool4','label'。警告:跳过“SoftmaxWithLoss”类型的培训相关层“loss”。
========================转换摘要:===================================
回溯(最近一次呼叫最后一次):
文件“convert.py”,第5行,在
('nin_imagenet_conv.caffemodel','train_val.prototxt'),predicted_feature_name='classu labels.txt'
文件“/Users/pavel.tarasevich/Library/Python/2.7/lib/Python/site packages/coremltools/converters/caffe/_-caffe_-converter.py”,第192行,在convert中
预测的特征(名称)
文件“/Users/pavel.tarasevich/Library/Python/2.7/lib/Python/site packages/coremltools/converts/caffe/_-caffe_-converter.py”,第260行,在导出中
预测的特征(名称)
运行时错误:无法推断输入名称和维度。请提供一个定义了“输入”图层和尺寸的.prototxt文件。

在prototxt文件的顶部,添加以下内容:

input: "data"
input_dim: 1
input_dim: 3
input_dim: 224
input_dim: 224
尺寸顺序为:批量大小、通道、高度、宽度。您需要为模型中的每个输入添加其中一个部分


输入的名称(此处,
“数据”
)必须与第一层中的
底部
字段相同。

错误消息指出了错误:您需要更改prototxt文件,为其提供一个具有图像宽度和高度的输入层。看起来您使用的是培训协议而不是部署协议。@MatthijsHollemans我提供了带有另一个协议文件的dropbox链接,但对我来说它不起作用。在另一种情况下,我不知道如何添加图像宽度和高度的输入层,请您在示例中提供帮助。我可以开始悬赏,如果它有助于我补充如何做这作为一个答案。