Попытка обучить модели coreML с помощью turicreate, но не знаю, как получить доступ к файлу.

Я пытаюсь сделать coreML-модель, используя turicreate. (Это мой первый трогательный питон)

Допустим, у меня есть пять файлов: "собака", "кошка", "голубь", "белка", "енот".

Как я могу изменить этот код так, чтобы программа получала к нему доступ и обучала его.

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')

2 ответа

Замените 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.

Как примечание, вам, вероятно, понадобится более одного изображения каждого дополнительного животного (или категории), которое вы хотите, чтобы модель распознала. Если у вас еще нет изображений для каждой категории, попробуйте найти их здесь: 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]
)

Это будет смотреть на путь каждого изображения и использовать самое глубокое имя папки в качестве метки для обучения.

Другие вопросы по тегам