Image Labeling: шта је то, методе и принцип рада

Аутор: IT Sectr Објављено: 2026-07-19 Време читања: 9 мин

Image Labeling — је задатак компјутерског вида у којем неуронска мрежа додељује слици ознаке из унапред дефинисаног скупа класа: од једноставних (мачка, пас, аутомобил) до специфичних (врста биљке, модел паметног телефона, медицински снимак). У мобилном развоју, Image Labeling се користи за аутоматско означивање фотографија у галерији, модерирање корисничког садржаја, визуелну претрагу производа по фотографији и AR апликације. Према Google ML Kit, 2025, уграђени класификатор препознаје 400+ категорија за 10–20 ms по кадру са прецизношћу од 91% (top-1).

Главно

  • Image Labeling — додељивање ознака слици из унапред дефинисаног скупа класа
  • ML Kit — 400+ уграђених ознака, 10–20 ms, 91% top-1 accuracy
  • Core ML — изворна класификација на iOS-у кроз Vision + custom models
  • Прилагођени модели — обука кроз TensorFlow, PyTorch, конверзија у TFLite
  • On-device — сва израчунавања локално, без слања података на сервер

Шта је Image Labeling: основе класификације

Image Labeling — подврста класификације слика, где модел прима слику и враћа вероватноће за сваку класу из скупа за обуку. За разлику од object detection-а, Image Labeling не одређује положај објекта на слици — само његово присуство или одсуство. За разлику од image segmentation-а, не издваја контуру објекта. Image Labeling решава питање “шта је на фотографији?”, а не “где и шта је на фотографији?”.

Архитектура класификатора: CNN backbone (MobileNet, ResNet, EfficientNet) извлачи мапу карактеристика из слике, Global Average Pooling сажима просторне димензије, потпуно повезани слој (Dense) са Softmax активацијом даје вероватноће класа. MobileNetV2 — најпопуларнији backbone за мобилне уређаје: 3.5M параметара, 0.5–2 ms закључивања на Pixel 6 преко GPU-а. EfficientNet-Lite — алтернатива са бољим односом accuracy/параметри.

Top-1 vs Top-5 accuracy: top-1 — модел је тачно погодио главну класу (91% за ML Kit); top-5 — тачна класа се налази у пет највероватнијих (98% за ML Kit). За производне апликације користите top-5 и покажите кориснику неколико варијанти ознака. За модерирање садржаја — top-1 са прагом confidence >= 0.8 (смањује стопу лажно позитивних за 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: класификација на уређају (ML Kit, Core ML) даје кашњење 1–20 ms са потпуном приватношћу података. Cloud API (Google Cloud Vision, AWS Rekognition) — кашњење 500–2000 ms + трошак по захтеву, али прецизнији (97–99%) захваљујући већим моделима (ViT, CLIP). За апликације у реалном времену (камера, AR) бирајте on-device. За сложене сценарије (медицина, експертиза) — cloud са fallback-ом на on-device.

ML Kit Image Labeling на Android-у и iOS-у

ML Kit Image Labeling — готова библиотека од Google-а за класификацију слика на уређају. Доступна у два режима: on-device (бесплатно, 400+ ознака, 10–20 ms) и cloud (платно, 10000+ ознака, 500+ ms). On-device верзија користи MobileNetV3 + INT8 квантовање, заузима 4 MB на диску. ML Kit аутоматски одређује оријентацију слике и оптимизује величину пре класификације.

ML Kit API: InputImage (из Bitmap, media.Image, filePath) → ImageLabeler → OnSuccessListener са листом ImageLabel (label, confidence, index). MillisThreshold (подразумевано 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 ms на iPhone 15 Pro. За минимално кашњење, пошаљите слику у најмањој могућој резолуцији (224x224 за MobileNet) — ML Kit сам скалира, али конверзија великих слика додаје 2–5 ms додатног оптерећења.

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, конверзију простора боја) и прослеђује резултат моделу. 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("TFLite прилагођено закључивање модела")
    }
}
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
// Image Labeling са Core ML-ом за визуелну претрагу
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 модел са улазном величином 224x224x3 и излазом score float[NUM_CLASSES]. Довољно је проследити датотеку модела и добити стандардне ознаке. ML Kit Custom Model API се препоручује ако модел одговара TFLite формату. Ако је потребна финија контрола над закључивањем (прагови, threshold 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)
Мотор закључивањаGPU / NNAPI / XNNPACKANE / GPU / CPU (auto)
КвантовањеFP16, INT8, DynamicRangeFP16, Palettization (1-8 bit)
iOS перформансеCore ML Delegate (2–5 ms)Изворни ANE (1–3 ms)
АлатиTFLite Model Maker, Task APIcoremltools, Create ML

ONNX као посредни формат: конвертујте моделе у ONNX (PyTorch → ONNX, TensorFlow → ONNX) и затим у TFLite / Core ML преко onnx2tf или onnx2coreml. ONNX — јединствени формат који подржава 70+ оквира. Ово поједностављује pipeline: један обучени модел → ONNX → изворни формати за обе платформе. Обука у PyTorch-у + конверзија у ONNX → TFLite (Android) / Core ML (iOS) — препоручени pipeline за вишeплатформске пројекте.

Примена Image Labeling-а у апликацијама

Аутоматско означавање фотографија — галеријске апликације (Google Photos, Apple Photos) аутоматски додељују ознаке сликама: “плажа”, “залазак сунца”, “пас”, “храна”. ML Kit Image Labeling обрађује сваку фотографију из галерије у позадини — 1–2 секунде за 100 фотографија (batch). Корисник добија претрагу по ознакама без ручног сортирања. Google Photos користи класификацију на уређају са накнадном серверском верификацијом за сложене сцене.

Модерирање садржаја — аутоматско откривање нежељених слика у корисничком садржају (друштвене мреже, маркетплејси, UGC платформе). ML Kit Custom Model детектује NSFW садржај, насиље, пропаганду са прецизношћу 92–96%. Праг активирања — confidence 0.8. За смањење лажно позитивних (легалне медицинске слике) користите комитет класификатора: Image Labeling + Object Detection + Blur Detection. Модерирање на уређају је брже и штити приватност корисника.

Визуелна претрага производа — корисник фотографише производ (патике, торба, намештај), апликација одређује ознаку и проналази сличне производе у каталогу. Image Labeling сужава претрагу на категорију, затим дескриптори карактеристика (feature vectors) проналазе визуелно сличне примерке. Pinterest Lens, Google Lens, Amazon StyleSnap користе овај приступ. Класификација на уређају даје резултат за 10–30 ms, cloud — претрага базе производа за 200–500 ms.

swift
// Image Labeling with Core ML for visual search
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 класификује објекте у реалном времену путем камере. Корисник усмери телефон ка биљци — апликација приказује назив, негу, заливање. Усмери ка делу механизма — објашњава намену. Захтев: кашњење < 30 ms. EfficientNet-Lite на водећим уређајима даје 15–25 ms. При слабом осветљењу прецизност опада — користите аутоматски праг confidence (смањите праг при слабом светлу да бисте компензовали пад квалитета улаза).

Често постављана питања

По чему се 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 ради потпуно на уређају. Модел се учитава при првом покретању (преузети режим — 4 MB) и чува локално. Core ML модели се учитавају заједно са апликацијом. TFLite Custom Model — део APK-а. Сва израчунавања се обављају на уређају, подаци се не шаљу на сервер. Ово гарантује приватност корисника и рад без интернета. Класификација у облаку (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 (мањи студентски модел обучен на излазима великог учитељског модела) — до 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%. За продукцију се препоручује коришћење confidence прага 0.7 за стабилно филтрирање предвиђања ниског квалитета. Ако прецизност није довољна — користите прилагођени модел, обучен на специфичном скупу података: accuracy 95–98% на циљаним класама.

Резиме

  • Image Labeling — класификација слика са додељивањем ознака из фиксног скупа
  • ML Kit Image Labeling — 400+ ознака, 10–20 ms кашњење, 91% accuracy на уређају
  • Core ML + Vision — изворни iOS приступ са ANE убрзањем и прилагођеним моделима
  • Transfer Learning — 100–500 слика по класи, 1–2 сата обуке у Google Colab-у
  • TFLite / Core ML — два главна формата са квантовањем за смањење величине
  • On-device — приватност, нулто кашњење, без интернета
  • Примена — означавање фотографија, модерирање садржаја, AR, визуелна претрага производа

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође