Image Labeling: cos'è, metodi e come funziona

Autore: IT Sectr Pubblicato: 2026-07-19 Tempo di lettura: 9 min

Image Labeling è un compito di visione artificiale in cui una rete neurale assegna etichette a un'immagine da un insieme predefinito di classi: da semplici (gatto, cane, macchina) a specifiche (specie di pianta, modello di smartphone, scansione medica). Nello sviluppo mobile, Image Labeling viene utilizzato per l'etichettatura automatica delle foto nella galleria, la moderazione dei contenuti generati dagli utenti, la ricerca visiva dei prodotti tramite foto e le applicazioni di RA. Secondo Google ML Kit, 2025, il classificatore integrato riconosce oltre 400 categorie in 10–20 ms per fotogramma con una precisione del 91% (top-1).

Punti chiave

  • Image Labeling — assegnazione di etichette a un'immagine da un insieme predefinito di classi
  • ML Kit — oltre 400 etichette integrate, 10–20 ms, precisione top-1 del 91%
  • Core ML — classificazione nativa su iOS tramite Vision + modelli personalizzati
  • Modelli personalizzati — addestramento tramite TensorFlow, PyTorch, conversione in TFLite
  • Su dispositivo — tutti i calcoli in locale, senza inviare dati al server

Cos'è Image Labeling: basi della classificazione

Image Labeling è un sottotipo di classificazione delle immagini in cui il modello prende un'immagine come input e restituisce le probabilità per ciascuna classe del set di addestramento. A differenza del rilevamento di oggetti, Image Labeling non determina la posizione degli oggetti nell'immagine — solo la loro presenza o assenza. A differenza della segmentazione dell'immagine, non delinea il contorno dell'oggetto. Image Labeling risponde alla domanda “cosa c'è nella foto?”, non “dove e cosa c'è nella foto?”

Architettura del classificatore: un backbone CNN (MobileNet, ResNet, EfficientNet) estrae una mappa di caratteristiche dall'immagine, Global Average Pooling riduce le dimensioni spaziali e un livello completamente connesso (Dense) con attivazione Softmax produce le probabilità delle classi. MobileNetV2 è il backbone più popolare per i dispositivi mobili: 3,5M parametri, inferenza di 0,5–2 ms su Pixel 6 tramite GPU. EfficientNet-Lite è un'alternativa con un migliore rapporto precisione/parametri.

Precisione Top-1 vs Top-5: top-1 — il modello prevede correttamente la classe principale (91% con ML Kit); top-5 — la classe corretta è tra le cinque più probabili (98% con ML Kit). Per le applicazioni di produzione, utilizzare top-5 e mostrare all'utente più opzioni di etichetta. Per la moderazione dei contenuti, utilizzare top-1 con una soglia di confidenza >= 0,8 (riduce il tasso di falsi positivi del 40%).

ArchitetturaParametriLatenzaTop-1Dimensione
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

Su dispositivo vs Cloud: la classificazione sul dispositivo (ML Kit, Core ML) offre una latenza di 1–20 ms con piena privacy dei dati. L'API cloud (Google Cloud Vision, AWS Rekognition) ha una latenza di 500–2000 ms più un costo per richiesta, ma è più precisa (97–99%) grazie a modelli più grandi (ViT, CLIP). Per le applicazioni in tempo reale (fotocamera, RA), scegliere l'opzione sul dispositivo. Per scenari complessi (medicina, analisi esperta), utilizzare il cloud con fallback sul dispositivo.

ML Kit Image Labeling su Android e iOS

ML Kit Image Labeling è una libreria pronta all'uso di Google per la classificazione delle immagini sul dispositivo. Disponibile in due modalità: sul dispositivo (gratuita, oltre 400 etichette, 10–20 ms) e cloud (a pagamento, oltre 10 000 etichette, oltre 500 ms). La versione sul dispositivo utilizza MobileNetV3 con quantizzazione INT8, occupando 4 MB di spazio su disco. ML Kit rileva automaticamente l'orientamento dell'immagine e ottimizza le dimensioni prima della classificazione.

API ML Kit: InputImage (da Bitmap, media.Image, filePath) → ImageLabeler → OnSuccessListener con un elenco di ImageLabel (etichetta, confidenza, indice). La soglia di confidenza (predefinita 0,5) è la confidenza minima per restituire un'etichetta. Aumentando la soglia a 0,7 si riduce il numero di etichette per fotogramma ma si aumenta la precisione di ciascuna. Per la moderazione dei contenuti, impostare la soglia a 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 su iOS: l'API è simile ad Android, utilizzando UIImage o CMSampleBuffer. ML Kit utilizza automaticamente Core ML + ANE sui dispositivi A12+. Per iOS 16+, ML Kit Image Labeling offre una latenza di 8–15 ms su iPhone 15 Pro. Per ridurre al minimo la latenza, passare la risoluzione dell'immagine più piccola possibile (224x224 per MobileNet) — ML Kit la ridimensiona automaticamente, ma la conversione di immagini grandi aggiunge 2–5 ms di overhead.

Core ML e Vision Framework su iOS

Core ML è il framework di Apple per eseguire modelli ML sul dispositivo. In combinazione con Vision Framework (VNCoreMLRequest), Core ML consente la classificazione delle immagini con un codice minimo. Apple fornisce modelli integrati: SqueezeNet (5 MB, 80,5% top-1), ResNet50 (98 MB, 95,2%), MobileNetV2 (14 MB, 90,2%). I modelli in formato .mlmodel o .mlpackage vengono convertiti tramite coremltools da TensorFlow o PyTorch.

VNCoreMLRequest è un'API Vision che gestisce la pre-elaborazione dell'immagine (ridimensionamento, crop-to-fill, conversione dello spazio colore) e passa il risultato al modello. Vision restituisce VNClassificationObservation con identifier (nome della classe) e confidence (0..1). MaxCandidates è il numero massimo di etichette restituite (predefinito 1). Per la classificazione con selezione automatica, utilizzare VNCoreMLRequest con 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("Etichetta: \(obs.identifier), Confidenza: \(obs.confidence)")
    }
}
request.imageCropAndScaleOption = .centerCrop

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

Core ML vs ML Kit su iOS: Core ML è nativo, non richiede SDK aggiuntivi ed è meglio ottimizzato per ANE (Apple Neural Engine). ML Kit è più preciso su scene complesse grazie ai modelli di Google. Core ML supporta qualsiasi modello (convertito tramite coremltools), mentre ML Kit supporta solo i propri. Per un'implementazione rapida, utilizzare ML Kit. Per il massimo controllo del modello, utilizzare Core ML. Un approccio pratico: utilizzare entrambi i framework in un'unica app — ML Kit per le etichette standard, Core ML per quelle personalizzate.

Addestramento e integrazione di modelli personalizzati

Modelli personalizzati di Image Labeling — addestrare il proprio classificatore per un'attività specifica: riconoscimento della qualità della frutta, rilevamento di difetti su una linea di produzione, classificazione delle razze canine. Il processo include la raccolta del dataset (oltre 1000 immagini per classe), l'annotazione, l'addestramento tramite transfer learning su un MobileNetV2 o EfficientNet pre-addestrato e la conversione in TFLite / Core ML.

Transfer Learning — il metodo principale per addestrare classificatori mobili. Si prende un modello pre-addestrato su ImageNet, si congelano gli strati inferiori (backbone CNN) e si riaddestrano gli strati superiori (fine-tuning). Richiede solo 100–500 immagini per classe e impiega 1–2 ore su Google Colab (GPU). Librerie: TensorFlow Keras (Android), PyTorch + coremltools (iOS). Risultato: 95–98% di precisione sulle classi target.

kotlin
// Inferenza modello personalizzato TFLite
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 — un'alternativa: non è necessario scrivere codice per TFLite Interpreter — ML Kit carica il modello e gestisce la pre-elaborazione automaticamente. L'Image Labeler personalizzato accetta un modello TFLite con dimensione di input 224x224x3 e output score float[NUM_CLASSES]. Basta fornire il file del modello e ottenere etichette standard. ML Kit Custom Model API è consigliato se il modello corrisponde al formato TFLite. Se è necessario un controllo più preciso sull'inferenza (soglie per classe), utilizzare direttamente TFLite Interpreter.

TFLite e Core ML: confronto dei formati

TFLite (TensorFlow Lite) è il formato dei modelli di Google per dispositivi mobili e edge. Supporta la quantizzazione (FP16, INT8), che riduce le dimensioni del modello di 4 volte e aumenta la velocità di 2–3 volte con una leggera perdita di precisione (1–2%). TFLite funziona su Android tramite GPU Delegate (OpenGL/OpenCL) e su iOS tramite Core ML Delegate. TFLite Task API fornisce un'interfaccia unificata per Image Classifier, Object Detector e altre attività.

Core ML è il formato di Apple (.mlpackage — nuovo, .mlmodel — legacy). Supporta la quantizzazione (FP16) e la palettizzazione dei pesi (fino a 1/2/4/6/8 bit), raggiungendo fino all'80% di compressione del modello. Core ML utilizza ANE (Neural Engine), GPU e CPU — il sistema seleziona automaticamente il motore ottimale. Conversione da PyTorch tramite torch.onnx.export + coremltools, da TensorFlow tramite tf-keras + coremltools. iOS 18+ supporta l'addestramento sul dispositivo tramite Core ML Training API.

CaratteristicaTFLiteCore ML
Dimensione (MobileNetV2)14 MB (FP32) / 3,5 MB (INT8)14 MB (FP16) / 2,8 MB (4-bit)
Motore di inferenzaGPU / NNAPI / XNNPACKANE / GPU / CPU (auto)
QuantizzazioneFP16, INT8, DynamicRangeFP16, Palettizzazione (1-8 bit)
Prestazioni iOSCore ML Delegate (2–5 ms)ANE nativo (1–3 ms)
StrumentiTFLite Model Maker, Task APIcoremltools, Create ML

ONNX come formato intermedio: convertire i modelli in ONNX (PyTorch → ONNX, TensorFlow → ONNX) e poi in TFLite / Core ML tramite onnx2tf o onnx2coreml. ONNX è un formato unificato supportato da oltre 70 framework. Questo semplifica la pipeline: un modello addestrato → ONNX → formati nativi per entrambe le piattaforme. L'addestramento in PyTorch + conversione in ONNX → TFLite (Android) / Core ML (iOS) è la pipeline consigliata per progetti multipiattaforma.

Applicazioni di Image Labeling nelle app mobili

Etichettatura automatica delle foto — le app di galleria (Google Foto, Apple Foto) assegnano automaticamente etichette alle immagini: “spiaggia”, “tramonto”, “cane”, “cibo”. ML Kit Image Labeling elabora ogni foto della galleria in background — 1–2 secondi per 100 foto (batch). L'utente può cercare per etichette senza ordinamento manuale. Google Foto utilizza la classificazione sul dispositivo con successiva verifica sul server per scene complesse.

Moderazione dei contenuti — rilevamento automatico di immagini indesiderate nei contenuti generati dagli utenti (social network, marketplace, piattaforme UGC). ML Kit Custom Model rileva contenuti NSFW, violenza e propaganda con una precisione del 92–96%. La soglia di attivazione è confidenza 0,8. Per ridurre i falsi positivi (immagini mediche legittime), utilizzare un comitato di classificatori: Image Labeling + Object Detection + Blur Detection. La moderazione sul dispositivo è più rapida e protegge la privacy dell'utente.

Ricerca visiva di prodotti — un utente fotografa un prodotto (scarpe da ginnastica, borsa, mobile), l'app determina l'etichetta e trova prodotti simili nel catalogo. Image Labeling restringe la ricerca a una categoria, poi i descrittori di caratteristiche (vettori di caratteristiche) trovano elementi visivamente simili. Pinterest Lens, Google Lens e Amazon StyleSnap utilizzano questo approccio. La classificazione sul dispositivo fornisce risultati in 10–30 ms, la ricerca cloud in 200–500 ms.

swift
// Image Labeling con Core ML per la ricerca visiva
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)
        }
    }
}

App di RA e educative — Image Labeling classifica gli oggetti in tempo reale attraverso la fotocamera. Un utente punta il telefono verso una pianta — l'app mostra il nome, le istruzioni per la cura e il programma di irrigazione. Punta verso un pezzo meccanico — ne spiega lo scopo. Requisito: latenza < 30 ms. EfficientNet-Lite sui dispositivi di punta offre 15–25 ms. In condizioni di scarsa illuminazione, la precisione diminuisce — utilizzare una soglia di confidenza adattiva (abbassare la soglia in condizioni di scarsa illuminazione per compensare la qualità degradata dell'input).

Domande frequenti

In che modo Image Labeling differisce da Object Detection?

Image Labeling determina quali oggetti sono presenti in un'immagine ma non ne indica la posizione. Object Detection trova gli oggetti e restituisce riquadri di delimitazione per ciascuno. Image Labeling è più veloce (1–20 ms vs 20–100 ms), richiede meno dati di addestramento, ma non fornisce informazioni posizionali. Per la classificazione semplice (gatto/cane), utilizzare Image Labeling. Per il riconoscimento mirato (quanti oggetti, dove si trovano), utilizzare Object Detection.

È necessaria una connessione Internet per Image Labeling sul dispositivo?

No, ML Kit Image Labeling funziona completamente sul dispositivo. Il modello viene scaricato al primo avvio (modalità scaricata — 4 MB) e salvato localmente. I modelli Core ML sono inclusi nell'app. Il modello personalizzato TFLite fa parte dell'APK. Tutti i calcoli vengono eseguiti sul dispositivo e nessun dato viene inviato al server. Ciò garantisce la privacy dell'utente e la funzionalità offline. La classificazione cloud (Google Cloud Vision) è un'alternativa che richiede Internet e offre maggiore precisione.

Quante immagini sono necessarie per addestrare un modello personalizzato?

Per il transfer learning su MobileNetV2: minimo 50–100 immagini per classe, ottimale 300–500. Maggiore è la varietà (angoli, illuminazione, sfondo), maggiore è la precisione. Per l'addestramento da zero (senza modello pre-addestrato), sono necessarie almeno 1000 immagini per classe. Raccomandazione: iniziare con 200 immagini per classe, valutare la precisione e aggiungere dati per le classi a bassa precisione. L'aumento dei dati (rotazioni, ridimensionamento, spostamenti) aumenta il set di dati effettivo di 3–5 volte senza raccogliere nuovi dati.

Come ridurre le dimensioni di un modello TFLite per Image Labeling?

I metodi principali: quantizzazione INT8 post-addestramento — riduce le dimensioni di 4 volte con una perdita di precisione dell'1–2%; potatura (rimozione dei pesi insignificanti) — compressione fino al 50%; distillazione (un modello studente più piccolo addestrato sulle uscite di un modello insegnante più grande) — compressione fino all'80%. MobileNetV2 INT8 occupa 3,5 MB, SqueezeNet — 5 MB. La dimensione target non deve superare i 10 MB per un caricamento immediato senza indicatore di progressione.

Qual è la precisione di ML Kit Image Labeling v2?

ML Kit Image Labeling v2 raggiunge una precisione top-1 del 91% sul set di test di Google (oltre 400 classi). La precisione top-5 è del 98%. In angoli non standard e condizioni di illuminazione, la precisione può scendere al 75–85%. Per la produzione, si consiglia di utilizzare una soglia di confidenza di 0,7 per un filtraggio stabile delle previsioni di bassa qualità. Se la precisione è insufficiente, utilizzare un modello personalizzato addestrato su un set di dati specifico: 95–98% di precisione sulle classi target.

Riepilogo

  • Image Labeling — classificazione delle immagini che assegna etichette da un insieme fisso
  • ML Kit Image Labeling — oltre 400 etichette, latenza di 10–20 ms, precisione del 91% sul dispositivo
  • Core ML + Vision — approccio iOS nativo con accelerazione ANE e modelli personalizzati
  • Transfer Learning — 100–500 immagini per classe, 1–2 ore di addestramento in Google Colab
  • TFLite / Core ML — due formati principali con quantizzazione per ridurre le dimensioni
  • Su dispositivo — privacy, latenza zero, nessuna necessità di Internet
  • Applicazioni — etichettatura foto, moderazione contenuti, RA, ricerca visiva prodotti

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche