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:
- 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.
- Train con
Quick TrainingoAdvanced Training(più tempo, più accuratezza). - 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’immagine → object detection con bounding box; una image classification non fornisce la posizione.
- Ti chiedono la metrica di qualità di un progetto di object detection → mAP (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.