Quando scegliere Custom Vision

Custom Vision è il servizio di Azure AI per addestrare modelli di computer vision su un dominio specifico, quando i modelli prebuilt non bastano. La distinzione chiave in esame è netta: se devi riconoscere oggetti generici (persone, categorie comuni, testo via OCR, tag descrittivi, brand noti) usi il prebuilt Image Analysis di Azure AI Vision, senza addestramento. Se invece devi classificare o localizzare oggetti custom che il modello generico non conosce — un difetto su una scheda elettronica, una specie di frutto, il logo interno di un prodotto — allora addestri un modello con Custom Vision.

Custom Vision offre due tipologie di progetto, da scegliere in fase di creazione e non modificabili successivamente:

  • Image classification — assegna una o più etichette all’intera immagine, senza posizione.
  • Object detection — individua dove si trovano gli oggetti restituendo le bounding box con le relative etichette.

Classification: multiclass vs multilabel

Nel progetto di classificazione scegli il tipo:

  • Multiclass — ogni immagine appartiene a una sola classe (le probabilità sommano a 1). Scenario tipico: smistare foto in categorie mutuamente esclusive.
  • Multilabel — un’immagine può avere più tag contemporaneamente (es. una foto che contiene sia “spiaggia” sia “tramonto”). Ogni tag ha una probabilità indipendente.

Scegli inoltre un domain: General per uso generico, oppure domini ottimizzati come Food, Retail, Landmarks, e soprattutto le varianti Compact, obbligatorie se vuoi esportare il modello per l’edge.

Le due risorse: training e prediction

Punto architetturale ricorrente all’esame: Custom Vision usa due risorse separate in Azure.

  • La risorsa di Training serve a creare progetti, caricare immagini, taggare e avviare l’addestramento.
  • La risorsa di Prediction serve a eseguire l’inferenza sull’iteration pubblicata.

Puoi crearle come coppia dedicata CustomVision.Training + CustomVision.Prediction, oppure usare una risorsa multi-service Azure AI services. Ogni risorsa ha endpoint e key propri: usare la key sbagliata (training al posto di prediction) è un errore classico.

Tagging, training e valutazione

Il flusso operativo:

  1. Upload e tagging/labeling delle immagini. Nella classification assegni tag all’immagine; nell’object detection disegni le bounding box attorno a ogni istanza. Regole minime: almeno 15 immagini per tag (Microsoft ne raccomanda 50+) e dataset bilanciato — evita che una classe abbia molte più immagini delle altre.
  2. Train con Quick Training o Advanced Training (più tempo, più accuratezza).
  3. Valutazione dell’iteration tramite le metriche:
    • Precision — quanta parte delle predizioni positive è corretta (pochi falsi positivi).
    • Recall — quanta parte dei casi reali è stata individuata (pochi falsi negativi).
    • mAP (mean Average Precision) — metrica riservata all’object detection, misura la qualità complessiva di rilevamento e localizzazione. Nella classification vedi solo precision e recall.

Il probability threshold sposta il compromesso precision/recall senza riaddestrare.

Publish ed export per edge

Ogni addestramento genera un’iteration. Per usarla in produzione devi fare Publish, associandola alla risorsa di Prediction: solo così è invocabile via Prediction API o SDK. Puoi mantenere più iteration e ripubblicare quella migliore.

Se il modello è basato su un dominio Compact, puoi fare Export per l’esecuzione on-device / edge nei formati ONNX, TensorFlow / TF Lite, CoreML, Docker container o Vision AI Dev Kit. Utile per scenari offline, bassa latenza o privacy. Senza dominio Compact, l’export non è disponibile.

Trappole tipiche d’esame

  • Devi solo restituire tag descrittivi o leggere testo da immagini generiche → è Image Analysis (Azure AI Vision) prebuilt, non Custom Vision: non serve addestrare nulla.
  • Devi sapere quanti oggetti ci sono e dove si trovano nell’immagineobject detection con bounding box; una image classification non fornisce la posizione.
  • Ti chiedono la metrica di qualità di un progetto di object detectionmAP (oltre a precision/recall); la mAP non compare nei progetti di classification.
  • Vuoi eseguire il modello offline su un dispositivo / container → serve un dominio Compact + Export (ONNX/TF Lite/CoreML/Docker); un dominio standard non è esportabile.
  • L’inferenza fallisce con errore di autorizzazione dopo il training → hai usato l’endpoint/key della risorsa Training invece di Prediction, oppure non hai eseguito il Publish dell’iteration.
  • Un tag ha accuratezza pessima → di solito immagini insufficienti o sbilanciate per quel tag: aumenta e bilancia il dataset, non abbassare semplicemente il threshold.