Самый распространенный способ создания модели Core ML - использовать Playground. Но что, если вы хотите иметь возможность добавлять больше данных из своего приложения и переобучать свою модель? Вы не сможете этого сделать, если добавите свою модель в приложение для iOS, поэтому вам придется делать это на стороне сервера. Если вы еще не знали, вы можете писать код на стороне сервера, используя Swift, что очень круто! 😎 В этом руководстве вы увидите, как создать модель и сохранить ее на диск с помощью Perfect, серверной платформы Swift.
Шаг 1. Создайте проект Xcode
Для начала вам необходимо скачать шаблон для проекта. Откройте окно терминала, перейдите в папку, в которой вы хотите создать свой проект, и напишите следующую команду:
git clone https://github.com/PerfectlySoft/PerfectTemplate.git
Теперь у вас есть новая папка с именем «PerfectTemplate», содержащая файл Package.swift и каталог Sources. Откройте файл Package.swift и измените свойство name на имя вашего проекта.
Теперь давайте создадим xcodeproj. В том же окне терминала перейдите в новую папку «PerfectTemplate» и добавьте следующую команду:
swift package generate-xcodeproj
Теперь у вас есть проект, который можно открыть с помощью Xcode.
Шаг 2. Подготовьте данные
Вам понадобятся два набора данных: данные обучения и данные оценки. В учебной папке должно быть 80% фотографий и 20% оценок. В обеих папках данные должны быть структурированы по папкам, каждая из которых содержит изображения того, что вы хотите, чтобы ваша модель могла распознать. Например, если вы хотите идентифицировать фрукты, вам понадобится вложенная папка с именем apple как в обучающей, так и в оценочной папках, в которой у вас будет несколько разных изображений яблок. Другой, названный бананом, должен следовать той же логике, и так далее. У вас должно быть не менее 10 изображений каждой категории в папке обучения.
Шаг 3. Создайте и обучите модель
Откройте файл main.swift из вашего проекта и импортируйте CreateML и Foundation.
import CreateML import Foundation
Теперь мы собираемся создать новую функцию, которая будет содержать всю логику создания, обучения и сохранения модели. У него будет два параметра: запрос и ответ. Сначала мы создадим MLImageClassifier, у которого будет путь к папке с обучением и некоторые параметры:
- maxIterations: максимальное количество итераций, используемых во время обучения.
- augmentationOptions: необязательный параметр, который может позволить нам умножать наши изображения, чтобы иметь больший набор данных; может быть установлена любая комбинация следующих значений: размытие, отражение, экспозиция, шум, поворот, кадрирование; использование этих параметров значительно увеличит время обучения, поэтому в этом руководстве мы не будем его использовать.
После того, как у нас будет классификатор, мы оценим его производительность, используя подготовленные нами ранее оценочные данные. Если результат неудовлетворительный, мы можем переобучить модель, используя другие параметры.
Затем модель будет сохранена на диск, и в качестве тела ответа будет установлено ответное сообщение.
Мы также должны добавить маршрут, который будет вызывать этот метод.
routes.add(method: .get, uri: "/trainModel", handler: createModelHandler)
Теперь вы можете запустить проект на Мой Mac и протестировать добавленный нами новый маршрут. В браузере перейдите по следующему пути http: // localhost: 8181 / trainModel и дождитесь обучения модели. Вы можете следить за прогрессом в окне отладчика.
Вы можете создавать и повторно обучать модель сколько угодно раз на стороне сервера с помощью CreateML. Вы можете получить доступ ко всему коду на Github. Надеюсь, эта статья была полезной и легкой для понимания 😊. Если у вас есть какие-либо вопросы, не стесняйтесь оставлять мне комментарии ниже! Спасибо!
Zipper Studios - это группа увлеченных инженеров, помогающих стартапам и солидным компаниям создавать свои мобильные продукты. Наши клиенты - лидеры в области здоровья и фитнеса, искусственного интеллекта и машинного обучения. Мы любим общаться с единомышленниками, которые хотят внедрять инновации в мире мобильных устройств, поэтому напишите нам здесь.