keras -> mlmodel : coreml object has no attribute 'convert'

标签 keras coreml

我正在尝试使用 coreml 将我的 keras 模型转换为 mlmodel。但是,它说 coremltools 模块没有属性“convert”。

AttributeError: 'module' object has no attribute 'convert'

我的 coremltools、keras、tensorflow(tensorflow-gpu) 模块都是最新的。 我也在使用 python 2.7.10。

我用过 windows 和 mac,两者都不行。但是,caffe.convert 使用的是 caffe 模型。

代码:

coreml_model = coremltools.converters.keras.convert(MODEL_PATH)

根据文档,我希望 converters.keras.convert 方法在 coremltools 中可用。 文档:https://apple.github.io/coremltools/generated/coremltools.converters.keras.convert.html

请帮忙,提前致谢!

编辑:

import coremltools
# from keras.models import load_model
import keras
import sys
from keras.applications import MobileNet
from keras.utils.generic_utils import CustomObjectScope

with CustomObjectScope({'relu6': keras.applications.MobileNet.relu6, 'DepthwiseConv2D': keras.applications.mobilenet.DepthwiseConv2D}):
    model = load_model('weights.hdf5')

MODEL_PATH = "data/model_wide_cifar-10_fruits_model.h5"

def main():
    """ Takes in keras model and convert to .mlmodel"""
    print(sys.version)

    # Load in keras model.
    # model = load_model(MODEL_PATH)

    # load labels
    labels=[]
    label_handler = open("fruit-labels.txt", 'r')
    for label in label_handler:
        labels.append(label.rstrip())
    label_handler.close()
    print("[INFO] Labels: {0}".format(labels))

    # Convert to .mlmodel
    coreml_model = coremltools.converters.keras.convert(
        model=MODEL_PATH,
        input_names="image",
        output_names="image",
        class_labels=labels)

    labels = 'fruit-labels.txt'

    # Save .mlmodel
    coreml_model.utils.save_spec('fruitclassifier.mlmodel')

最佳答案

解决方案是使用 virtualenv。按照 coremltools README 中的说明进行操作:

安装

我们建议使用 virtualenv 来使用、安装或构建 coremltools。是 确保使用您的系统 pip 安装 virtualenv。

pip install virtualenv

安装coremltools的方法如下 standard python package installation steps . 要创建名为 pythonenv 的 Python 虚拟环境,请按照以下步骤操作:

# Create a folder for virtualenv
mkdir virtualenvs
cd virtualenvs

# Create a Python virtual environment for your Core ML project
virtualenv coremltools

要激活您的新虚拟环境并在此环境中安装 coremltools,请按照以下步骤操作:

# Active your virtual environment
source coremltools/bin/activate


# Install coremltools in the new virtual environment, pythonenv
pip install --upgrade pip
pip install -U coremltools==3.0b5

安装keras和tensorflow

pip install keras tensorflow

现在确保它正常工作。激活 coremltools 环境后,运行

>>> python
Python 3.7.4 (v3.7.4:e09359112e, Sep 5 2019, 14:54:52)
>>> import coremltools
>>> coremltools.converters.keras.convert()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: convert() missing 1 required positional argument: 'model'

coremltools documentation

归功于这些人的问题:https://github.com/apple/coremltools/issues/440

关于keras -> mlmodel : coreml object has no attribute 'convert' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54166644/

相关文章:

python - 在 Keras 中训练多元回归模型时损失值非常大

python - 一维 CNN (Keras) 的输入形状

swift - 如何让 .mlmodel 在 Swift Playground 中使用?

swift - 如何判断 Apple 的 Vision 框架中哪些语言可用于文本识别?

python - 加载 Fashion_mnist 数据需要太多时间

keras - 在 Keras 中,如何获取与我的模型中包含的 "Model"对象关联的层名称?

python - 我可以在 Keras 中定义两个不同的调用函数,一个用于正向映射,另一个用于反向映射

ios - 如何识别或匹配两张图片?

python - 使用 Keras 2 保存的 CoreML 加载模型

swift - 功能检测期间 iOS Vision API "computeBlinkFunction"中的错误和卡住