Любые идеи о том, почему моя модель coreml, созданная с помощью turicreate, не работает? - PullRequest
0 голосов
/ 06 марта 2020

Довольно новый для ML здесь. Я пытаюсь создать модель CoreML для обнаружения рук, используя turicreate.

Набор данных, который я использую, взят из https://github.com/aurooj/Hand-Segmentation-in-the-Wild, который предоставляет изображения рук с эгоцентрической c перспективы вместе с масками для изображений. Я следую пошаговым инструкциям Turicreate «Подготовка данных» (https://github.com/apple/turicreate/blob/master/userguide/object_detection/data-preparation.md), чтобы создать SFrame. Проверяя содержимое переменных на протяжении всего этого процесса, нет ничего плохого.

После подготовки данных я следую инструкциям в разделе «Вводный пример» https://github.com/apple/turicreate/tree/master/userguide/object_detection

Я получаю подсказку об ошибке, когда turicreate выполняет итерации для создания модели. Похоже, никаких потерь нет, что кажется неправильным.

no_loss_iterations

После создания модели я пытаюсь проверить это с частью test_data SFrame. Результаты этих предсказаний - просто пустые массивы, что, очевидно, неправильно.

empty_predictions

После экспорта модели в формате CoreML .ml и проверки ее в приложении она не может ничего распознать (что неудивительно).

Я совершенно новичок в создании моделей, я не могу понять, что может быть не так. Набор данных кажется довольно точным для меня. Единственные изменения, которые я сделал в наборе данных, заключались в том, что некоторые маски не имели явных расширений файлов (они являются PNG), поэтому я добавил расширение .png. Я также переименовал изображения, чтобы они соответствовали учебным форматам turicreate (т. Е. vid4frame025.image.png и vid4frame025.mask.0.png. Опять же, процесс создания SFrame с использованием этих данных кажется правильным на каждом этапе. Я смог проследить процесс с учебным набором данных turicreate (велосипеды и автомобили). ) успешно. Есть идеи, что может пойти не так?

1 Ответ

0 голосов
/ 06 марта 2020

Я обнаружил проблему, и она в основном проистекала из моего незнакомства с Python.

В одной части раздела «Подготовка данных» после создания ограничивающих рамок из изображений маски каждой аннотации присваивается 'label', указывающий тип объекта, которым должна быть аннотация. Мои данные имели другой формат имени, чем данные учебника, поэтому вместо каждой аннотации, имеющей 'label': 'bike', мои аннотации имели 'label': 'vid4frame25`, 'label': 'vid4frame26', etc.

Исправление этого таким образом, что каждая аннотация имеет 'label': 'hand', кажется, исправляло это (или, по крайней мере, пока оно создает легитимную модель).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...