Введение

Я учусь в Apple Developer Academy @BINUS, где многому научился в программировании, дизайне и совместной работе. В Apple Developer Academy мне поставили задачу создать приложение, реализующее машинное обучение. Это был интересный опыт, потому что раньше я не знал, как внедрить машинное обучение в мобильное приложение.

Как найти наборы данных?

Главное требование перед созданием приложения машинного обучения — наличие модели машинного обучения. Модель — это файл, обученный распознаванию определенных шаблонов/алгоритмов. Из-за этого нам нужно найти набор данных файла (изображение, видео или текст) из Kaggle или Roboflow, который будет обучен с помощью CreateML, чтобы он сможет распознавать закономерности. В моем случае мне нужен набор данных игральных карт, которые уже классифицированы на основе ценности карты (например, туз пик, 10 червей и т. д.).

Как обучать наборы данных с помощью CreateML?

  1. Сначала откройте «Создать ML», а затем нажмите «Новый документ».

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

3. Введите имя проекта для вашей модели.

4. Вставьте изображения данных обучения и изображения данных тестирования. Установите итерации в зависимости от потребностей. В моем случае я использую около 7000 итераций. Оставьте размер пакета и размер сетки автоматически. Вот ссылка на набор данных, который я использовал: https://universe.roboflow.com/augmented-startups/playing-cards-ow27d/dataset/4

5. Нажмите «Старт» и позвольте модели обучиться идентифицировать предоставленные вами данные.

6. Когда тренировка будет завершена, график должен выглядеть так, как показано на рисунке ниже. В правом верхнем углу вы можете увидеть результат теста для обучения, проверки и тестирования. Данные обучения около 70% — 90% идеальны.

Как вставить модель в ваше приложение?

После того, как вы обучите свою модель, вы можете открыть меню вывода в CreateML, а затем нажать кнопку «Получить», чтобы экспортировать модель в файл с расширением «.mlmodel». Чтобы использовать модель в своем приложении, вы можете перетащить файл «.mlmodel» в менеджер проекта Xcode. Чтобы использовать модель, я создаю новый файл swift, а затем импортирую видение, как показано в фрагментах кода ниже:

import Vision
import AVFoundation
import UIKit

После этого создайте функцию setupDetector() для настройки и загрузки модели машинного обучения, как показано ниже:

    func setupDetector() {
        let modelURL = Bundle.main.url(forResource: "playingCardModel2", withExtension: "mlmodelc")
        
        do {
            let visionModel = try VNCoreMLModel(for: MLModel(contentsOf: modelURL!))
            let recognitions = VNCoreMLRequest(model: visionModel, completionHandler: detectionDidComplete)
            self.requests = [recognitions]
        } catch let error {
            print(error)
        }
    }

Что еще в приложении?

Я не только использовал фреймворк Vision для создания приложения, я также использую AVFoundation и UIKit для настройки камеры приложения. Я также использую SwiftUI для создания домашней и бортовой страницы, а затем объединяю ее с UIKit с помощью моих друзей из академии.

Чему я научился в этом проекте?

После завершения проекта я многое узнал о машинном обучении и о том, как реализовать эту технологию в своем приложении. Хотя у меня есть только 7 дней, чтобы закончить проект, мне удалось изучить и завершить проект с помощью моих друзей и наставников, даже без какого-либо опыта работы с машинным обучением и UIKit.