Хорошо, в 2018 году Apple запустит CreateML. Если бы я в то время уже был разработчиком iOS, это было бы самым простым решением, если бы я хотел сделать приложение, включающее машинное обучение. Тем не менее, я погружаюсь в мир iOS-разработки в 2021 году, но это не умаляет и не уменьшает ни капли счастья, которое я испытал, когда узнал, что CreateML существует. Итак, что такое CreateML? Проще говоря, для нас это был инструмент для обучения модели с нулевым кодом. Да, ноль, никакого кодирования вообще. Вы можете смеяться вслух или цинично, потому что, хотя Create ML не использует какой-либо код, это не означает, что он имеет низкую производительность. Исходя из моего опыта, Create ML достаточно точен. Тем не менее, поскольку он не требует кода, ваш набор данных играет здесь важную роль. Фактор QQ (факторы качества и количества данных).

По какой-то причине, возможно, вам нужно машинное обучение для вашего приложения. На самом деле, для вас тоже есть много причин, но не во всех случаях и проектах нужно машинное обучение. Но представьте, что вы хотите, чтобы ваше мобильное приложение знало объект или звук. Прежде чем тренировать свою модель, вы должны знать две основные вещи. Во-первых, подготовьте нужное количество данных. Во-вторых, подготовьте данные надлежащего качества. По сути, вам нужно помнить только 2 фактора, когда вы используете Create ML. В принципе хорошо, но если вы специалист по данным, конечно, вы будете учитывать другие вещи, такие как распределение данных, выбросы и т. д. НО, поскольку я пытаюсь говорить с точки зрения мобильного разработчика или, если быть точным, разработчика iOS, давайте будем проще, чтобы уменьшить головную боль. 🙂

если честно, модель обучения никогда не была такой легкой за всю мою жизнь. Что ж, учебная модель для меня в прошлом означает, что мне нужно очистить и обработать данные, а затем импортировать так много библиотек, таких как PyTorch и т. Д. (Раньше я кодировал с помощью Python), а затем бла-бла-бла… и история продолжается. Но Create ML попросит вас сделать только этот шаг:

  1. Откройте CreateML (откройте XCode → нажмите XCode на панели навигации → откройте инструменты разработчика → нажмите CreateML)

  1. Выберите новый документ
  2. Выберите свой шаблон для обучения, это звук? это изображение? Выбирайте то, что подходит вашему проекту. Для этого урока я выберу Sound Classifier.

3. Назовите свой проект.

4. Создайте папку, заполненную вашим набором данных, который был классифицирован.

5. Перетащите его в Данные обучения. (Просто перетащите папку VoiceDataSet в Training Data)

6. Нажмите кнопку «Поезд» в левом верхнем углу. (Поскольку у меня есть три папки: Interjection, Noise и Speak, данные обучения показывают три класса в зависимости от количества папок внутри MyDataSetFolder)

7. Готово.

Да, на этом история заканчивается. Для более подробной информации продолжайте читать, хорошо? это был всего лишь краткий урок, но я не упомянул, какие вещи вам нужно принять во внимание, чтобы сделать правильную модель. Потерпите меня, и я обещаю вам, что каждая строка, которую вы прочитаете, будет того стоить, потому что она была основана на исследованиях (и моем собственном опыте ← возможно, вам действительно не нужна эта часть)

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

Как классифицировать ваши данные

Представьте, вы хотите, чтобы ваше мобильное приложение знало междометие во время разговора. Значит, вашему приложению нужно знать, когда оно было междометием, а когда речью? Правильно? Теперь у вас есть два класса «Междометие» и «Говорить». Этого достаточно? НЕТ. Почему? Потому что реальность не похожа на ваши ожидания. Мир, в котором живет ваш пользователь, состоит не только из «Говори» и «Междометия», как вы надеетесь, так и будет! Представьте себе такой сценарий: вы внезапно заговорили с вашим соседом, который нажал на автомобильный гудок, потому что без особой причины, потому что он просто хотел вас разозлить. Затем вы использовали свою модель звукового классификатора. Куда модель выберет, чтобы поместить эти звуки автомобильного гудка вашего соседа? Говорить-класс? Междометие-класс? хм, дело в том, что модель запуталась.

Вы должны помнить, что модель все еще немая и знает только две вещи: междометие и речь. Итак, чтобы подготовить нашу модель к суровой реальности, вам понадобится еще один класс под названием «Шум» или как вы его назовете. Помните, всякий раз, когда вы тренируете модель, всегда думайте, что она тупая и ничего не знает, пока вы не скажете об этом. Итак, на данный момент у нас есть 3 класса в нашем наборе данных. Междометие, речь и шум. После того, как вы удовлетворитесь своей классификацией, следующим шагом будет сделать звук похожим на каждый класс и поместить его внутрь них. Поставьте его в количестве, которое вы считаете достаточным. Вы должны убедиться, что качество ваших звуковых данных одинаково для каждой классификации. Хорошо, для «Speak» и «Interjection» я предоставляю по 3 звуковых файла каждый (конечно, я хочу предоставить больше, но моя модель уже показывает уровень достоверности на 100%, а временные ограничения проекта заставляют меня хотеть работать так быстро, как только мог). Тем не менее, для «Шума» я решил снабдить его более чем тремя звуковыми файлами, чтобы научить модель тому, сколько шума существует на самом деле. Следует отметить, что имя вашей папки класса будет меткой, показанной моделью. Всякий раз, когда ваша модель слышит междометие, она показывает «Междометие», потому что вы называете свой класс таким образом. Итак, будьте мудры и ясны, когда вы даете имя своей папке класса внутри папки набора данных. Итак, это немного знаний о том, как классифицировать набор данных. Переходим к следующему этапу — валидации.

Тестирование вашей модели

Вы не хотите верить уровню достоверности только потому, что он говорит о 100%. Вам необходимо его подтвердить. Вы можете подтвердить это своим собственным звуком для этого случая. Просто говорю, а потом вдруг делаю междометие вроде хм или ммм. См. этикетку, которую показывает ваша модель. Это похоже на то, что вы делаете? Если да, то продолжайте экспортировать модель. После экспорта модели вы можете импортировать ее в проект вашего мобильного приложения. Способ импорта так же прост, как перетаскивание модели в ваш проект, когда она была открыта в Xcode. Вот и все. Вам не нужно делать никаких дополнительных настроек. Однако здесь начинается сложная часть, связанная с тем, как сделать так, чтобы ваше приложение могло использовать эту модель. Любопытный? Оставайтесь с нами для следующей части