Классификация изображений с Core ML и MobileNetV2: руководство для разработчиков iOS и macOS

"Классификация изображений с Core ML и MobileNetV2: руководство по созданию приложения для iOS и macOS"

Классификация изображений с Core ML и MobileNetV2

Core ML - это среда машинного обучения Apple, которая позволяет разработчикам интегрировать модели машинного обучения в свои приложения iOS и macOS. Core ML поддерживает широкий спектр моделей машинного обучения, включая модели для классификации изображений, обнаружения объектов и распознавания речи.

MobileNetV2 - это модель сверточной нейронной сети (CNN), разработанная исследователями Google. MobileNetV2 специально разработан для эффективного выполнения на мобильных устройствах. Он достигает сопоставимой точности с другими моделями CNN, но при этом требует меньше вычислительных ресурсов и памяти.

В этом руководстве мы рассмотрим, как использовать Core ML и MobileNetV2 для создания приложения для классификации изображений. Мы будем использовать предобученную модель MobileNetV2, которая была обучена на наборе данных ImageNet.

Предпосылки

  • У вас есть компьютер Mac с установленной операционной системой macOS 10.13 или более поздней версии.
  • У вас установлен Xcode 10 или более поздней версии.
  • У вас есть устройство iOS с iOS 12 или более поздней версией.

Настройка проекта Xcode

  1. Откройте Xcode и создайте новый проект приложения iOS.
  2. Выберите шаблон "Single View Application".
  3. Задайте имя проекта и нажмите "Далее".
  4. Выберите устройство и целевую версию iOS.

Импорт модели Core ML

  1. Перейдите на веб-сайт Apple Core ML Model и загрузите предустановленную модель MobileNetV2.
  2. Разархивируйте загруженный ZIP-файл.
  3. Перетащите файл .mlmodel в ваш проект Xcode.

Создание модели классификации

  1. Создайте новый класс Swift со следующим кодом:
import CoreML
import Vision

class ImageClassifier {

    let model: VNCoreMLModel

    init() throws {
        let url = Bundle.main.url(forResource: "MobileNetV2", withExtension: "mlmodelc")!
        let model = try VNCoreMLModel(for: MLModel(contentsOf: url))
        self.model = model
    }

    func classifyImage(image: CIImage) -> [VNClassificationObservation] {
        let request = VNCoreMLRequest(model: model) { request, error in
            guard let results = request.results as? [VNClassificationObservation],
                error == nil else {
                    fatalError("Failed to classify image.")
            }

            return results
        }

        let handler = VNImageRequestHandler(ciImage: image, options: [:])
        try! handler.perform([request])

        return request.results as! [VNClassificationObservation]
    }
}

Этот класс загружает предобученную модель MobileNetV2 из пакета приложения и предоставляет метод classifyImage(), который классифицирует изображение с помощью модели.

Использование модели в приложении

В контроллере представления вашего приложения добавьте следующий код:

import UIKit
import CoreML
import Vision

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let image = CIImage(image: UIImage(named: "cat.jpg")!)!
        let classifier = ImageClassifier()
        let classifications = classifier.classifyImage(image: image)

        for classification in classifications {
            print("\(classification.identifier): \(classification.confidence)")
        }
    }
}

Этот код загружает изображение, создает классификатор изображений, классифицирует изображение и печатает результаты.

Запуск приложения

Запустите приложение на своем симуляторе или устройстве iOS. Вы должны увидеть вывод, подобный следующему:

cat: 0.99999994
dog: 0.000000059604644

Это указывает на то, что модель MobileNetV2 правильно классифицировала изображение как кошку с высокой уверенностью.

Заключение

В этом руководстве мы рассмотрели, как использовать Core ML и MobileNetV2 для создания приложения для классификации изображений. Мы загрузили предобученную модель MobileNetV2, создали модель классификации и использовали ее для классификации изображений. Этот пример можно использовать как основу для создания более сложных приложений для обработки изображений.

To leave a comment you need to Login / Create account