Как создать свое iOS-приложение для классификации животных в SwiftUI
Цель этой статьи — помочь разработчикам, которые впервые взаимодействуют с машинным обучением, с помощью простого руководства. Готовы начать работу с CoreML?
В этой статье я проведу вас через эти шаги:
- Создайте проект Xcode
- Импорт модели машинного обучения
- Сделайте простое представление с помощью SwiftUI
Давайте начнем!
Создайте проект Xcode
Прежде всего, я использовал Xcode для создания нового проекта Xcode.
Среди различных вариантов я выбрал приложение для iOS.
Для создания моего проекта необходимо ввести название проекта, группу и идентификатор продукта.
Импорт модели машинного обучения
Для работы с машинным обучением необходима обученная модель. Я использовал модель классификации изображений SqueezeNet. Его можно загрузить со страницы Developer Apple Core ML.
После загрузки мне нужно импортировать файл в проект Xcode.
Также можно открыть файл в Xcode, чтобы получить дополнительные сведения, такие как метка класса, распределение слоев и метаданные.
В модели также есть функция предварительного просмотра, чтобы убедиться, что модель подходит и правильно работает.
Чтобы проверить это, я вставил изображение и стал ждать результата.
Результат для 97 % — зонтик
Простой просмотр с SwiftUI
Теперь мне нужно сделать настоящее приложение. Прежде всего, мне нужно добавить несколько тестовых изображений в активы нашего проекта. Вы можете добавить нужные изображения, потому что позже мы конвертируем их в нужный формат. В этом случае я хочу создать классификатор животных, поэтому я добавляю изображения животных.
Я создал массив для хранения изображений и переменную состояния для ссылки на индекс массива.
let animals = ["tiger","flamingo", "horse"]
@State private var num_element : Int = 0
Я создал VStack с эталонным изображением, несколькими кнопками для навигации по массиву и кнопкой для классификации животных.
Импорт Core ML
Теперь мне нужно импортировать фреймворк CoreML
import CoreML
Затем добавьте новое свойство для ссылки на модель машинного обучения, которую я использую, в данном случае SqueezeNet. Мне также нужен элемент состояния, в котором будут храниться выходные данные модели ML.
let model = SqueezeNet()
@State private var classification: String = ""
Поскольку я импортировал изображения, не беспокоясь о формате и размере, я должен их преобразовать. Для этой модели мне нужно изображение CVPixelBuffer размером 227x227.
Чтобы преобразовать свое изображение, я буду использовать расширение изображения как это:
После этого я могу написать нашу функцию для идентификации животных. В первую очередь мне нужно взять изображение из ассетов. Потом конвертирую в нужный формат. Используя модель SqueezeNet, можно сделать прогноз для выбранного изображения. Результатом будет отсортированный массив от самого надежного до наименее надежного из всех возможных прогнозов. Затем я беру три первых результата и сохраняю их в переменной.
Окончательный результат:
В заключение, это метод создания простого классификатора животных с использованием машинного обучения и SwiftUI.
Весь проект доступен на моем GitHub: