Попытка обучить модели 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]
)
Это будет смотреть на путь каждого изображения и использовать самое глубокое имя папки в качестве метки для обучения.