Статьи

Обучение модели классификации изображений с помощью Create ML

Машинное обучение прекрасно, но его трудно реализовать в мобильных приложениях. Это особенно верно для людей без степени науки данных. Однако с Core ML компания Apple упрощает добавление машинного обучения в существующее приложение iOS, используя совершенно новую платформу Create ML для обучения легких, настраиваемых нейронных сетей.

Машинное обучение — это использование статистического анализа, чтобы помочь компьютерам принимать решения и делать прогнозы на основе характеристик, найденных в этих данных. Другими словами, это тот факт, что компьютер анализирует поток данных, чтобы сформировать абстрактное понимание (называемое «моделью»), и использует эту модель для сравнения с более новыми данными.

Многие из ваших любимых приложений на вашем телефоне, вероятно, будут включать машинное обучение. Например, когда вы печатаете сообщение, автозамена предсказывает, что вы собираетесь набирать дальше, используя модель машинного обучения, которая постоянно обновляется по мере ввода. Даже виртуальные помощники, такие как Siri, Alexa и Google Assistant, полностью зависят от машинного обучения, чтобы имитировать поведение человека.

Давайте, наконец, воспользуемся вашими новыми знаниями в области машинного обучения, чтобы создать первую модель! Вам нужно убедиться, что у вас установлен Xcode 10, а также MacOS Mojave, работающий на вашем Mac. Кроме того, я предполагаю, что у вас уже есть опыт разработки Swift, Xcode и iOS в целом.

В этом уроке мы будем классифицировать изображения в зависимости от того, есть ли у них дерево или цветок. Однако рекомендуется следовать вашим собственным изображениям и объектам, которые вы хотите вместо этого классифицировать. По этой причине вам не будут предоставлены изображения цветов и деревьев, используемые в этом примере.

Если у вас возникают проблемы с поиском изображений (или если у вас недостаточно собственных изображений), попробуйте PhotoDune или Google Images . В целях обучения этого должно быть достаточно для начала. Старайтесь находить изображения, которые имеют отдельный основной объект (например, один апельсин, одно дерево) вместо нескольких (например, гроздья бананов, целые леса), чтобы избежать путаницы в модели, с которой можно начать. Конечно, вы всегда можете добавить больше осложнений позже, когда у вас есть некоторый опыт.

В области науки о данных хорошей практикой является разделение ваших наборов данных на две категории: одну для обучения модели и одну для тестирования. Поскольку вы хотите уделять больше внимания своей фактической модели, 80% вашего набора данных следует использовать для обучения, а вы должны сэкономить 20%, чтобы убедиться, что все работает так, как должно; в конце концов, это тоже важно!

Имея в виду правило 80:20, создайте две папки: « Обучение» и « Тестирование» , в которые вы поместите нужное количество изображений в каждую из папок. Как только у вас будет 80% ваших данных в обучении   и 20% в тестировании , наконец пришло время разделить их по категориям. Например, в папке « Обучение » у меня будет две папки « Цветы и деревья », и у меня будет 20% изображений, не отсортированных в папке « Тестирование ».

Рис. 1. Данные об обучении цветов
Рисунок 2 Деревья Тренировочные данные

Итак, давайте углубимся и на самом деле создадим модель. Вы можете быть удивлены, узнав, что большая часть вашей работы уже выполнена! Теперь все, что нам осталось сделать, это написать некоторый код и заставить Swift и Xcode работать, чтобы творить чудеса для нас.

Хотя большинство из нас привыкли создавать настоящие приложения для iOS, на этот раз мы отправимся на игровую площадку, чтобы создать наши модели машинного обучения. Интересно, не правда ли? Если вы думаете об этом, это действительно имеет смысл — вам не нужны все эти дополнительные файлы, а просто нужен чистый лист, чтобы сообщить Swift, как создать вашу модель. Начните с создания игровой площадки MacOS.

Сначала откройте Xcode.

Рисунок 3 Откройте Xcode

Затем создайте новую игровую площадку.

Рисунок 4 Создание игровой площадки

И дать ему полезное имя.

Рисунок 5 Назовите игровую площадку

Вопреки тому, что вы, возможно, подумали, вам просто нужно три строчки кода, чтобы подготовить игровую площадку для тренировки вашей модели. Удалите весь шаблон кода, который генерируется автоматически, а затем выполните следующие действия:

Импортируйте CreateMLUI CreateMLUI API для включения Create ML в вашей Swift Playground:

1
import CreateMLUI

Затем создайте экземпляр MLImageClassifierBuilder и вызовите метод showInLiveView(:) чтобы иметь возможность взаимодействовать с классом в интуитивно понятном пользовательском интерфейсе на вашей игровой площадке:

1
2
let builder = MLImageClassifierBuilder()
builder.showInLiveView()
Рисунок 6 Создание кода ML

Большой! Это все, что вам нужно сделать с точки зрения кода. Теперь вы, наконец, готовы перетащить изображения, чтобы создать полнофункциональную модель Core ML.

Теперь мы разработали пользовательский интерфейс, где мы можем начать добавлять наши изображения и наблюдать, как разворачивается магия! Как упоминалось ранее, у меня есть семь изображений цветов и семь изображений деревьев. Конечно, этого будет недостаточно для сверхточной модели, но это делает свое дело.

Рисунок 7 Создание интерфейса пользователя ML

Когда вы откроете редактор-помощник, вы увидите окно с надписью « Отбросить изображения для начала обучения» , куда можно перетащить папку « Обучение ». Через пару секунд вы увидите некоторые результаты на вашей игровой площадке. Теперь вы готовы протестировать свою новую модель Core ML.

После того, как вы закончили обучение своей модели, ее легко протестировать и загрузить для использования в ваших приложениях. Вы можете проверить это прямо на своей игровой площадке, даже не создавая проект. Когда вы знаете, что ваша модель готова, вы можете поместить ее в приложение для iOS (или macOS).

Помните папку « Тестирование », которую вы создали? Идите вперед и перетащите всю папку на свою игровую площадку (куда вы ранее добавили изображения для тренировок в учебнике). Вы должны увидеть, как ваши изображения появляются в списке, вместе с тем, что модель считает каждым из них. Вы можете быть удивлены — даже с таким небольшим количеством данных, вы все равно можете получить довольно точную модель.

Рисунок 9 Тестирование вывода данных

Если вы довольны своей моделью, вы можете экспортировать ее в формат Core ML и использовать в своих приложениях. Рядом с классификатором изображений перейдите и нажмите стрелку, направленную вниз, чтобы отобразить некоторые поля, которые можно изменить, чтобы изменить имя, автора или описание вашей модели. Вы также можете выбрать, где его скачать.

Когда вы нажмете синюю кнопку Сохранить , ваш файл .mlmodel появится в нужном вам месте. Если вам интересно, вы также можете прочитать результаты на игровой площадке, чтобы узнать такую ​​информацию, как точность, отзыв и место сохранения вашей модели.

Рисунок 10 Экспорт модели

В этом руководстве предполагается, что вы знакомы с моделями Core ML в целом, но я кратко объясню, как это работает. Для получения дополнительной информации о том, как использовать модель, когда она появится в вашем приложении, вы можете прочитать мой другой учебник:

  • Машинное обучение
    Начните с распознавания изображений в Core ML

Чтобы использовать модель, перетащите ее в свой проект XCode (как если бы вы использовали изображение или аудиофайл). Затем импортируйте Core ML в файл, в котором вы хотите его использовать. С помощью нескольких дополнительных шагов вы сможете обрабатывать модель как класс Swift и вызывать для него методы, как описано в моем другом учебнике.

Для получения дополнительной информации о том, как это сделать, вы также можете посетить документацию Apple и прочитать о том, как интегрировать машинное обучение в ваше приложение .

В этом руководстве вы узнали, как легко создать собственную нейронную сеть классификации изображений, написав всего три строки кода. Вы обучили эту модель своим собственным данным, а затем использовали 20% ее для тестирования модели. Как только он заработал, вы экспортировали его и добавили в свое собственное приложение.

Я надеюсь, что вам понравился этот учебник, и я настоятельно рекомендую вам ознакомиться с некоторыми другими нашими курсами и учебниками по машинному обучению здесь, на Envato Tuts +!

  • Мобильная разработка
    Новый курс: Распознавание изображений на iOS с Core ML
    Эндрю Блэкман
  • Машинное обучение
    Начните с распознавания изображений в Core ML
  • Машинное обучение
    Как обучить модели Core ML для приложения iOS
    Дорон Кац
  • iOS SDK
    Разговор Дизайн Пользовательский опыт для SiriKit и iOS
    Дорон Кац

Если у вас есть какие-либо комментарии или вопросы, пожалуйста, не стесняйтесь оставлять их в разделе ниже.