Strategie di raccolta e annotazione dei dati per la computer vision#
La raccolta e l'annotazione dei dati sono i due passaggi fondamentali di ogni computer vision project: raccogli immagini o video rappresentativi, quindi li etichetti affinché un modello possa imparare da essi. La qualità di questi dati determina direttamente le prestazioni del modello, motivo per cui la definizione delle classi, un'origine imparziale e un'annotazione coerente sono importanti prima di iniziare qualsiasi addestramento.
Watch: How to Build Effective Data Collection and Annotation Strategies for Computer Vision 🚀
Questa guida copre setting up classes and collecting data, what data annotation is insieme ai tipi e formati di annotazione tra cui scegliere, e efficient labeling strategies, dove ogni decisione è allineata con your project's goals.
Impostazione delle classi e raccolta dei dati#
La raccolta di immagini e video per un progetto di computer vision si riduce a tre decisioni: quante classi definire, dove reperire i dati e come mantenere il dataset libero da pregiudizi.
Scegliere le classi giuste per il tuo progetto#
Una delle prime domande quando si inizia un progetto di computer vision è quante classi includere. Devi determinare l'appartenenza alla classe, che coinvolge le diverse categorie o etichette che vuoi che il tuo modello riconosca e differenzi. Il numero di classi dovrebbe essere determinato dagli obiettivi specifici del tuo progetto.
Ad esempio, se vuoi monitorare il traffico, le tue classi potrebbero includere "auto", "camion", "autobus", "motocicletta" e "bicicletta". D'altra parte, per tracciare articoli in un negozio, le tue classi potrebbero essere "frutta", "verdura", "bevande" e "snack". Definire le classi in base agli obiettivi del tuo progetto aiuta a mantenere il tuo dataset pertinente e focalizzato.
Quando definisci le tue classi, un'altra distinzione importante da fare è se scegliere conteggi di classi grossolani o dettagliati. 'Conteggio' si riferisce al numero di classi distinte a cui sei interessato. Questa decisione influenza la granularità dei tuoi dati e la complessità del tuo modello. Ecco le considerazioni per ogni approccio:
- Conteggio di classi grossolano: Si tratta di categorie più ampie e inclusive, come "veicolo" e "non veicolo". Semplificano l'annotazione e richiedono meno risorse computazionali ma forniscono informazioni meno dettagliate, limitando potenzialmente l'efficacia del modello in scenari complessi.
- Conteggio di classi dettagliato: Più categorie con distinzioni più sottili, come "berlina", "SUV", "camioncino" e "motocicletta". Catturano informazioni più dettagliate, migliorando l'accuratezza e le prestazioni del modello. Tuttavia, sono più lunghe e laboriose da annotare e richiedono maggiori risorse computazionali.
Iniziare con classi più specifiche può essere molto utile, specialmente in progetti complessi in cui i dettagli sono importanti. Classi più specifiche ti consentono di raccogliere dati più dettagliati, ottenere approfondimenti più profondi e stabilire distinzioni più chiare tra le categorie. Non solo migliora l'accuratezza del modello, ma rende anche più facile regolare il modello in seguito se necessario, risparmiando tempo e risorse.
Fonti dei dati#
Puoi utilizzare dataset pubblici o raccogliere i tuoi dati personalizzati. I dataset pubblici come quelli su Kaggle e Google Dataset Search Engine offrono dati ben annotati e standardizzati, rendendoli ottimi punti di partenza per l'addestramento e la validazione dei modelli.
La raccolta di dati personalizzati, d'altra parte, ti consente di adattare il tuo dataset alle tue esigenze specifiche. Potresti catturare immagini e video con fotocamere o droni, estrarre immagini dal web o utilizzare dati interni esistenti della tua organizzazione. I dati personalizzati ti danno maggiore controllo sulla loro qualità e rilevanza. Combinare sia fonti di dati pubbliche che personalizzate aiuta a creare un dataset diversificato e completo.
Evitare pregiudizi nella raccolta dei dati#
Il bias si verifica quando determinati gruppi o scenari sono sottorappresentati o sovrarappresentati nel tuo dataset. Porta a un modello che funziona bene su alcuni dati ma male su altri. È fondamentale evitare bias in AI affinché il tuo modello di computer vision possa funzionare bene in una varietà di scenari.
Ecco come puoi evitare il pregiudizio durante la raccolta dei dati:
- Fonti diversificate: Raccogli dati da molte fonti per catturare prospettive e scenari diversi.
- Rappresentazione bilanciata: Includi una rappresentazione bilanciata da tutti i gruppi pertinenti. Ad esempio, considera diverse età, generi ed etnie.
- Monitoraggio continuo: Rivedi e aggiorna regolarmente il tuo dataset per identificare e affrontare eventuali pregiudizi emergenti.
- Tecniche di mitigazione del bias: Usa metodi come il sovracampionamento delle classi sottorappresentate, data augmentation e algoritmi attenti all'equità.
Seguire queste pratiche aiuta a creare un modello più robusto ed equo in grado di generalizzare bene nelle applicazioni del mondo reale.
Cos'è l'annotazione dei dati?#
L'annotazione dei dati è il processo di etichettatura dei dati per renderli utilizzabili per l'addestramento di modelli di machine learning. Nella computer vision, ciò significa etichettare immagini o video con le informazioni da cui un modello deve imparare. Senza dati adeguatamente annotati, i modelli non possono apprendere accuratamente le relazioni tra input e output.
Tipi di annotazione dei dati#
A seconda dei requisiti specifici di un computer vision task, esistono diversi tipi di annotazione dei dati. Ecco alcuni esempi:
- Bounding Box: Caselle rettangolari disegnate attorno agli oggetti in un'immagine, utilizzate principalmente per i task di object detection. Queste caselle sono definite dalle loro coordinate in alto a sinistra e in basso a destra.
- Poligoni: Profili dettagliati per gli oggetti, che consentono un'annotazione più precisa rispetto ai riquadri delimitatori. I poligoni vengono utilizzati in attività come instance segmentation, in cui la forma dell'oggetto è importante.
- Maschere: Maschere binarie in cui ciascun pixel fa parte di un oggetto o dello sfondo. Le maschere vengono utilizzate nelle attività di semantic segmentation per fornire dettagli a livello di pixel.
- Keypoints: Punti specifici contrassegnati all'interno di un'immagine per identificare posizioni di interesse. I keypoints vengono utilizzati in attività come pose estimation e rilevamento dei punti di riferimento facciali.
- Oriented Bounding Boxes: Rettangoli dotati di un angolo di rotazione, utilizzati nelle attività OBB in cui gli oggetti compaiono con orientamenti arbitrari, come nelle immagini aeree.
Formati di annotazione comuni#
Dopo aver selezionato un tipo di annotazione, è importante scegliere il formato appropriato per archiviare e condividere le annotazioni. I formati più comuni sono:
| Formato | Struttura del file | Comunemente usato per |
|---|---|---|
| COCO | File JSON singolo | Object detection, instance segmentation, keypoint detection, stuff e panoptic segmentation, didascalie delle immagini |
| Pascal VOC | Un file XML per immagine | Object detection |
| YOLO | Un file .txt per immagine | Rilevamento oggetti, segmentazione, pose e box orientati |
Il formato YOLO memorizza una riga per oggetto con indici di classe che partono da 0. Per il object detection la riga è class x_center y_center width height con coordinate normalizzate 0–1. Una riga di segmentazione sostituisce il box con i punti del poligono normalizzati dell'oggetto, mentre una riga di pose mantiene il box e aggiunge le coordinate dei keypoint dopo di esso, con un flag di visibilità per ciascun keypoint quando il dataset dichiara kpt_shape: [n, 3]. Una riga OBB memorizza class x1 y1 x2 y2 x3 y3 x4 y4 utilizzando le coordinate dei corner normalizzate.
Se il tuo strumento di annotazione esporta in COCO JSON, puoi convertirlo in etichette YOLO .txt oppure effettuare il training direttamente sul file JSON utilizzando una classe di dataset personalizzata.
Definizione delle linee guida per l'annotazione#
Scelti un tipo di annotazione e un formato, il passaggio successivo consiste nello stabilire regole di etichettatura chiare e oggettive. Queste regole fungono da tabella di marcia per la coerenza e accuracy durante tutto il processo di annotazione. Gli aspetti chiave di queste regole includono:
- Chiarezza e dettaglio: Assicurati che le tue istruzioni siano chiare. Usa esempi e illustrazioni per mostrare cosa ci si aspetta.
- Coerenza: Mantieni le tue annotazioni uniformi. Stabilisci criteri standard per l'annotazione di diversi tipi di dati, in modo che tutte le annotazioni seguano le stesse regole.
- Riduzione del bias: Rimani neutrale. Allenati ad essere obiettivo e riduci al minimo i pregiudizi personali per garantire annotazioni eque.
- Efficienza: Lavora in modo più intelligente, non più difficile. Usa strumenti e flussi di lavoro che automatizzano i compiti ripetitivi, rendendo il processo di annotazione più veloce ed efficiente.
Rivedere e aggiornare regolarmente le tue regole di etichettatura aiuterà a mantenere le tue annotazioni accurate, coerenti e allineate con gli obiettivi del tuo progetto.
Strumenti di annotazione#
Un buon strumento di annotazione ti consente di etichettare qualsiasi tipo di dato richiesto dalla tua attività, applica linee guida coerenti ed esporta le etichette in un formato pronto per il training. Ultralytics Platform offre un editor di annotazioni integrato che copre rilevamento, segmentazione di istanze, segmentazione semantica, classificazione, pose e OBB, con smart annotation basata su SAM che trasforma un singolo clic in una maschera per attività di rilevamento, segmentazione di istanze, segmentazione semantica e OBB. Poiché le annotazioni vengono salvate nel layout previsto da ciascuna attività — righe YOLO .txt per le attività spaziali e cartelle di classe per la classificazione — il tuo dataset etichettato passa direttamente al training senza alcun passaggio di conversione.
Qualità dell'annotazione: Accuratezza, precisione e outlier#
Prima di annotare su larga scala, è utile comprendere l'accuratezza, la precision, i valori anomali e il controllo qualità, in modo da non etichettare i tuoi dati in modo controproducente.
Comprendere accuratezza e precisione#
È importante comprendere la differenza tra accuratezza e precisione e come si relaziona all'annotazione. L'accuratezza si riferisce a quanto i dati annotati siano vicini ai valori reali. Ci aiuta a misurare quanto fedelmente le etichette riflettano gli scenari del mondo reale. La precisione indica la coerenza delle annotazioni. Verifica se stai assegnando la stessa etichetta allo stesso oggetto o alla stessa caratteristica in tutto il dataset. Un'elevata accuratezza e precisione portano a modelli addestrati meglio riducendo il rumore e migliorando la capacità del modello di generalizzare dai training data.
Identificare gli outlier#
Gli outlier sono punti dati che si discostano notevolmente dalle altre osservazioni nel dataset. Rispetto alle annotazioni, un outlier potrebbe essere un'immagine etichettata in modo errato o un'annotazione che non si adatta al resto del dataset. Gli outlier sono preoccupanti perché possono distorcere il processo di apprendimento del modello, portando a previsioni imprecise e scarsa generalizzazione.
Puoi utilizzare vari metodi per rilevare e correggere gli outlier:
- Tecniche statistiche: Per rilevare valori anomali in caratteristiche numeriche come valori dei pixel, coordinate del bounding box o dimensioni degli oggetti, puoi utilizzare metodi come diagrammi a scatola (box plot), istogrammi o z-score.
- Tecniche visive: Per individuare anomalie in caratteristiche categoriali come classi di oggetti, colori o forme, usa metodi visivi come la rappresentazione grafica di immagini, etichette o mappe di calore.
- Metodi algoritmici: Utilizza strumenti come il clustering (ad es. K-means clustering, DBSCAN) e algoritmi di anomaly detection per identificare valori anomali basati sui modelli di distribuzione dei dati.
Controllo qualità dei dati annotati#
Proprio come altri progetti tecnici, il controllo qualità è un must per i dati annotati. È una buona pratica controllare regolarmente le annotazioni per assicurarsi che siano accurate e coerenti. Questo può essere fatto in alcuni modi diversi:
- Revisione di campioni di dati annotati
- Utilizzo di strumenti automatizzati per individuare errori comuni
- Far ricontrollare le annotazioni a un'altra persona
Se lavori con più persone, la coerenza tra diversi annotatori è importante. Un buon accordo tra annotatori significa che le linee guida sono chiare e tutti le stanno seguendo allo stesso modo. Mantiene tutti sulla stessa lunghezza d'onda e le annotazioni coerenti.
Durante la revisione, se trovi errori, correggili e aggiorna le linee guida per evitare errori futuri. Fornisci feedback agli annotatori e offri formazione regolare per aiutare a ridurre gli errori. Avere un processo solido per gestire gli errori mantiene il tuo dataset accurato e affidabile.
Strategie efficienti di etichettatura dei dati#
Per rendere il processo di etichettatura dei dati più fluido ed efficace, considera l'implementazione di queste strategie:
- Linee guida di annotazione chiare: Fornisci istruzioni dettagliate con esempi per garantire che tutti gli annotatori interpretino i task in modo coerente. Ad esempio, quando etichetti uccelli, specifica se includere l'intero uccello o solo parti specifiche.
- Controlli di qualità regolari: Imposta dei benchmark e usa metriche specifiche per rivedere il lavoro, mantenendo standard elevati attraverso un feedback continuo.
- Usa strumenti di pre-annotazione: Molte moderne piattaforme di annotazione offrono funzionalità di pre-annotazione assistita dall'IA che possono accelerare significativamente il processo generando automaticamente annotazioni iniziali che gli esseri umani possono poi perfezionare.
- Implementa l'apprendimento attivo (Active Learning): Questo approccio dà la priorità all'etichettatura dei campioni più informativi, il che può ridurre il numero totale di annotazioni necessarie mantenendo le prestazioni del modello.
- Elaborazione in batch: Raggruppa immagini simili per l'annotazione per mantenere la coerenza e migliorare l'efficienza.
Queste strategie possono aiutare a mantenere annotazioni di alta qualità riducendo al contempo il tempo e le risorse richieste per il processo di etichettatura.
Conclusione#
La raccolta di dati diversi e non distorti e la loro annotazione coerente con gli strumenti giusti sono le fondamenta di un modello di computer vision affidabile. Una volta raccolto ed etichettato il tuo dataset, procedi con la guida ai passaggi di un progetto di computer vision per passare al training e alla valutazione. Se hai dubbi lungo il percorso, chiedi alla community sul repository GitHub di Ultralytics o sul server Discord di Ultralytics.
FAQ#
Per ridurre al minimo i pregiudizi, raccogli dati da fonti diverse, garantisci una rappresentazione bilanciata tra tutti i gruppi rilevanti (come diverse età, generi ed etnie), rivedi e aggiorna regolarmente il tuo dataset per cogliere pregiudizi emergenti e applica tecniche di mitigazione come l'oversampling delle classi sottorappresentate, data augmentation e algoritmi sensibili all'equità. Evitare i pregiudizi in questo modo mantiene le prestazioni del tuo modello di computer vision elevate in vari scenari del mondo reale e ne migliora la capacità di generalizzazione.
Stabilisci linee guida di etichettatura chiare e oggettive con istruzioni dettagliate, esempi e illustrazioni, quindi applicale uniformemente su tutti i tipi di dati in modo che ogni annotazione segua le stesse regole. Forma gli annotatori a rimanere neutrali per ridurre i pregiudizi personali, rivedi e aggiorna regolarmente le linee guida e utilizza controlli di coerenza automatizzati insieme al feedback tra annotatori per mantenere l'accuratezza elevata e allineata agli obiettivi del tuo progetto.
Qualche centinaio di oggetti annotati per classe sono sufficienti per iniziare a sperimentare con il transfer learning, ma per prestazioni reali affidabili Ultralytics consiglia at least 1,500 images and 10,000 labeled instances per class. Abbina un dataset sufficientemente grande a un programma di addestramento ragionevole — around 300 epochs è un punto di partenza comune, ridotto se il modello va in overfitting precocemente — e mantieni le tue annotazioni rigorose e allineate con gli obiettivi specifici del tuo progetto. Esplora le strategie di addestramento dettagliate nella YOLO26 training guide.
Sì. Ultralytics Platform include un editor di annotazioni integrato che supporta bounding box, poligoni, keypoint, box orientati ed etichette di classificazione in un'unica area di lavoro. La smart annotation basata su SAM velocizza l'etichettatura per il rilevamento, la segmentazione di istanze, la segmentazione semantica e le attività OBB generando maschere con un singolo clic, mentre pose e classificazione vengono annotate manualmente. Le annotazioni vengono memorizzate nel layout previsto da ciascuna attività — righe YOLO
.txtper le attività spaziali, cartelle di classe per la classificazione — pronte per il training.Fai corrispondere il tipo di annotazione all'attività che intendi addestrare. I bounding box sono i più veloci da disegnare e sono tutto ciò di cui il object detection ha bisogno. I poligoni e le maschere richiedono notevolmente più tempo per oggetto, ma sono necessari per la segmentazione di istanze quando la forma esatta di un oggetto è importante. I keypoint sono adatti alla stima della posa e al rilevamento di punti di riferimento, mentre i box orientati sono adatti ad attività OBB come le immagini aeree, in cui un rettangolo allineato agli assi racchiuderebbe troppo sfondo. Annotare per il livello di dettaglio minimo necessario mantiene lo sforzo di etichettatura proporzionato al risultato.