Image Labeling: wat is het, methoden en werkingsprincipe

Auteur: IT Sectr Gepubliceerd: 2026-07-19 Leestijd: 9 min

Image Labeling — is een computervisietaak waarbij een neuraal netwerk afbeeldingen labels toekent uit een vooraf gedefinieerde set klassen: van eenvoudig (kat, hond, auto) tot specifiek (plantensoort, smartphonemodel, medische opname). In mobiele ontwikkeling wordt Image Labeling gebruikt voor het automatisch taggen van foto’s in de galerij, moderatie van gebruikerscontent, visueel zoeken naar producten op foto en AR-applicaties. Volgens Google ML Kit, 2025 herkent de ingebouwde classifier 400+ categorieën in 10–20 ms per frame met een nauwkeurigheid van 91% (top-1).

Belangrijkste

  • Image Labeling — toekennen van labels aan een afbeelding uit een vooraf gedefinieerde set klassen
  • ML Kit — 400+ ingebouwde labels, 10–20 ms, 91% top-1 accuracy
  • Core ML — native classificatie op iOS via Vision + custom models
  • Aangepaste modellen — training via TensorFlow, PyTorch, conversie naar TFLite
  • On-device — alle berekeningen lokaal, zonder gegevens naar de server te sturen

Wat is Image Labeling: basis van classificatie

Image Labeling — een subcategorie van beeldclassificatie, waarbij het model een afbeelding ontvangt en kansen retourneert voor elke klasse uit de trainingsset. In tegenstelling tot object detection bepaalt Image Labeling niet de positie van het object in de afbeelding — alleen de aan- of afwezigheid ervan. In tegenstelling tot image segmentation wordt de contour van het object niet gescheiden. Image Labeling lost de vraag “wat staat er op de foto?” op, niet “waar en wat staat er op de foto?”.

Architectuur van de classifier: CNN backbone (MobileNet, ResNet, EfficientNet) extraheert een feature map uit de afbeelding, Global Average Pooling vouwt de ruimtelijke dimensies samen, een volledig verbonden laag (Dense) met Softmax-activatie levert de klassekansen. MobileNetV2 — de populairste backbone voor mobiele apparaten: 3.5M parameters, 0.5–2 ms inferentie op Pixel 6 via GPU. EfficientNet-Lite — een alternatief met een betere ratio nauwkeurigheid/parameters.

Top-1 vs Top-5 accuracy: top-1 — het model raadde de hoofdklasse correct (91% voor ML Kit); top-5 — de juiste klasse bevindt zich in de top vijf meest waarschijnlijke (98% voor ML Kit). Gebruik voor productie-applicaties top-5 en toon de gebruiker meerdere labelvarianten. Voor contentmoderatie — top-1 met een confidence-drempel >= 0.8 (vermindert het aantal fout-positieven met 40%).

ArchitectuurParametersLatencyTop-1Grootte
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: classificatie op het apparaat (ML Kit, Core ML) biedt een latentie van 1–20 ms met volledige gegevensprivacy. Cloud API (Google Cloud Vision, AWS Rekognition) — latentie 500–2000 ms + kosten per aanvraag, maar nauwkeuriger (97–99%) vanwege grotere modellen (ViT, CLIP). Kies voor real-time applicaties (camera, AR) voor on-device. Voor complexe scenario’s (medisch, expertise) — cloud met fallback naar on-device.

ML Kit Image Labeling op Android en iOS

ML Kit Image Labeling — een kant-en-klare bibliotheek van Google voor classificatie van afbeeldingen op het apparaat. Beschikbaar in twee modi: on-device (gratis, 400+ labels, 10–20 ms) en cloud (betaald, 10000+ labels, 500+ ms). De on-device versie gebruikt MobileNetV3 + INT8-kwantificatie, neemt 4 MB schijfruimte in beslag. ML Kit bepaalt automatisch de oriëntatie van de afbeelding en optimaliseert de grootte vóór classificatie.

ML Kit API: InputImage (van Bitmap, media.Image, filePath) → ImageLabeler → OnSuccessListener met een lijst van ImageLabel (label, confidence, index). MillisThreshold (standaard 0.5) — minimale zekerheid voor het retourneren van een label. Het verhogen van de drempel naar 0.7 vermindert het aantal labels per frame, maar verhoogt de nauwkeurigheid van elk label. Stel voor contentmoderatie de drempel in op 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 op iOS: API vergelijkbaar met Android, gebruikt UIImage of CMSampleBuffer. ML Kit gebruikt automatisch Core ML + ANE op A12+-apparaten. Voor iOS 16+ biedt ML Kit Image Labeling een latentie van 8–15 ms op iPhone 15 Pro. Stuur de afbeelding in de laagst mogelijke resolutie (224x224 voor MobileNet) om de latentie te minimaliseren — ML Kit schaalt zelf, maar conversie van grote afbeeldingen voegt 2–5 ms overhead toe.

Core ML en Vision Framework op iOS

Core ML — het framework van Apple voor het uitvoeren van ML-modellen op het apparaat. In combinatie met Vision Framework (VNCoreMLRequest) stelt Core ML in staat om afbeeldingen te classificeren met minimale code. Apple biedt ingebouwde modellen: SqueezeNet (5 MB, 80.5% top-1), ResNet50 (98 MB, 95.2%), MobileNetV2 (14 MB, 90.2%). Modellen in .mlmodel of .mlpackage formaat worden via coremltools geconverteerd uit TensorFlow, PyTorch.

VNCoreMLRequest — Vision API die de voorverwerking van de afbeelding (schalen, crop-to-fill, kleurruimteconversie) overneemt en het resultaat aan het model doorgeeft. Vision retourneert VNClassificationObservation met identifier (klassenaam) en confidence (0..1). MaxCandidates — het maximale aantal geretourneerde labels (standaard 1). Gebruik voor classificatie met automatische selectie VNCoreMLRequest met 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 aangepaste model inferentie")
    }
}
request.imageCropAndScaleOption = .centerCrop

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

Core ML vs ML Kit op iOS: Core ML — native, heeft geen extra SDK’s nodig, is beter geoptimaliseerd voor ANE (Apple’s neurale engine). ML Kit — nauwkeuriger op complexe scènes dankzij Google’s modellen. Core ML ondersteunt alle modellen (geconverteerd via coremltools), ML Kit — alleen zijn eigen modellen. Kies voor snelle implementatie voor ML Kit. Kies voor maximale controle over het model voor Core ML. Praktische keuze: beide frameworks in één app — ML Kit voor standaardlabels, Core ML voor aangepaste labels.

Training en integratie van aangepaste modellen

Aangepaste Image Labeling-modellen — het trainen van een eigen classifier voor een specifieke taak: herkennen van fruitkwaliteit, detecteren van defecten op de productielijn, classificeren van hondenrassen. Het proces omvat het verzamelen van een dataset (1000+ afbeeldingen per klasse), annoteren, trainen via transfer learning op een voorgetrainde MobileNetV2 of EfficientNet, en converteren naar TFLite / Core ML.

Transfer Learning — de belangrijkste methode voor het trainen van mobiele classifiers. Een op ImageNet voorgetraind model wordt genomen, de onderste lagen (CNN backbone) worden bevroren, de bovenste lagen (Fine-tuning) worden opnieuw getraind. Dit vereist slechts 100–500 afbeeldingen per klasse en duurt 1–2 uur op Google Colab (GPU). Bibliotheken: TensorFlow Keras (Android), PyTorch + coremltools (iOS). Resultaat: 95–98% accuracy op de doelklassen.

kotlin
// Image Labeling met Core ML voor visueel zoeken
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 — alternatief: geen code nodig voor TFLite Interpreter — ML Kit laadt zelf het model en beheert de voorverwerking. Custom Image Labeler accepteert een TFLite-model met invoergrootte 224x224x3 en uitvoer score float[NUM_CLASSES]. Het volstaat om het modelbestand door te geven en standaardlabels te ontvangen. ML Kit Custom Model API wordt aanbevolen als het model voldoet aan het TFLite-formaat. Als fijnere controle over de inferentie vereist is (drempels, threshold per class) — gebruik dan rechtstreeks TFLite Interpreter.

TFLite en Core ML: vergelijking van formaten

TFLite (TensorFlow Lite) — het modelformaat van Google voor mobiele en edge-apparaten. Ondersteunt kwantificatie (FP16, INT8), die de modelgrootte 4x verkleint en de snelheid 2–3x verhoogt ten koste van een klein verlies aan nauwkeurigheid (1–2%). TFLite werkt op Android via GPU Delegate (OpenGL/OpenCL), op iOS — via Core ML Delegate. TFLite Task API biedt een uniforme interface voor Image Classifier, Object Detector en andere taken.

Core ML — het formaat van Apple (.mlpackage — nieuw, .mlmodel — oud). Ondersteunt kwantificatie (FP16), gewichtpalletisatie (weight palettization tot 1/2/4/6/8 bits), wat compressie van het model tot 80% oplevert. Core ML gebruikt ANE (Neural Engine), GPU en CPU — het systeem kiest automatisch de optimale engine. Conversie van PyTorch via torch.onnx.export + coremltools, van TensorFlow — via tf-keras + coremltools. iOS 18+ ondersteunt training op het apparaat via Core ML Training API.

KenmerkTFLiteCore ML
Grootte (MobileNetV2)14 MB (FP32) / 3.5 MB (INT8)14 MB (FP16) / 2.8 MB (4-bit)
Inferentie-engineGPU / NNAPI / XNNPACKANE / GPU / CPU (auto)
KwantificatieFP16, INT8, DynamicRangeFP16, Palettization (1-8 bit)
iOS-prestatiesCore ML Delegate (2–5 ms)Native ANE (1–3 ms)
HulpmiddelenTFLite Model Maker, Task APIcoremltools, Create ML

ONNX als tussenformaat: converteer modellen naar ONNX (PyTorch → ONNX, TensorFlow → ONNX) en vervolgens naar TFLite / Core ML via onnx2tf of onnx2coreml. ONNX — een uniform formaat dat wordt ondersteund door 70+ frameworks. Dit vereenvoudigt de pipeline: één getraind model → ONNX → native formaten voor beide platforms. Training in PyTorch + conversie naar ONNX → TFLite (Android) / Core ML (iOS) — de aanbevolen pipeline voor cross-platform projecten.

Toepassing van Image Labeling in apps

Automatisch taggen van foto’s — galerij-apps (Google Photos, Apple Photos) kennen automatisch labels toe aan afbeeldingen: “strand”, “zonsondergang”, “hond”, “eten”. ML Kit Image Labeling verwerkt elke foto uit de galerij op de achtergrond — 1–2 seconden voor 100 foto’s (batch). De gebruiker krijgt zoeken op labels zonder handmatig sorteren. Google Photos gebruikt classificatie op het apparaat met latere serververificatie voor complexe scènes.

Contentmoderatie — automatische detectie van ongewenste afbeeldingen in gebruikerscontent (sociale media, marktplaatsen, UGC-platforms). ML Kit Custom Model detecteert NSFW-content, geweld, propaganda met een nauwkeurigheid van 92–96%. Activeringsdrempel — confidence 0.8. Gebruik een comité van classifiers om fout-positieven (legitieme medische afbeeldingen) te verminderen: Image Labeling + Object Detection + Blur Detection. Moderatie op het apparaat is sneller en beschermt de privacy van gebruikers.

Visueel zoeken naar producten — de gebruiker fotografeert een product (schoenen, tas, meubel), de app bepaalt het label en vindt vergelijkbare producten in de catalogus. Image Labeling beperkt het zoeken tot een categorie, waarna kenmerkdescriptoren (feature vectors) visueel vergelijkbare exemplaren vinden. Pinterest Lens, Google Lens, Amazon StyleSnap gebruiken deze aanpak. Classificatie op het apparaat geeft resultaat in 10–30 ms, cloud — zoeken in de productdatabase in 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 en educatieve apps — Image Labeling classificeert objecten in realtime via de camera. De gebruiker richt de telefoon op een plant — de app toont de naam, verzorging, water geven. Richt op een onderdeel van een mechanisme — legt het doel uit. Vereiste: latentie < 30 ms. EfficientNet-Lite op flagship-apparaten biedt 15–25 ms. Bij weinig licht neemt de nauwkeurigheid af — gebruik een automatische confidence-drempel (verlaag de drempel bij weinig licht om de verminderde invoerkwaliteit te compenseren).

Veelgestelde vragen

Waarin verschilt Image Labeling van Object Detection?

Image Labeling bepaalt welke objecten aanwezig zijn in de afbeelding, maar geeft hun locatie niet aan. Object Detection — vindt objecten en retourneert de bounding box van elk object. Image Labeling is sneller (1–20 ms vs 20–100 ms), vereist minder trainingsgegevens, maar geeft geen positie-informatie. Voor eenvoudige classificatie (kat/hond) — Image Labeling. Voor nauwkeurige herkenning (hoeveel objecten, waar ze zich bevinden) — Object Detection.

Is internet nodig voor Image Labeling op het apparaat?

Nee, ML Kit Image Labeling werkt volledig op het apparaat. Het model wordt bij de eerste start geladen (gedownloade modus — 4 MB) en lokaal opgeslagen. Core ML-modellen worden samen met de app geladen. TFLite Custom Model — onderdeel van de APK. Alle berekeningen worden op het apparaat uitgevoerd, gegevens worden niet naar de server gestuurd. Dit garandeert de privacy van de gebruiker en werking zonder internet. Cloudclassificatie (Google Cloud Vision) — een alternatief met internet en hogere nauwkeurigheid.

Hoeveel afbeeldingen zijn nodig voor het trainen van een aangepast model?

Voor transfer learning op MobileNetV2: minimaal 50–100 afbeeldingen per klasse, optimaal 300–500. Hoe groter de variatie (hoeken, belichting, achtergrond), hoe hoger de nauwkeurigheid. Voor training vanaf nul (zonder voorgetraind model) zijn minimaal 1000 afbeeldingen per klasse vereist. Aanbeveling: begin met 200 afbeeldingen per klasse, evalueer de accuracy, voeg gegevens toe voor klassen met lage nauwkeurigheid. Data augmentation (rotaties, schaal, verschuiving) vergroot de effectieve dataset 3–5x zonder nieuwe gegevens te verzamelen.

Hoe verklein ik de grootte van een TFLite-model voor Image Labeling?

De belangrijkste methoden: INT8-kwantificatie na training (post-training quantization) — verkleint de grootte 4x met een verlies van 1–2% accuracy; pruning (verwijderen van weinig significante gewichten) — tot 50% compressie; distillation (een kleiner studentenmodel getraind op de uitvoer van een groot docentenmodel) — tot 80% compressie. MobileNetV2 INT8 neemt 3.5 MB in beslag, SqueezeNet — 5 MB. Doelgrootte — niet meer dan 10 MB voor onmiddellijk laden zonder voortgangsindicator.

Wat is de nauwkeurigheid van ML Kit Image Labeling v2?

ML Kit Image Labeling v2 toont een top-1 accuracy van 91% op de Google-testset (400+ klassen). Top-5 accuracy — 98%. Bij niet-standaard hoeken en lichtomstandigheden kan de nauwkeurigheid dalen tot 75–85%. Voor productie wordt aanbevolen een confidence-drempel van 0.7 te gebruiken voor stabiele filtering van laagwaardige voorspellingen. Als de nauwkeurigheid onvoldoende is — gebruik dan een aangepast model, getraind op een specifieke dataset: accuracy 95–98% op de doelklassen.

Samenvatting

  • Image Labeling — classificatie van afbeeldingen met toekenning van labels uit een vaste set
  • ML Kit Image Labeling — 400+ labels, 10–20 ms latentie, 91% accuracy op het apparaat
  • Core ML + Vision — native iOS-aanpak met ANE-versnelling en aangepaste modellen
  • Transfer Learning — 100–500 afbeeldingen per klasse, 1–2 uur training in Google Colab
  • TFLite / Core ML — twee belangrijkste formaten met kwantificatie voor groottevermindering
  • On-device — privacy, nul latentie, zonder internet
  • Toepassingen — fototagging, contentmoderatie, AR, visueel zoeken naar producten

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook