Image Labeling ist eine Computer-Vision-Aufgabe, bei der ein neuronales Netz einem Bild Labels aus einer vordefinierten Klasse von Kategorien zuweist: von einfachen (Katze, Hund, Auto) bis zu spezifischen (Pflanzenart, Smartphone-Modell, medizinische Aufnahme). In der mobilen Entwicklung wird Image Labeling für das automatische Taggen von Fotos in Galerien, die Moderation von Benutzerinhalten, die visuelle Produktsuche per Foto und AR-Anwendungen eingesetzt. Laut Google ML Kit, 2025 erkennt der integrierte Klassifikator mit 91% Genauigkeit (top-1) in 10–20 ms pro Frame über 400 Kategorien.
Wichtige Punkte
Image Labeling ist eine Unterart der Bildklassifikation, bei der das Modell ein Bild als Eingabe nimmt und Wahrscheinlichkeiten für jede Klasse aus dem Trainingssatz zurückgibt. Im Gegensatz zur Objekterkennung bestimmt Image Labeling nicht die Position von Objekten im Bild — nur deren Vorhandensein oder Fehlen. Im Gegensatz zur Bildsegmentierung zeichnet es keine Objektkonturen nach. Image Labeling beantwortet die Frage „Was ist auf dem Foto?“, nicht „Wo und was ist auf dem Foto?“.
Klassifikator-Architektur: Ein CNN-Backbone (MobileNet, ResNet, EfficientNet) extrahiert eine Feature-Map aus dem Bild, Global Average Pooling reduziert die räumlichen Dimensionen, und eine vollständig verbundene Schicht (Dense) mit Softmax-Aktivierung gibt Klassenwahrscheinlichkeiten aus. MobileNetV2 ist der beliebteste Backbone für mobile Geräte: 3,5M Parameter, 0,5–2 ms Inferenz auf Pixel 6 über GPU. EfficientNet-Lite ist eine Alternative mit besserem Genauigkeits/Parameter-Verhältnis.
Top-1 vs Top-5 Genauigkeit: top-1 — das Modell sagt die Hauptklasse korrekt voraus (91% bei ML Kit); top-5 — die richtige Klasse ist unter den fünf wahrscheinlichsten (98% bei ML Kit). Für Produktionsanwendungen verwenden Sie top-5 und zeigen dem Benutzer mehrere Label-Optionen. Für die Inhaltsmoderation verwenden Sie top-1 mit einem Konfidenzschwellenwert >= 0,8 (reduziert die Falsch-Positiv-Rate um 40%).
| Architektur | Parameter | Latenz | Top-1 | Größe |
|---|---|---|---|---|
| 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: Die Klassifizierung auf dem Gerät (ML Kit, Core ML) bietet eine Latenz von 1–20 ms bei vollständigem Datenschutz. Die Cloud-API (Google Cloud Vision, AWS Rekognition) hat eine Latenz von 500–2000 ms plus Kosten pro Anfrage, ist aber dank größerer Modelle (ViT, CLIP) genauer (97–99%). Für Echtzeitanwendungen (Kamera, AR) wählen Sie die Option auf dem Gerät. Für komplexe Szenarien (Medizin, Expertenanalyse) verwenden Sie die Cloud mit Fallback auf dem Gerät.
ML Kit Image Labeling ist eine gebrauchsfertige Bibliothek von Google zur Bildklassifizierung auf dem Gerät. Verfügbar in zwei Modi: auf dem Gerät (kostenlos, über 400 Labels, 10–20 ms) und Cloud (kostenpflichtig, über 10.000 Labels, über 500 ms). Die Version auf dem Gerät verwendet MobileNetV3 mit INT8-Quantisierung und belegt 4 MB Speicherplatz. ML Kit erkennt automatisch die Bildausrichtung und optimiert die Größe vor der Klassifizierung.
ML Kit API: InputImage (von Bitmap, media.Image, filePath) → ImageLabeler → OnSuccessListener mit einer Liste von ImageLabel (Label, Konfidenz, Index). Der Konfidenzschwellenwert (Standard 0,5) ist die minimale Konfidenz für die Rückgabe eines Labels. Eine Erhöhung des Schwellenwerts auf 0,7 reduziert die Anzahl der Labels pro Frame, erhöht aber die Genauigkeit jedes einzelnen. Für die Inhaltsmoderation setzen Sie den Schwellenwert auf 0,8.
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 auf iOS: Die API ähnelt Android und verwendet UIImage oder CMSampleBuffer. ML Kit nutzt automatisch Core ML + ANE auf A12+ Geräten. Für iOS 16+ bietet ML Kit Image Labeling eine Latenz von 8–15 ms auf dem iPhone 15 Pro. Um die Latenz zu minimieren, übergeben Sie die kleinstmögliche Bildauflösung (224x224 für MobileNet) — ML Kit skaliert sie automatisch, aber die Konvertierung großer Bilder fügt 2–5 ms Overhead hinzu.
Core ML ist Apples Framework zum Ausführen von ML-Modellen auf dem Gerät. In Kombination mit dem Vision Framework (VNCoreMLRequest) ermöglicht Core ML die Bildklassifizierung mit minimalem Code. Apple stellt integrierte Modelle bereit: SqueezeNet (5 MB, 80,5% top-1), ResNet50 (98 MB, 95,2%), MobileNetV2 (14 MB, 90,2%). Modelle im .mlmodel- oder .mlpackage-Format werden über coremltools aus TensorFlow oder PyTorch konvertiert.
VNCoreMLRequest ist eine Vision-API, die die Bildvorverarbeitung (Skalierung, Crop-to-Fill, Farbraumkonvertierung) übernimmt und das Ergebnis an das Modell übergibt. Vision gibt VNClassificationObservation mit identifier (Klassenname) und confidence (0..1) zurück. MaxCandidates ist die maximale Anzahl zurückgegebener Labels (Standard 1). Für die Klassifizierung mit automatischer Auswahl verwenden Sie VNCoreMLRequest mit imageCropAndScaleOption = .centerCrop.
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("Label: \(obs.identifier), Konfidenz: \(obs.confidence)")
}
}
request.imageCropAndScaleOption = .centerCrop
let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])
try handler.perform([request])
Core ML vs ML Kit auf iOS: Core ML ist nativ, erfordert keine zusätzlichen SDKs und ist besser für ANE (Apple Neural Engine) optimiert. ML Kit ist dank der Modelle von Google bei komplexen Szenen genauer. Core ML unterstützt jedes Modell (über coremltools konvertiert), während ML Kit nur seine eigenen unterstützt. Für eine schnelle Implementierung verwenden Sie ML Kit. Für maximale Modellkontrolle verwenden Sie Core ML. Ein praktischer Ansatz: Verwenden Sie beide Frameworks in einer App — ML Kit für Standard-Labels, Core ML für benutzerdefinierte.
Benutzerdefinierte Image Labeling-Modelle — Trainieren Sie Ihren eigenen Klassifikator für eine bestimmte Aufgabe: Erkennung von Fruchtqualität, Erkennung von Defekten in einer Produktionslinie, Klassifizierung von Hunderassen. Der Prozess umfasst die Datensatzerfassung (über 1000 Bilder pro Klasse), Annotation, Training durch Transfer Learning auf einem vortrainierten MobileNetV2 oder EfficientNet und Konvertierung in TFLite / Core ML.
Transfer Learning — die primäre Methode zum Training mobiler Klassifikatoren. Ein auf ImageNet vortrainiertes Modell wird genommen, die unteren Schichten (CNN-Backbone) werden eingefroren und die oberen Schichten werden neu trainiert (Feinabstimmung). Dies erfordert nur 100–500 Bilder pro Klasse und dauert 1–2 Stunden auf Google Colab (GPU). Bibliotheken: TensorFlow Keras (Android), PyTorch + coremltools (iOS). Ergebnis: 95–98% Genauigkeit auf den Zielklassen.
// TFLite benutzerdefinierte Modellinferenz
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 — eine Alternative: kein Code für TFLite Interpreter erforderlich — ML Kit lädt das Modell und übernimmt die Vorverarbeitung automatisch. Der benutzerdefinierte Image Labeler akzeptiert ein TFLite-Modell mit Eingabegröße 224x224x3 und Ausgabe score float[NUM_CLASSES]. Einfach die Modelldatei bereitstellen und Standard-Labels erhalten. ML Kit Custom Model API wird empfohlen, wenn das Modell dem TFLite-Format entspricht. Wenn eine feinere Kontrolle über die Inferenz erforderlich ist (schwellenwerte pro Klasse), verwenden Sie den TFLite Interpreter direkt.
TFLite (TensorFlow Lite) ist Googles Modellformat für mobile und Edge-Geräte. Es unterstützt Quantisierung (FP16, INT8), die die Modellgröße um das 4-fache reduziert und die Geschwindigkeit um das 2–3-fache erhöht, bei einem geringen Genauigkeitsverlust (1–2%). TFLite läuft auf Android über GPU Delegate (OpenGL/OpenCL) und auf iOS über Core ML Delegate. Die TFLite Task API bietet eine einheitliche Schnittstelle für Image Classifier, Object Detector und andere Aufgaben.
Core ML ist Apples Format (.mlpackage — neu, .mlmodel — veraltet). Es unterstützt Quantisierung (FP16) und Gewichtspalettierung (bis zu 1/2/4/6/8 Bit) und erreicht eine Modellkompression von bis zu 80%. Core ML verwendet ANE (Neural Engine), GPU und CPU — das System wählt automatisch die optimale Engine aus. Konvertierung aus PyTorch über torch.onnx.export + coremltools, aus TensorFlow über tf-keras + coremltools. iOS 18+ unterstützt Training auf dem Gerät über die Core ML Training API.
| Eigenschaft | TFLite | Core ML |
|---|---|---|
| Größe (MobileNetV2) | 14 MB (FP32) / 3,5 MB (INT8) | 14 MB (FP16) / 2,8 MB (4-Bit) |
| Inferenz-Engine | GPU / NNAPI / XNNPACK | ANE / GPU / CPU (auto) |
| Quantisierung | FP16, INT8, DynamicRange | FP16, Palettierung (1-8 Bit) |
| iOS-Leistung | Core ML Delegate (2–5 ms) | Natives ANE (1–3 ms) |
| Werkzeuge | TFLite Model Maker, Task API | coremltools, Create ML |
ONNX als Zwischenformat: Konvertieren Sie Modelle in ONNX (PyTorch → ONNX, TensorFlow → ONNX) und dann über onnx2tf oder onnx2coreml in TFLite / Core ML. ONNX ist ein einheitliches Format, das von über 70 Frameworks unterstützt wird. Dies vereinfacht die Pipeline: Ein trainiertes Modell → ONNX → native Formate für beide Plattformen. Training in PyTorch + Konvertierung in ONNX → TFLite (Android) / Core ML (iOS) ist die empfohlene Pipeline für plattformübergreifende Projekte.
Automatisches Taggen von Fotos — Galerie-Apps (Google Fotos, Apple Fotos) weisen Bildern automatisch Labels zu: „Strand“, „Sonnenuntergang“, „Hund“, „Essen“. ML Kit Image Labeling verarbeitet jedes Foto aus der Galerie im Hintergrund — 1–2 Sekunden für 100 Fotos (Stapel). Der Benutzer kann ohne manuelle Sortierung nach Labels suchen. Google Fotos verwendet die Klassifizierung auf dem Gerät mit anschließender Serververifizierung für komplexe Szenen.
Inhaltsmoderation — automatische Erkennung unerwünschter Bilder in benutzergenerierten Inhalten (soziale Netzwerke, Marktplätze, UGC-Plattformen). ML Kit Custom Model erkennt NSFW-Inhalte, Gewalt und Propaganda mit 92–96% Genauigkeit. Der Auslöseschwellenwert ist Konfidenz 0,8. Zur Reduzierung von Falsch-Positiven (legitime medizinische Bilder) verwenden Sie ein Klassifikator-Komitee: Image Labeling + Object Detection + Blur Detection. Die Moderation auf dem Gerät ist schneller und schützt die Privatsphäre der Benutzer.
Visuelle Produktsuche — ein Benutzer fotografiert ein Produkt (Turnschuhe, Tasche, Möbel), die App bestimmt das Label und findet ähnliche Produkte im Katalog. Image Labeling grenzt die Suche auf eine Kategorie ein, dann finden Merkmalsdeskriptoren (Merkmalsvektoren) visuell ähnliche Artikel. Pinterest Lens, Google Lens und Amazon StyleSnap verwenden diesen Ansatz. Die Klassifizierung auf dem Gerät liefert Ergebnisse in 10–30 ms, die Cloud-Suche in 200–500 ms.
// Image Labeling mit Core ML für die visuelle Suche
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- und Bildungs-Apps — Image Labeling klassifiziert Objekte in Echtzeit über die Kamera. Ein Benutzer hält sein Telefon auf eine Pflanze — die App zeigt Name, Pflegehinweise und Bewässerungsplan. Hält es auf ein mechanisches Teil — erklärt dessen Zweck. Anforderung: Latenz < 30 ms. EfficientNet-Lite auf Flaggschiff-Geräten liefert 15–25 ms. Bei schwachem Licht sinkt die Genauigkeit — verwenden Sie einen adaptiven Konfidenzschwellenwert (senken Sie den Schwellenwert bei schwachem Licht, um die verschlechterte Eingabequalität auszugleichen).
Häufig gestellte Fragen
Image Labeling bestimmt, welche Objekte in einem Bild vorhanden sind, gibt aber nicht deren Position an. Object Detection findet Objekte und gibt Begrenzungsrahmen für jedes zurück. Image Labeling ist schneller (1–20 ms vs 20–100 ms), erfordert weniger Trainingsdaten, liefert aber keine Positionsinformationen. Für einfache Klassifizierung (Katze/Hund) verwenden Sie Image Labeling. Für gezielte Erkennung (wie viele Objekte, wo sie sich befinden) verwenden Sie Object Detection.
Nein, ML Kit Image Labeling funktioniert vollständig auf dem Gerät. Das Modell wird beim ersten Start heruntergeladen (Download-Modus — 4 MB) und lokal gespeichert. Core ML-Modelle werden mit der App gebündelt. Das benutzerdefinierte TFLite-Modell ist Teil der APK. Alle Berechnungen werden auf dem Gerät ausgeführt und es werden keine Daten an den Server gesendet. Dies gewährleistet Benutzerdatenschutz und Offline-Funktionalität. Die Cloud-Klassifizierung (Google Cloud Vision) ist eine Alternative, die Internet erfordert und höhere Genauigkeit bietet.
Für Transfer Learning auf MobileNetV2: mindestens 50–100 Bilder pro Klasse, optimal 300–500. Je mehr Vielfalt (Winkel, Beleuchtung, Hintergrund), desto höher die Genauigkeit. Für Training von Grund auf (ohne vortrainiertes Modell) sind mindestens 1000 Bilder pro Klasse erforderlich. Empfehlung: Beginnen Sie mit 200 Bildern pro Klasse, bewerten Sie die Genauigkeit und fügen Sie Daten für Klassen mit geringer Genauigkeit hinzu. Datenerweiterung (Rotationen, Skalierung, Verschiebungen) erhöht den effektiven Datensatz um das 3–5-fache, ohne neue Daten zu sammeln.
Die wichtigsten Methoden: INT8-Quantisierung nach dem Training — reduziert die Größe um das 4-fache bei 1–2% Genauigkeitsverlust; Pruning (Entfernen unwichtiger Gewichte) — bis zu 50% Kompression; Destillation (ein kleineres Student-Modell, trainiert auf den Ausgaben eines größeren Teacher-Modells) — bis zu 80% Kompression. MobileNetV2 INT8 belegt 3,5 MB, SqueezeNet — 5 MB. Die Zielgröße beträgt nicht mehr als 10 MB für sofortiges Laden ohne Fortschrittsanzeige.
ML Kit Image Labeling v2 erreicht eine top-1 Genauigkeit von 91% auf Googles Testset (über 400 Klassen). Die top-5 Genauigkeit beträgt 98%. Bei ungewöhnlichen Winkeln und Lichtverhältnissen kann die Genauigkeit auf 75–85% sinken. Für die Produktion wird empfohlen, einen Konfidenzschwellenwert von 0,7 für eine stabile Filterung minderwertiger Vorhersagen zu verwenden. Wenn die Genauigkeit nicht ausreicht, verwenden Sie ein benutzerdefiniertes Modell, das auf einem spezifischen Datensatz trainiert wurde: 95–98% Genauigkeit auf den Zielklassen.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch