Здравствуйте! В этой короткой статье я покажу вам, как внедрить платформу Apple Core ML «MobileNetV2» в ваше приложение для iOS, чтобы создать приложение для быстрой классификации изображений.
Итак, вы уже некоторое время работаете над приложениями для iOS и думаете, что у вас все хорошо. Думаете, вы все это сделали? на самом деле фреймворк ios намного мощнее и сложнее этого. всегда есть что-то новое, что можно узнать. И в сегодняшнем уроке мы рассмотрим удивительную базовую структуру ML для создания простого приложения для классификации.
Приложение довольно простое: сначала вы загружаете изображение из галереи телефона, а затем, используя модель MoileNet V2, приложение будет предсказывать имя объекта на изображении.
Пользовательский интерфейс приложения должен выглядеть так: Я положу полный исходный код ниже, да, кстати, я не люблю раскадровки 😅
С чего начать?
как всегда Во-первых, нам нужна базовая модель ML, которая распознает изображения. Мы будем использовать одну из предварительно обученных моделей Appel. Вы можете найти полный официальный список моделей здесь, как я упоминал ранее, в этом проекте мы будем использовать MobileNet. Модель версии 2 (32 бита). Это мощная модель распознавания изображений небольшого размера, способная распознавать до 1000 категорий, таких как деревья, животные, еда, люди, транспортные средства и многое другое… великолепно
начнем с загрузки этой основной модели мл «MobileNet 2», затем просто модель мл можно перетащить прямо в Xcode:
поэтому, возвращаясь к исходному коду (нашему контроллеру представления), мы можем начать использовать модель MobileNet напрямую следующим образом:
let mobilenet = MobileNetV2()
теперь, чтобы не перейти к функции в нашем ViewController, где изображение выбирается пользователем (если вы используете один код просто здесь, где вы собираетесь передать свое изображение для обработки моделью, это может быть просто статическое изображение )
поэтому, чтобы сначала использовать нашу модель, нам нужно взять это изображение и преобразовать его в пиксельный буфер cv, чтобы его можно было использовать в функции прогнозирования модели.
пожалуйста, проверьте описание ввода в метаданных модели (CvPixelBuffer 224*244)
мы используем некоторые низкоуровневые API, о которых вам не нужно знать, поэтому я просто предоставлю функцию для этого
Хорошо, давайте воспользуемся нашим изображением: предположив, что у нас есть правильное изображение из буфера пикселей, мы можем использовать функцию прогнозирования mobilenetV2, используя результат нашего буфера изображения.
это необходимо обернуть в операторtry-catch, потому что он может выдать . после этого у нас будет прогноз, мы можем использовать метку класса, которая является категорией с наибольшей достоверностью, и мы установим ее для нашего результата метки.
Вот оно, приложение для прогнозирования с использованием машинного обучения, которое очень легко сделать благодаря мощному яблочному ядру мл.
пожалуйста, найдите полный исходный код здесь
Большое спасибо📷