Image Labeling: що це, методи та принцип роботи

Автор: IT Sectr Опубліковано: 2026-07-19 Час читання: 9 хв

Image Labeling — це задача комп'ютерного зору, в якій нейромережа присвоює зображенню мітки з попередньо визначеного набору класів: від простих (кіт, собака, машина) до специфічних (вид рослини, модель смартфона, медичний знімок). У мобільній розробці Image Labeling застосовується для авто-тегування фотографій у галереї, модерації користувацького контенту, візуального пошуку товарів за фото та AR-додатків. За даними Google ML Kit, 2025, вбудований класифікатор розпізнає 400+ категорій за 10–20 мс на кадр з точністю 91% (top-1).

Головне

  • Image Labeling — присвоєння міток зображенню з попередньо визначеного набору класів
  • ML Kit — 400+ вбудованих міток, 10–20 мс, 91% top-1 accuracy
  • Core ML — нативна класифікація на iOS через Vision + custom models
  • Custom моделі — навчання через TensorFlow, PyTorch, конвертація в TFLite
  • On-device — всі обчислення локально, без відправлення даних на сервер

Що таке Image Labeling: основи класифікації

Image Labeling — підвид класифікації зображень, де модель приймає на вхід зображення і повертає ймовірності для кожного класу з навчальної вибірки. На відміну від object detection, Image Labeling не визначає положення об'єкта на зображенні — тільки його наявність або відсутність. На відміну від image segmentation, не виділяє контур об'єкта. Image Labeling вирішує задачу «що на фото?», а не «де і що на фото?».

Архітектура класифікатора: CNN backbone (MobileNet, ResNet, EfficientNet) витягує feature map із зображення, Global Average Pooling згортає просторові розмірності, повнозв'язний шар (Dense) з Softmax активацією видає ймовірності класів. MobileNetV2 — найпопулярніший backbone для мобільних пристроїв: 3.5M параметрів, 0.5–2 ms inference на Pixel 6 через GPU. EfficientNet-Lite — альтернатива з кращим accuracy/параметри ratio.

Top-1 vs Top-5 accuracy: top-1 — модель правильно вгадала основний клас (91% у ML Kit); top-5 — правильний клас входить у п'ятірку найбільш імовірних (98% у ML Kit). Для production-додатків використовуйте top-5 і показуйте користувачеві кілька варіантів міток. Для модерації контенту — top-1 з порогом confidence >= 0.8 (знижує false positive rate на 40%).

АрхітектураПараметриLatencyTop-1Розмір
MobileNetV23.5M0.5–2 ms90.2%14 MB
MobileNetV32.5M0.3–1.5 ms91.5%10 MB
EfficientNet-Lite04.7M1–3 ms92.3%18 MB
ResNet-5025.6M10–30 ms95.2%98 MB

On-device vs Cloud: on-device класифікація (ML Kit, Core ML) дає latency 1–20 ms з повною приватністю даних. Cloud API (Google Cloud Vision, AWS Rekognition) — latency 500–2000 ms + вартість за запит, але точніше (97–99%) за рахунок великих моделей (ViT, CLIP). Для real-time додатків (камера, AR) вибирайте on-device. Для складних сценаріїв (медицина, експертиза) — cloud з fallback на on-device.

ML Kit Image Labeling на Android та iOS

ML Kit Image Labeling — готова бібліотека від Google для класифікації зображень на пристрої. Доступна у двох режимах: on-device (безкоштовно, 400+ міток, 10–20 мс) та cloud (платно, 10000+ міток, 500+ мс). On-device версія використовує MobileNetV3 + INT8 квантування, займає 4 MB на диску. ML Kit автоматично визначає орієнтацію зображення та оптимізує розмір перед класифікацією.

API ML Kit: InputImage (з Bitmap, media.Image, filePath) → ImageLabeler → OnSuccessListener зі списком ImageLabel (label, confidence, index). Поріг впевненості (за замовчуванням 0.5) — мінімальна впевненість для повернення мітки. Підвищення порогу до 0.7 зменшує кількість міток на кадр, але підвищує точність кожної. Для модерації контенту встановіть поріг 0.8.

kotlin
val labeler = ImageLabeling.getClient(
    ImageLabelerOptions.DEFAULT_OPTIONS
)

labeler.process(inputImage)
    .addOnSuccessListener { labels ->
        labels
            .filter { it.confidence >= 0.7f }
            .forEach { label ->
                log("Label: ${label.label}")
                log("Confidence: ${label.confidence}")
            }
    }
    .addOnFailureListener { error -> handleError(error) }

ML Kit на iOS: API аналогічний Android, використовує UIImage або CMSampleBuffer. ML Kit автоматично використовує Core ML + ANE на пристроях A12+. Для iOS 16+ ML Kit Image Labeling дає 8–15 мс latency на iPhone 15 Pro. Для мінімізації затримки передавайте зображення мінімально можливого розрішення (224x224 для MobileNet) — ML Kit сам масштабує, але конвертація великих зображень додає 2–5 мс overhead.

Core ML та Vision Framework на iOS

Core ML — фреймворк Apple для запуску ML-моделей на пристрої. У парі з Vision Framework (VNCoreMLRequest) Core ML дозволяє класифікувати зображення з мінімальним кодом. Apple надає вбудовані моделі: SqueezeNet (5 MB, 80.5% top-1), ResNet50 (98 MB, 95.2%), MobileNetV2 (14 MB, 90.2%). Моделі у форматі .mlmodel або .mlpackage конвертуються через coremltools з TensorFlow, PyTorch.

VNCoreMLRequest — Vision API, який бере на себе попередню обробку зображення (масштабування, crop-to-fill, color space conversion) і передає результат моделі. Vision повертає VNClassificationObservation з identifier (назва класу) та confidence (0..1). MaxCandidates — максимальна кількість міток, що повертаються (за замовчуванням 1). Для класифікації з автопідбором використовуйте VNCoreMLRequest з imageCropAndScaleOption = .centerCrop.

swift
guard let model = try? VNCoreMLModel(for: MobileNetV2().model) else { return }
let request = VNCoreMLRequest(model: model) { request, _ in
    guard let results = request.results as? [VNClassificationObservation] else { return }
    results.prefix(5).forEach { obs in
        print("Мітка: \(obs.identifier), Впевненість: \(obs.confidence)")
    }
}
request.imageCropAndScaleOption = .centerCrop

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

Core ML vs ML Kit на iOS: Core ML — нативний, не потребує додаткових SDK, краще оптимізований під ANE (нейронний движок Apple). ML Kit — точніший на складних сценах завдяки моделям Google. Core ML підтримує будь-які моделі (конвертовані через coremltools), ML Kit — тільки свої. Для швидкості впровадження — ML Kit. Для максимального контролю над моделлю — Core ML. Практичний вибір: обидва фреймворки в одному додатку — ML Kit для стандартних міток, Core ML для кастомних.

Навчання та інтеграція кастомних моделей

Кастомні моделі Image Labeling — навчання власного класифікатора під специфічну задачу: розпізнавання сортності фруктів, визначення дефектів на конвеєрі, класифікація порід собак. Процес включає збір датасету (1000+ зображень на клас), розмітку, навчання трансферним навчанням (transfer learning) на попередньо навченій MobileNetV2 або EfficientNet, та конвертацію в TFLite / Core ML.

Transfer Learning — основний метод навчання мобільних класифікаторів. Береться попередньо навчена на ImageNet модель, заморожуються нижні шари (CNN backbone), перенавчаються верхні шари (Fine-tuning). Це потребує всього 100–500 зображень на клас і займає 1–2 години на Google Colab (GPU). Бібліотеки: TensorFlow Keras (Android), PyTorch + coremltools (iOS). Результат: 95–98% accuracy на цільових класах.

kotlin
// Inference кастомної моделі TFLite
val interpreter = Interpreter(loadModelFile(context))
val inputImage = TensorImage.fromBitmap(bitmap)
    .apply { load(Bitmap.createScaledBitmap(bitmap, 224, 224, true)) }

val output = Array(1) { FloatArray(NUM_CLASSES) }
interpreter.run(inputImage.tensorBuffer, output)

val probabilities = TensorLabel.mapIndexToLabels(output[0])
val topClass = probabilities.maxByOrNull { it.value }

ML Kit Custom Model API — альтернатива: не потрібно писати код для TFLite Interpreter — ML Kit сам завантажує модель та обробляє попередню обробку. Custom Image Labeler приймає TFLite модель з входом size 224x224x3 та виходом score float[NUM_CLASSES]. Достатньо передати моделі файл і отримати стандартні мітки. ML Kit Custom Model API рекомендований, якщо модель відповідає формату TFLite. Якщо потрібен більш тонкий контроль над inference (пороги per class) — використовуйте TFLite Interpreter безпосередньо.

TFLite та Core ML: порівняння форматів

TFLite (TensorFlow Lite) — формат моделей Google для мобільних та edge-пристроїв. Підтримує квантування (FP16, INT8), яке зменшує розмір моделі в 4 рази та збільшує швидкість в 2–3x за рахунок невеликої втрати точності (1–2%). TFLite працює на Android через GPU Delegate (OpenGL/OpenCL), на iOS — через Core ML Delegate. TFLite Task API надає уніфікований інтерфейс для Image Classifier, Object Detector та інших задач.

Core ML — формат Apple (.mlpackage — новий, .mlmodel — старий). Підтримує квантування (FP16), палітровку ваг (weight palettization до 1/2/4/6/8 біт), що дає стиснення моделі до 80%. Core ML використовує ANE (Neural Engine), GPU та CPU — система автоматично вибирає оптимальний движок. Конвертація з PyTorch через torch.onnx.export + coremltools, з TensorFlow — через tf-keras + coremltools. iOS 18+ підтримує навчання на пристрої через Core ML Training API.

ХарактеристикаTFLiteCore ML
Розмір (MobileNetV2)14 MB (FP32) / 3.5 MB (INT8)14 MB (FP16) / 2.8 MB (4-bit)
Inference EngineGPU / NNAPI / XNNPACKANE / GPU / CPU (auto)
КвантуванняFP16, INT8, DynamicRangeFP16, Палітровка (1-8 bit)
iOS PerformanceCore ML Delegate (2–5 ms)Native ANE (1–3 ms)
ІнструментиTFLite Model Maker, Task APIcoremltools, Create ML

ONNX як проміжний формат: конвертуйте моделі в ONNX (PyTorch → ONNX, TensorFlow → ONNX) і потім в TFLite / Core ML через onnx2tf або onnx2coreml. ONNX — єдиний формат, підтримуваний 70+ фреймворками. Це спрощує пайплайн: одна навчена модель → ONNX → нативні формати для обох платформ. Навчання в PyTorch + конвертація в ONNX → TFLite (Android) / Core ML (iOS) — рекомендований пайплайн для крос-платформенних проектів.

Застосування Image Labeling у додатках

Авто-тегування фотографій — галерейні додатки (Google Фото, Apple Photos) автоматично присвоюють мітки зображенням: «пляж», «захід сонця», «собака», «їжа». ML Kit Image Labeling обробляє кожне фото з галереї у фоні — 1–2 секунди на 100 фото (batch). Користувач отримує пошук за мітками без ручного сортування. Google Фото використовує on-device класифікацію з подальшою серверною верифікацією для складних сцен.

Модерація контенту — автоматичне визначення небажаних зображень у користувацькому контенті (соцмережі, маркетплейси, UGC-платформи). ML Kit Custom Model детектує NSFW-контент, насильство, пропаганду з точністю 92–96%. Поріг спрацьовування — confidence 0.8. Для зниження false positives (легальні медичні зображення) використовуйте комітет класифікаторів: Image Labeling + Object Detection + Blur Detection. On-device модерація швидша та захищає приватність користувачів.

Візуальний пошук товарів — користувач фотографує товар (кросівки, сумка, меблі), додаток визначає мітку та знаходить схожі товари в каталозі. Image Labeling звужує пошук до категорії, потім дескриптори ознак (feature vectors) знаходять візуально схожі екземпляри. Pinterest Lens, Google Lens, Amazon StyleSnap використовують цей підхід. On-device класифікація дає результат за 10–30 мс, cloud — пошук по базі товарів за 200–500 мс.

swift
// Image Labeling з Core ML для візуального пошуку
let request = VNCoreMLRequest(model: productClassifier) { req, _ in
    guard let result = req.results?.first as? VNClassificationObservation,
          result.confidence > 0.6 else { return }
    SearchService.findSimilarProducts(
        category: result.identifier,
        image: capturedPhoto,
        limit: 10
    ) { products in
        DispatchQueue.main.async {
            self.showResults(products)
        }
    }
}

AR та освітні додатки — Image Labeling класифікує об'єкти в реальному часі через камеру. Користувач наводить телефон на рослину — додаток показує назву, догляд, полив. Наводить на деталь механізму — підказує призначення. Вимога: latency < 30 мс. EfficientNet-Lite на флагманських пристроях дає 15–25 мс. При слабкому освітленні точність падає — використовуйте автоматичний поріг confidence (знижуйте поріг при low-light, щоб компенсувати падіння якості входу).

Часто задавані питання

Чим Image Labeling відрізняється від Object Detection?

Image Labeling визначає, які об'єкти присутні на зображенні, але не вказує їх розташування. Object Detection — знаходить об'єкти та повертає bounding box кожного. Image Labeling швидше (1–20 ms vs 20–100 ms), потребує менше даних для навчання, але не дає позиційної інформації. Для простої класифікації (кіт/собака) — Image Labeling. Для прицільного розпізнавання (скільки об'єктів, де знаходяться) — Object Detection.

Чи потрібен інтернет для Image Labeling на пристрої?

Ні, ML Kit Image Labeling працює повністю on-device. Модель завантажується при першому запуску (downloaded mode — 4 MB) та зберігається локально. Core ML моделі завантажуються разом з додатком. TFLite Custom Model — частина APK. Всі обчислення виконуються на пристрої, дані не відправляються на сервер. Це гарантує приватність користувача та роботу без інтернету. Cloud-класифікація (Google Cloud Vision) — альтернатива з інтернетом та вищою точністю.

Скільки зображень потрібно для навчання кастомної моделі?

Для transfer learning на MobileNetV2: мінімум 50–100 зображень на клас, оптимально 300–500. Чим більша варіативність (ракурси, освітлення, фон), тим вища точність. Для навчання з нуля (без попередньо навченої моделі) потрібно мінімум 1000 зображень на клас. Рекомендація: почніть з 200 зображень на клас, оцініть accuracy, додавайте дані для низькоточних класів. Data augmentation (повороти, масштаб, зсув) збільшує ефективний датасет в 3–5x без збору нових даних.

Як зменшити розмір TFLite моделі для Image Labeling?

Основні методи: INT8 квантування після навчання (post-training quantization) — зменшує розмір в 4x з втратою 1–2% accuracy; pruning (відкидання малозначущих ваг) — до 50% стиснення; distillation (менша student-модель, навчена на виходах великої teacher-моделі) — до 80% стиснення. MobileNetV2 INT8 займає 3.5 MB, SqueezeNet — 5 MB. Цільовий розмір — не більше 10 MB для моментального завантаження без індикатора прогресу.

Яка точність у ML Kit Image Labeling v2?

ML Kit Image Labeling v2 показує top-1 accuracy 91% на тестовому наборі Google (400+ класів). Top-5 accuracy — 98%. На нестандартних ракурсах та умовах освітлення точність може знижуватися до 75–85%. Для production рекомендується використовувати confidence threshold 0.7 для стабільної фільтрації низькоякісних передбачень. Якщо точність недостатня — використовуйте кастомну модель, навчену на специфічному датасеті: accuracy 95–98% на цільових класах.

Підсумки

  • Image Labeling — класифікація зображень з присвоєнням міток з фіксованого набору
  • ML Kit Image Labeling — 400+ міток, 10–20 ms latency, 91% accuracy on-device
  • Core ML + Vision — нативний iOS-підхід з ANE прискоренням та кастомними моделями
  • Transfer Learning — 100–500 зображень на клас, 1–2 години навчання в Google Colab
  • TFLite / Core ML — два основних формати з квантуванням для зменшення розміру
  • On-device — приватність, zero latency, без інтернету
  • Застосування — тегування фото, модерація контенту, AR, візуальний пошук товарів

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також