1

我正在尝试使用 turicreate 制作 coreML 模型。(这是我第一次接触python)

假设我有五个文件,“狗”、“猫”、“鸽子”、“松鼠”、“浣熊”。

如何更改此代码以便程序访问和训练它。

import turicreate as tc

data = tc.image_analysis.load_images('train', with_path=True)

data['label'] = data['path'].apply(lambda path: 'cat' if 'cat' in path else 'dog')
data.save('images.sframe')

train_data, test_data = data.random_split(0.8)

model = tc.image_classifier.create(train_data, target='label')

predictions = model.predict(test_data)

metrics = model.evaluate(test_data)

model.save('mymodel.model')

model.export_coreml('AnimalImages.mlmodel')
4

2 回答 2

1

请注意,您可能需要的不仅仅是一张您希望模型识别的其他动物(或类别)的图像。如果您还没有每个类别的图片,您可以尝试在此处找到一些图片:http: //image-net.org/synset?wnid= n01318894

您正在使用的 Turi Create 演示假定每个类别的所有图像都保存在它们自己的文件夹中。因此,您将有单独的文件夹用于images/dog, images/cat,images/pigeon等。

本教程使用此目录结构为每个图像生成一组标签。您可以通过将data['label'] = ...行替换为以下内容来概括它们的内容:

import os
data['label'] = data['path'].apply(
    lambda path: os.path.dirname(path).split('/')[-1]
)

这将查看每个图像的路径,并使用最深的文件夹名称作为训练的标签。

于 2018-01-19T21:00:49.610 回答
1

将第2行和第 3行代码替换为以下 2 行,您就完成了:

data = tc.image_analysis.load_images('train', with_path = True, recursive = True)

data["all_images"] = data["path"].apply(lambda path: getImageFromPath(path))

在导入行下方声明:

def getImageFromPath(path):
return os.path.basename(os.path.dirname(os.path.normpath(path)))

并确保将所有训练图像文件夹保存在名为“train”的文件夹中(如您的情况)。并将“train”文件夹保存在与此 python 文件相同的路径中。

于 2018-11-29T10:13:27.510 回答