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 — 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úra | Paraméterek | Latencia | Top-1 | Méret |
|---|---|---|---|---|
| MobileNetV2 | 3,5M | 0,5–2 ms | 90,2% | 14 MB |
| MobileNetV3 | 2,5M | 0,3–1,5 ms | 91,5% | 10 MB |
| EfficientNet-Lite0 | 4,7M | 1–3 ms | 92,3% | 18 MB |
| ResNet-50 | 25,6M | 10–30 ms | 95,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 — 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.
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 — 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.
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 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.
// 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 (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ő | TFLite | Core ML |
|---|---|---|
| Méret (MobileNetV2) | 14 MB (FP32) / 3,5 MB (INT8) | 14 MB (FP16) / 2,8 MB (4-bit) |
| Következtetési motor | GPU / NNAPI / XNNPACK | ANE / GPU / CPU (auto) |
| Kvantálás | FP16, INT8, DynamicRange | FP16, Palettization (1-8 bit) |
| iOS teljesítmény | Core ML Delegate (2–5 ms) | Natív ANE (1–3 ms) |
| Eszközök | TFLite Model Maker, Task API | coremltools, 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.
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.
// 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
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.
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.
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.
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.
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
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.
Olvassa el is