Машинное обучение на Swift: библиотеки для iOS/macOS

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Машинное обучение на Swift: библиотеки для iOS/macOS

Swift — мощный и интуитивный язык от Apple, который активно используется не только для разработки приложений под iOS и macOS, но и для задач машинного обучения. Благодаря производительности, безопасности типов и прямой интеграции с фреймворками Apple, Swift становится отличным выбором для внедрения ML-моделей на устройствах. В этой статье мы рассмотрим ключевые библиотеки и инструменты для машинного обучения на Swift, которые помогут вам создавать умные приложения для экосистемы Apple.

1. Core ML — флагманский фреймворк Apple

Core ML — это основной фреймворк от Apple для интеграции моделей машинного обучения в приложения. Он поддерживает большое количество форматов моделей (MLModel, ONNX, TensorFlow, PyTorch) и оптимизирован для работы на устройствах (iPhone, iPad, Mac). Core ML автоматически использует Neural Engine, GPU и CPU для максимальной производительности.

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

import CoreML
import Vision

// Загружаем предобученную модель MobileNetV2
guard let model = try? VNCoreMLModel(for: MobileNetV2(configuration: MLModelConfiguration()).model) else {
    fatalError("Не удалось загрузить модель")
}

// Создаем запрос
let request = VNCoreMLRequest(model: model) { request, error in
    guard let results = request.results as? [VNClassificationObservation],
          let topResult = results.first else {
        print("Не удалось классифицировать")
        return
    }
    print("Объект: \(topResult.identifier) с уверенностью \(topResult.confidence)")
}

// Загружаем изображение
guard let image = UIImage(named: "cat.jpg"),
      let ciImage = CIImage(image: image) else { return }

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

2. Create ML — обучение без кода (и с кодом)

Create ML — инструмент от Apple для обучения моделей машинного обучения прямо в Xcode. Он поддерживает задачи классификации изображений, текста, табличных данных, рекомендательные системы и даже звуковые классификаторы. Модели, обученные в Create ML, автоматически экспортируются в формат .mlmodel и готовы к использованию с Core ML.

Пример: Обучение модели классификации текста

import CreateML

// Загружаем данные из CSV
let data = try MLDataTable(contentsOf: URL(fileURLWithPath: "/path/to/data.csv"))

// Разделяем на обучающую и тестовую выборки
let (trainingData, testingData) = data.randomSplit(by: 0.8, seed: 42)

// Создаем классификатор текста
let classifier = try MLTextClassifier(trainingData: trainingData, textColumn: "text", labelColumn: "label")

// Оцениваем точность
let evaluationMetrics = classifier.evaluation(on: testingData)
print("Точность: \(evaluationMetrics.classificationError)")

// Сохраняем модель
let metadata = MLModelMetadata(author: "PythonLib", shortDescription: "Классификатор отзывов", version: "1.0")
try classifier.write(to: URL(fileURLWithPath: "/path/to/SentimentClassifier.mlmodel"), metadata: metadata)

3. TensorFlow Lite (TFLite Swift) — мобильный TensorFlow

TensorFlow Lite — это облегченная версия TensorFlow для мобильных и встраиваемых устройств. Swift-интерфейс позволяет загружать и выполнять модели TFLite на iOS и macOS. TFLite поддерживает аппаратное ускорение через Metal Performance Shaders (MPS) и Core ML делегаты.

Пример: Запуск модели TFLite

import TensorFlowLite

// Загружаем модель
guard let modelPath = Bundle.main.path(forResource: "mobilenet_v1_1.0_224", ofType: "tflite") else {
    fatalError("Модель не найдена")
}

let interpreter = try Interpreter(modelPath: modelPath)
try interpreter.allocateTensors()

// Подготавливаем входные данные (например, изображение 224x224)
let inputData: Data = preprocessImage(image) // ваша функция препроцессинга
try interpreter.copy(inputData, toInputAt: 0)

// Выполняем инференс
try interpreter.invoke()

// Получаем результаты
let outputTensor = try interpreter.output(at: 0)
let probabilities = outputTensor.data.toArray(type: Float32.self)
let topIndex = probabilities.argmax()
print("Предсказанный класс: \(topIndex)")

4. Bender — нейросети на GPU

Bender — это библиотека для построения и выполнения нейронных сетей на GPU с использованием Metal Performance Shaders. Она предоставляет высокоуровневый API для создания слоев (сверточные, полносвязные, пулинг, нормализация) и оптимизирована для реального времени. Bender идеально подходит для задач компьютерного зрения и обработки видео.

Пример: Создание простой сети

import Bender

// Создаем граф сети
let network = Network(device: device)

// Добавляем слои
network.add                    

Рекомендаций