Image Labeling: mi ez, módszerek és működési elv

Szerző: IT Sectr Megjelenés: 2026-07-19 Olvasási idő: 9 perc

Image Labeling — egy számítógépes látás feladat, amelyben a neurális hálózat egy előre meghatározott osztálykészletből címkéket rendel a képhez: az egyszerűtől (macska, kutya, autó) a specifikusig (növényfaj, okostelefon-modell, orvosi felvétel). A mobilfejlesztésben az Image Labeling a galériában lévő fényképek automatikus címkézésére, a felhasználói tartalmak moderálására, a termékek vizuális keresésére fénykép alapján és AR alkalmazásokra használatos. A Google ML Kit, 2025 szerint a beépített osztályozó 400+ kategóriát ismer fel 10–20 ms alatt képkockánként 91%-os pontossággal (top-1).

Főbb pontok

  • Image Labeling — címkék hozzárendelése a képhez egy előre meghatározott osztálykészletből
  • ML Kit — 400+ beépített címke, 10–20 ms, 91% top-1 accuracy
  • Core ML — natív osztályozás iOS-en a Vision + custom models segítségével
  • Egyedi modellek — tanítás TensorFlow, PyTorch segítségével, konvertálás TFLite-ba
  • On-device — minden számítás lokálisan, adatok szerverre küldése nélkül

Mi az Image Labeling: az osztályozás alapjai

Image Labeling — a kép osztályozás egy alkategóriája, ahol a modell fogad egy képet és valószínűségeket ad vissza a tanítókészlet minden osztályára. Az object detection-tel ellentétben az Image Labeling nem határozza meg az objektum helyzetét a képen — csak annak jelenlétét vagy hiányát. Az image segmentation-tel ellentétben nem választja el az objektum kontúrját. Az Image Labeling a “mi van a fotón?” kérdésre válaszol, nem a “hol és mi van a fotón?” kérdésre.

Az osztályozó architektúrája: CNN backbone (MobileNet, ResNet, EfficientNet) jellemzőtérképet nyer ki a képből, a Global Average Pooling összetömöríti a térbeli dimenziókat, a teljesen összekötött réteg (Dense) Softmax aktiválással kiadja az osztályvalószínűségeket. MobileNetV2 — a legnépszerűbb backbone mobil eszközökhöz: 3,5M paraméter, 0,5–2 ms következtetés Pixel 6-on GPU-n keresztül. EfficientNet-Lite — alternatíva jobb accuracy/paraméter aránnyal.

Top-1 vs Top-5 accuracy: top-1 — a modell helyesen találta ki a fő osztályt (91% ML Kit esetén); top-5 — a helyes osztály az öt legvalószínűbb között van (98% ML Kit esetén). Gyártási alkalmazásokhoz használjon top-5-öt és mutasson több címkeváltozatot a felhasználónak. Tartalom moderálásához — top-1 confidence >= 0,8 küszöbbel (40%-kal csökkenti a false positive arányt).

ArchitektúraParaméterekLatenciaTop-1Méret
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: az eszközön történő osztályozás (ML Kit, Core ML) 1–20 ms késleltetést biztosít teljes adatvédelemmel. Cloud API (Google Cloud Vision, AWS Rekognition) — 500–2000 ms késleltetés + költség kérésenként, de pontosabb (97–99%) a nagyobb modellek (ViT, CLIP) miatt. Valós idejű alkalmazásokhoz (kamera, AR) válassza az on-device-t. Összetett forgatókönyvekhez (orvosi, szakértői) — cloud on-device fallback-kel.

ML Kit Image Labeling Androidon és iOS-en

ML Kit Image Labeling — egy kész könyvtár a Google-tól képek eszközön történő osztályozásához. Két módban érhető el: on-device (ingyenes, 400+ címke, 10–20 ms) és cloud (fizetős, 10000+ címke, 500+ ms). Az on-device verzió MobileNetV3 + INT8 kvantálást használ, 4 MB helyet foglal a lemezen. Az ML Kit automatikusan meghatározza a kép tájolását és optimalizálja a méretet az osztályozás előtt.

ML Kit API: InputImage (Bitmap, media.Image, filePath) → ImageLabeler → OnSuccessListener ImageLabel listával (label, confidence, index). MillisThreshold (alapértelmezett 0,5) — minimális bizonyosság a címke visszaadásához. A küszöb 0,7-re emelése csökkenti a címkék számát képkockánként, de növeli az egyes címkék pontosságát. Tartalom moderálásához állítsa a küszöböt 0,8-ra.

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-en: Az API hasonló az Androidéhoz, UIImage vagy CMSampleBuffer használatával. Az ML Kit automatikusan használja a Core ML + ANE-t A12+ eszközökön. iOS 16+ esetén az ML Kit Image Labeling 8–15 ms késleltetést biztosít iPhone 15 Pro-n. A késleltetés minimalizálásához küldje el a képet a lehető legalacsonyabb felbontásban (224x224 MobileNet esetén) — az ML Kit magától méretez, de a nagy képek konvertálása 2–5 ms többletterhelést ad.

Core ML és Vision Framework iOS-en

Core ML — az Apple keretrendszere ML modellek eszközön történő futtatásához. A Vision Frameworkkel (VNCoreMLRequest) együtt a Core ML lehetővé teszi a képek osztályozását minimális kóddal. Az Apple beépített modelleket biztosít: SqueezeNet (5 MB, 80,5% top-1), ResNet50 (98 MB, 95,2%), MobileNetV2 (14 MB, 90,2%). A .mlmodel vagy .mlpackage formátumú modellek a coremltools segítségével konvertálhatók TensorFlow-ból, PyTorch-ból.

VNCoreMLRequest — Vision API, amely átveszi a kép előfeldolgozását (méretezés, crop-to-fill, színtér-konverzió) és továbbítja az eredményt a modellnek. A Vision VNClassificationObservation-t ad vissza identifier (osztály neve) és confidence (0..1) értékekkel. MaxCandidates — a visszaadott címkék maximális száma (alapértelmezett 1). Automatikus kiválasztású osztályozáshoz használjon VNCoreMLRequest-t imageCropAndScaleOption = .centerCrop beállítással.

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 egyedi modell következtetés")
    }
}
request.imageCropAndScaleOption = .centerCrop

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

Core ML vs ML Kit iOS-en: Core ML — natív, nem igényel további SDK-kat, jobban optimalizált az ANE (Apple neurális motor) számára. ML Kit — pontosabb összetett jeleneteken a Google modelljeinek köszönhetően. A Core ML bármilyen modellt támogat (coremltools segítségével konvertálva), az ML Kit — csak a sajátjait. Gyors implementációhoz — ML Kit. Maximális modellkontrollhoz — Core ML. Gyakorlati választás: mindkét keretrendszer egy alkalmazásban — ML Kit a szabványos címkékhez, Core ML az egyedi címkékhez.

Egyedi modellek tanítása és integrációja

Egyedi Image Labeling modellek — saját osztályozó tanítása specifikus feladatra: gyümölcsminőség felismerése, hibák észlelése a gyártósoron, kutyafajták osztályozása. A folyamat magában foglalja az adatkészlet gyűjtését (1000+ kép osztályonként), annotálást, tanítást transfer learning segítségével előre betanított MobileNetV2 vagy EfficientNet modellen, és konvertálást TFLite / Core ML formátumba.

Transfer Learning — a mobil osztályozók tanításának fő módszere. Egy ImageNet-en előre betanított modellt veszünk, az alsó rétegeket (CNN backbone) lefagyasztjuk, a felső rétegeket (Fine-tuning) újratanítjuk. Ez csak 100–500 képet igényel osztályonként és 1–2 órát vesz igénybe a Google Colab-on (GPU). Könyvtárak: TensorFlow Keras (Android), PyTorch + coremltools (iOS). Eredmény: 95–98% accuracy a célosztályokon.

kotlin
// Image Labeling Core ML-lel vizuális kereséshez
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 — alternatíva: nem kell kódot írni a TFLite Interpreter-hez — az ML Kit maga tölti be a modellt és kezeli az előfeldolgozást. A Custom Image Labeler elfogad egy TFLite modellt 224x224x3 bemeneti mérettel és score float[NUM_CLASSES] kimenettel. Elég átadni a modellfájlt és megkapni a szabványos címkéket. Az ML Kit Custom Model API ajánlott, ha a modell megfelel a TFLite formátumnak. Ha finomabb kontroll szükséges a következtetés felett (küszöbök, threshold per class) — használja közvetlenül a TFLite Interpreter-t.

TFLite és Core ML: formátumok összehasonlítása

TFLite (TensorFlow Lite) — a Google modellformátuma mobil és edge eszközökhöz. Támogatja a kvantálást (FP16, INT8), ami 4-szeresére csökkenti a modell méretét és 2–3x-re növeli a sebességet kis pontosságvesztés (1–2%) árán. A TFLite Androidon GPU Delegate (OpenGL/OpenCL) segítségével, iOS-en — Core ML Delegate segítségével működik. A TFLite Task API egységes interfészt biztosít az Image Classifier, Object Detector és más feladatok számára.

Core ML — az Apple formátuma (.mlpackage — új, .mlmodel — régi). Támogatja a kvantálást (FP16), súlypalettizálást (weight palettization 1/2/4/6/8 bitig), ami akár 80%-os modelltömörítést eredményez. A Core ML ANE-t (Neural Engine), GPU-t és CPU-t használ — a rendszer automatikusan kiválasztja az optimális motort. Konvertálás PyTorch-ból torch.onnx.export + coremltools segítségével, TensorFlow-ból — tf-keras + coremltools segítségével. iOS 18+ támogatja az eszközön történő tanítást a Core ML Training API-n keresztül.

JellemzőTFLiteCore ML
Méret (MobileNetV2)14 MB (FP32) / 3,5 MB (INT8)14 MB (FP16) / 2,8 MB (4-bit)
Következtetési motorGPU / NNAPI / XNNPACKANE / GPU / CPU (auto)
KvantálásFP16, INT8, DynamicRangeFP16, Palettization (1-8 bit)
iOS teljesítményCore ML Delegate (2–5 ms)Natív ANE (1–3 ms)
EszközökTFLite Model Maker, Task APIcoremltools, Create ML

ONNX köztes formátumként: konvertálja a modelleket ONNX formátumba (PyTorch → ONNX, TensorFlow → ONNX), majd onnx2tf vagy onnx2coreml segítségével TFLite / Core ML formátumba. Az ONNX egy egységes formátum, amelyet 70+ keretrendszer támogat. Ez leegyszerűsíti a pipeline-t: egy betanított modell → ONNX → natív formátumok mindkét platformhoz. Tanítás PyTorch-ban + konvertálás ONNX-ba → TFLite (Android) / Core ML (iOS) — ajánlott pipeline platformok közötti projektekhez.

Image Labeling alkalmazása appokban

Fotók automatikus címkézése — galéria alkalmazások (Google Photos, Apple Photos) automatikusan címkéket rendelnek a képekhez: “strand”, “naplemente”, “kutya”, “étel”. Az ML Kit Image Labeling a háttérben dolgozza fel a galéria minden fotóját — 1–2 másodperc 100 fotóra (batch). A felhasználó kézi rendezés nélkül kap címkék szerinti keresést. A Google Photos eszközön történő osztályozást használ későbbi szerver-ellenőrzéssel összetett jelenetek esetén.

Tartalom moderálása — nemkívánatos képek automatikus észlelése a felhasználói tartalomban (közösségi média, piacterek, UGC platformok). Az ML Kit Custom Model NSFW tartalmat, erőszakot, propagandát észlel 92–96%-os pontossággal. Aktiválási küszöb — confidence 0,8. A false positive (jogszerű orvosi képek) csökkentéséhez használjon osztályozó bizottságot: Image Labeling + Object Detection + Blur Detection. Az eszközön történő moderálás gyorsabb és védi a felhasználók magánéletét.

Termékek vizuális keresése — a felhasználó lefotóz egy terméket (cipő, táska, bútor), az alkalmazás meghatározza a címkét és hasonló termékeket talál a katalógusban. Az Image Labeling szűkíti a keresést egy kategóriára, majd a jellemződeszkriptorok (feature vectors) vizuálisan hasonló példányokat találnak. A Pinterest Lens, Google Lens, Amazon StyleSnap ezt a megközelítést használja. Az eszközön történő osztályozás 10–30 ms alatt ad eredményt, a cloud — termékadatbázis-keresés 200–500 ms alatt.

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 és oktatási alkalmazások — az Image Labeling valós időben osztályozza az objektumokat a kamerán keresztül. A felhasználó a telefonját egy növényre irányítja — az alkalmazás megjeleníti a nevet, gondozást, öntözést. Egy mechanizmus alkatrészére irányítja — elmagyarázza a célt. Követelmény: latencia < 30 ms. Az EfficientNet-Lite flagship eszközökön 15–25 ms-ot biztosít. Gyenge fényviszonyok mellett a pontosság csökken — használjon automatikus confidence küszöböt (csökkentse a küszöböt gyenge fénynél a bemeneti minőség romlásának kompenzálásához).

Gyakran ismételt kérdések

Miben különbözik az Image Labeling az Object Detection-től?

Image Labeling meghatározza, hogy milyen objektumok vannak a képen, de nem jelzi azok helyét. Object Detection — megtalálja az objektumokat és visszaadja mindegyik bounding box-át. Az Image Labeling gyorsabb (1–20 ms vs 20–100 ms), kevesebb tanítási adatot igényel, de nem ad pozíciós információt. Egyszerű osztályozáshoz (macska/kutya) — Image Labeling. Pontos felismeréshez (hány objektum, hol található) — Object Detection.

Szükséges internet az Image Labeling-hez az eszközön?

Nem, az ML Kit Image Labeling teljes mértékben az eszközön működik. A modell az első indításkor töltődik be (letöltött mód — 4 MB) és lokálisan tárolódik. A Core ML modellek az alkalmazással együtt töltődnek be. A TFLite Custom Model — az APK része. Minden számítás az eszközön történik, az adatok nem kerülnek a szerverre. Ez garantálja a felhasználó magánéletének védelmét és internet nélküli működést. Cloud osztályozás (Google Cloud Vision) — alternatív megoldás internettel és nagyobb pontossággal.

Hány kép szükséges egy egyedi modell tanításához?

Transfer learning esetén MobileNetV2-n: minimum 50–100 kép osztályonként, optimálisan 300–500. Minél nagyobb a változatosság (szögek, megvilágítás, háttér), annál nagyobb a pontosság. Nulláról történő tanításhoz (előre betanított modell nélkül) minimum 1000 kép szükséges osztályonként. Javaslat: kezdje 200 képpel osztályonként, értékelje az accuracy-t, adjon hozzá adatot az alacsony pontosságú osztályokhoz. A Data augmentation (forgatás, méretezés, eltolás) 3–5x-re növeli a hatékony adatkészletet új adatok gyűjtése nélkül.

Hogyan csökkenthető a TFLite modell mérete Image Labelinghez?

A fő módszerek: INT8 kvantálás tanítás után (post-training quantization) — 4x méretcsökkentés 1–2% accuracy veszteséggel; pruning (kevésbé jelentős súlyok eldobása) — akár 50% tömörítés; distillation (kisebb tanulómodell, amely egy nagy tanítómodell kimenetein tanul) — akár 80% tömörítés. A MobileNetV2 INT8 3,5 MB-ot, a SqueezeNet 5 MB-ot foglal. Célméret — legfeljebb 10 MB az azonnali betöltéshez folyamatjelző nélkül.

Mennyi az ML Kit Image Labeling v2 pontossága?

Az ML Kit Image Labeling v2 top-1 accuracy 91%-ot mutat a Google tesztkészleten (400+ osztály). Top-5 accuracy — 98%. Nem szabványos szögek és megvilágítási körülmények esetén a pontosság 75–85%-ra csökkenhet. Gyártáshoz 0,7-es confidence küszöb használata ajánlott az alacsony minőségű előrejelzések stabil szűréséhez. Ha a pontosság nem elegendő — használjon egyedi modellt, amely specifikus adatkészleten lett tanítva: 95–98% accuracy a célosztályokon.

Összefoglalás

  • Image Labeling — képek osztályozása címkék hozzárendelésével egy rögzített készletből
  • ML Kit Image Labeling — 400+ címke, 10–20 ms latencia, 91% accuracy eszközön
  • Core ML + Vision — natív iOS megközelítés ANE gyorsítással és egyedi modellekkel
  • Transfer Learning — 100–500 kép osztályonként, 1–2 óra tanítás Google Colab-ban
  • TFLite / Core ML — két fő formátum kvantálással a méret csökkentésére
  • On-device — magánélet, nulla latencia, internet nélkül
  • Alkalmazások — fotócímkézés, tartalom moderálás, AR, termékek vizuális keresése

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is