Controllo verde
Link copiato negli appunti

Come addestrare i modelli Ultralytics YOLO per individuare gli animali in natura

Impara ad addestrare i modelli YOLO per rilevare gli animali in natura utilizzando l'African Wildlife Dataset e usa il modello per fare inferenze su immagini non viste.

La fauna del nostro pianeta è incredibilmente varia, dalle api ronzanti agli elefanti imponenti, e preservare questa biodiversità è fondamentale per mantenere un ecosistema equilibrato. Tuttavia, gli sforzi di conservazione stanno diventando sempre più impegnativi a causa della perdita di habitat, del bracconaggio e dei cambiamenti climatici. Tutti questi fattori influiscono negativamente sulle popolazioni di animali selvatici. 

I metodi tradizionali di monitoraggio degli animali, come l'analisi manuale delle immagini delle fotocamere e le indagini sul campo, possono essere lenti e richiedere molte risorse. Spesso questi sforzi non riescono a coprire efficacemente grandi aree e grandi popolazioni.

Per superare queste limitazioni, l'intelligenza artificiale (AI) può essere utilizzata come strumento d'impatto per la conservazione della fauna selvatica. In particolare, i modelli di visione artificiale come Ultralytics YOLO11 possono analizzare dati visivi come immagini e video per automatizzare l'identificazione e la localizzazione degli animali in tempo reale. 

Le attività di visione artificiale come il rilevamento di oggetti e la segmentazione di istanze, supportate da YOLO11, sono molto utili in questo caso. Analizzando i dati visivi, queste attività ci aiutano a raccogliere dati cruciali, a identificare modelli ecologici e a rispondere in modo più efficace alle minacce ambientali.

In questo articolo ti spiegheremo come addestrare YOLO11 a rilevare gli animali. Iniziamo!

Come iniziare con Ultralytics YOLO11

Prima di immergerci nel tutorial, diamo un'occhiata alle diverse opzioni di configurazione e agli strumenti di cui avrai bisogno per allenarti e utilizzare YOLO11. 

Lo strumento principale di cui avrai bisogno è il pacchettoUltralytics Python , che ti permette di lavorare facilmente con i modelli YOLO per attività come la formazione, il rilevamento di oggetti e l'esecuzione di inferenze. Per utilizzare il pacchetto Ultralytics , dovrai configurare un ambiente per l'esecuzione del tuo codice e ci sono diverse opzioni tra cui puoi scegliere.

Ecco alcune delle opzioni più diffuse per configurare il tuo ambiente di sviluppo:

  • Interfaccia a riga di comando (CLI): La CLI, nota anche come terminale, è uno strumento basato sul testo che ti permette di interagire con il computer digitando i comandi. A differenza delle interfacce grafiche (GUI), in cui si clicca su pulsanti e si usa il mouse, la CLI richiede la digitazione di istruzioni testuali per eseguire programmi o compiti.
  • Quaderni Jupyter: Questi taccuini ti permettono di scrivere ed eseguire codice in piccole parti chiamate celle. Sono interattivi, il che significa che puoi vedere subito l'output del tuo codice, rendendo più facili i test e il debug.
  • Google Colab: Google Colab è una piattaforma basata sul cloud che funziona come i Jupyter Notebook ma offre accesso gratuito a potenti GPU. È facile da configurare e non devi installare nulla sul tuo computer.

Sebbene esistano altre opzioni per la configurazione dell'ambiente che puoi esplorare nella documentazione ufficiale di Ultralytics , le tre opzioni sopra menzionate richiedono una configurazione minima e sono facili da usare, il che le rende ideali per iniziare rapidamente. 

In questo tutorial mostreremo come configurare e addestrare YOLO11 utilizzando Google Colab, Jupyter Notebooks o un semplice file Python , poiché i passaggi sono molto simili in tutti questi ambienti.

Capire il set di dati sulla fauna selvatica africana

Dopo aver scelto un ambiente di sviluppo, per addestrare YOLO11 a rilevare in modo specifico gli animali selvatici, abbiamo bisogno di un set di immagini etichettate di alta qualità. Ogni immagine deve mostrare chiaramente dove si trovano gli animali e di che tipo sono, in modo che il modello possa imparare a riconoscerli attraverso l'apprendimento supervisionato.

In questo tutorial utilizzeremo l'African Wildlife Dataset. È supportato dal pacchetto Ultralytics Python ed è specificamente progettato per individuare gli animali che si trovano comunemente negli ecosistemi africani. Contiene immagini annotate di quattro specie chiave: bufali, elefanti, rinoceronti e zebre.

Figura 1. Uno scorcio dell'African Wildlife Dataset.

Ecco alcune caratteristiche principali dell'African Wildlife Dataset:

  • Scala: Il set di dati è composto da 1504 immagini suddivise in tre sottoinsiemi: 1052 per la formazione, 225 per la convalida e 227 per il test. Questa suddivisione garantisce un apprendimento efficace e una valutazione approfondita del modello.

  • Integrazione perfetta: Ultralytics fornisce un file di configurazione YAML che definisce i percorsi dei dataset, le classi e altri dettagli, rendendone semplice l'utilizzo per la formazione dei modelli YOLO .

  • Licenza aperta: Questo set di dati è distribuito con la licenza AGPL-3.0 , che incoraggia la trasparenza e la collaborazione.

Addestramento di Ultralytics YOLO11 per il rilevamento di animali

Ora che abbiamo esplorato l'African Wildlife Dataset, possiamo iniziare ad addestrare un modello YOLO11 per rilevare gli animali nelle immagini. Il processo prevede la configurazione dell'ambiente di sviluppo, l'addestramento del modello YOLO11 e la valutazione delle sue prestazioni.

Passo 1: Impostazione dell'ambiente

Per iniziare, prepareremo un ambiente per addestrare e testare il modello. Puoi utilizzare Google Colab, Jupyter Notebook o un semplice file Python , a seconda delle tue preferenze. Crea un nuovo taccuino Google Colab, un taccuino Jupyter o un file Python .

Se utilizzi Google Colab, l'ambiente viene eseguito di default su una CPU (Central Processing Unit), il che può rallentare la formazione. Per accelerare il processo, soprattutto per i modelli più grandi, puoi cambiare il runtime per utilizzare una GPU. In Google Colab, puoi navigare nella scheda "Runtime" del menu, selezionare "Cambia tipo di runtime" e impostare l'acceleratore hardware su una GPU (preferibilmente una GPU T4). Questo è importante per ridurre i tempi di formazione.

Successivamente, indipendentemente dall'ambiente che stai utilizzando, devi installare il pacchetto Ultralytics Python . Se stai utilizzando un ambiente basato su notebookGoogle Colab o Jupyter), esegui il seguente comando con un punto esclamativo (!) all'inizio

pip install ultralytics

Passo 2: caricamento di YOLO11 e preparazione del set di dati

Una volta installato il pacchetto Ultralytics , il passo successivo consiste nel caricare il modello YOLO11 e preparare il dataset per l'addestramento. Per prima cosa, carichiamo il modello YOLO11 , che è già pre-addestrato a compiti generali di rilevamento di oggetti. Questo modello pre-addestrato ci offre un buon punto di partenza, poiché ha già imparato a rilevare vari oggetti.

Quindi, specifichiamo il set di dati utilizzando un file YAML, che contiene informazioni sulle immagini e sulle etichette. Questo file indica al modello dove trovare il dataset e quali oggetti deve imparare a riconoscere. 

L'African Wildlife Dataset è supportato dal pacchetto Ultralytics , quindi verrà scaricato automaticamente all'avvio della formazione, risparmiandoti la fatica di impostarlo manualmente.

Una volta che il set di dati è pronto, il modello inizia l'addestramento. Il modello esaminerà il set di dati più volte, un processo chiamato addestramento su più epoche, per migliorare la sua capacità di riconoscere gli animali nelle immagini. Durante questo processo, le immagini saranno ridimensionate in modo da poter essere elaborate in modo coerente e il modello lavorerà con un determinato numero di immagini alla volta, detto batch. Questo aiuta il modello ad apprendere in modo più efficiente.

In breve, il modello viene caricato, il set di dati viene scaricato automaticamente e l'addestramento inizia a funzionare per rilevare gli animali basati sul set di dati della fauna africana quando viene eseguito il frammento di codice sottostante.

from ultralytics import YOLO

model = YOLO("yolo11n.pt")

results = model.train(data="african-wildlife.yaml", epochs=30, batch=8)

Fase 3: Formazione su YOLO11

Una volta eseguito il frammento di codice qui sopra, il modello inizia la formazione in base alle impostazioni che gli abbiamo fornito. Attraverso il codice abbiamo detto al modello di esaminare le immagini di addestramento per 30 volte. Ciò significa che il modello esaminerà tutte le immagini del set di dati per 30 volte, imparando ogni volta qualcosa in più.

Immagina di voler imparare a disegnare un animale. La prima volta che lo disegni potrebbe non venire bene, ma dopo esserti esercitato più volte, inizi a migliorare. Ogni volta che ci riprovi, impari da ciò che è andato storto e lo correggi. Questo è ciò che ogni epoca fa per il modello: guarda le immagini, commette errori, impara da essi e migliora di volta in volta il riconoscimento degli animali.

Se il codice di addestramento viene eseguito correttamente, vedrai il seguente output mentre l'addestramento procede:

  • Configurazione dell'addestramento: La prima parte mostra la versione di Ultralytics, PyTorch e l'hardware utilizzatoCPU in questo casoCPU ), oltre alla configurazione dell'addestramento, che include il modello (yolo11n.pt), la dimensione del batch, le epoche e la dimensione dell'immagine.
  • Riepilogo del modello: fornisce informazioni sulla complessità del modello, come il numero di livelli e parametri, mostrando quanto è grande il modello.
  • Ottimizzatore e tasso di apprendimento: Indica l'ottimizzatore (ad esempio, AdamW) e il tasso di apprendimento, che controllano il modo in cui il modello regola i suoi parametri durante l'addestramento.
  • Scansione del dataset: Il modello analizza il dataset, mostrando quante immagini sono valide e pronte per la formazione. Conferma che non ci sono problemi con il dataset.
  • Progressi dell'addestramento: L'output si aggiorna dopo ogni epoca (ciclo di addestramento), mostrando i progressi dell'addestramento e i valori chiave delle perdite (box_loss, cls_loss, dfl_loss), che indicano il livello di apprendimento del modello.
  • Metriche di performance: Dopo ogni epoca, vedrai le metriche delle prestazioni come precisione, richiamo e mAP (precisione media). Questi valori mostrano l'accuratezza del modello nel rilevare e classificare gli oggetti.
  • Utilizzo della memoriaGPU : Se stai usando una GPU, l'output mostra l'utilizzo della memoria per monitorare l'utilizzo dell'hardware.
Figura 2. L'output che vedrai durante la formazione del modello.

Fase 4: Valutazione delle prestazioni del modello addestrato su misura

Al termine del processo di addestramento, puoi esaminare e convalidare le metriche di prestazione del modello. In Google Colab, puoi navigare nella cartella "runs", poi nella cartella "detect" e infine nella cartella "train", dove troverai i log che mostrano i principali indicatori di performance.

Per gli utenti in ambiente Python , i risultati dell'addestramento vengono salvati per impostazione predefinita nella directory "runs/train/" all'interno della tua directory di lavoro corrente. Ogni sessione di addestramento crea una nuova sottodirectory (ad esempio runs/train/exp, runs/train/exp2, ecc.), dove puoi trovare i log e altri risultati relativi all'addestramento.

Se utilizzi la CLI, puoi accedere facilmente a questi risultati e impostazioni utilizzando il comando "yolo settings", che ti permette di visualizzare o modificare i percorsi e altre configurazioni relative ai log di allenamento e ai dettagli dell'esperimento.

Tra i registri, troverai anche alcuni grafici che potrai osservare per capire quanto è andato bene il processo di formazione del modello. Questi grafici, creati al termine dell'addestramento, mostrano se il modello è migliorato nel tempo commettendo meno errori e diventando più preciso. 

Tracciano i progressi del modello, mostrando come la perdita (la differenza tra le previsioni del modello e i valori reali) sia diminuita e come l'accuratezza sia aumentata durante l'addestramento. Questo ti aiuta a capire quanto il modello abbia imparato a riconoscere gli animali e quanto sia migliorato alla fine dell'addestramento.

Figura 3. Un esempio dei grafici che puoi analizzare per valutare il tuo modello.

Metriche chiave di valutazione delle prestazioni

Inoltre, ecco un approfondimento su alcune delle metriche che puoi utilizzare per valutare le prestazioni del modello:

  • Precisione media (mAP): Questa metrica misura l'accuratezza complessiva del modello nell'individuare gli animali in tutte le classi facendo la media dei punteggi di precisione a diversi livelli di richiamo.
  • Precisione: Rappresenta la percentuale di rilevamenti corretti, calcolata dividendo il numero di rilevamenti veri positivi per il numero totale di rilevamenti effettuati.
  • Richiamo: Indica la percentuale di animali reali presenti nelle immagini che sono stati identificati correttamente dal modello, riflettendo la sua capacità di catturare tutte le istanze rilevanti.

Queste metriche di valutazione possono aiutare a perfezionare il modello per migliorarne l'accuratezza prima di utilizzarlo in applicazioni reali.

Esegui inferenze utilizzando il tuo modello YOLO11 addestrato in modo personalizzato

Ora che abbiamo addestrato e valutato YOLO11, è il momento di utilizzarlo per analizzare le immagini ed eseguire inferenze. Puoi utilizzare le immagini di prova del dataset o nuove immagini provenienti da fonti diverse.

Utilizzeremo il seguente frammento di codice per eseguire il modello su un'immagine del dataset di prova. Importa i moduli necessari dalla libreria Ultralytics . Definisce poi il percorso del file dei pesi del modello migliore ("best.pt") memorizzato nella directory dei risultati. Il modello YOLO11 addestrato su misura viene caricato utilizzando questi pesi. 

Successivamente, viene impostato il percorso di un'immagine del set di dati di prova African Wildlife. Il modello viene applicato a questa immagine per il rilevamento degli oggetti, i risultati vengono generati e l'output (come gli oggetti rilevati o le annotazioni) viene salvato.

from ultralytics import settings

best_model_path = results.save_dir / "weights/best.pt"

model = YOLO(best_path)

image_path = f"{settings['datasets_dir']}/african-wildlife/test/images/1 (168).jpg"

img_results = model(image_path, save=True) 

L'immagine di output mostrata di seguito verrà salvata nella cartella "predict" situata all'interno della directory runs/detect. Per i test successivi, verranno create nuove cartelle come "predict2", "predict3" e così via per memorizzare le immagini.

Figura 4. Esecuzione di un'inferenza utilizzando il modello YOLO11 ottimizzato su un'immagine di prova.

Per testare immagini provenienti da fonti diverse, puoi utilizzare il codice qui sotto. Abbiamo utilizzato un'immagine tratta da Pexels. Puoi utilizzare la stessa immagine o qualsiasi altra immagine pertinente.

best_model_path = results.save_dir / "weights/best.pt"

model = YOLO(best_path)

img2_results = model("https://images.pexels.com/photos/18341011/pexels-photo-18341011/free-photo-of-elephant-and-zebras-in-savannah.png", save=True)

L'immagine di output mostrata di seguito verrà salvata nella cartella appropriata.

Figura 5. Rilevamento di animali selvatici utilizzando il modello YOLO11 ottimizzato su un'immagine non vista.

L'intelligenza artificiale per la conservazione della fauna selvatica: Applicazioni nel mondo reale

Modelli come YOLO11 sono in grado di rilevare e seguire automaticamente gli animali, consentendo una serie di applicazioni pratiche. Ecco una panoramica di alcune delle principali aree in cui Vision AI può essere utilizzata per supportare gli sforzi di conservazione della fauna selvatica:

  • Monitoraggio delle specie: L'intelligenza artificiale può essere utilizzata per elaborare dati visivi come immagini e video per identificare con precisione le specie, contare le popolazioni e seguire i loro movimenti nel tempo.
  • Avvisi intelligenti con le telecamere: Nelle aree remote, la visione computerizzata può essere utilizzata per classificare continuamente gli animali e inviare avvisi in tempo reale, consentendo alle autorità della fauna selvatica di rispondere rapidamente a minacce come comportamenti anomali degli animali o conflitti tra uomo e fauna selvatica.
  • Analisi del comportamento: Monitorando la migrazione, le abitudini alimentari e le interazioni sociali, i sistemi di intelligenza artificiale possono fornire una visione completa delle dinamiche interspecifiche.
  • Prevenzione del bracconaggio: La Vision AI può essere sfruttata per rilevare la presenza umana non autorizzata e i segni di bracconaggio, sfruttando l'apprendimento automatico e i dati storici per individuare i punti a rischio.

Punti di forza

I modelli di computer vision come YOLO11 possono svolgere un ruolo fondamentale nella conservazione della fauna selvatica, automatizzando il rilevamento e la localizzazione degli animali. Con Vision AI possiamo elaborare grandi volumi di immagini e video provenienti da varie fonti, rendendo possibile una valutazione accurata della fauna selvatica. 

Ultralytics YOLO11, in particolare, è un'ottima scelta per il rilevamento di oggetti in tempo reale, il che lo rende perfetto per attività come la sorveglianza anti-bracconaggio, l'analisi comportamentale e il monitoraggio degli ecosistemi. Incorporando modelli basati sull'intelligenza artificiale nelle attività di conservazione, possiamo proteggere meglio le specie, migliorare il monitoraggio della biodiversità e prendere decisioni più informate per salvaguardare la fauna selvatica in pericolo.

Unisciti alla nostra comunità ed esplora il repository GitHub per saperne di più sulla computer vision. Scopri altre applicazioni relative all'IA nella sanità e alla computer vision nel settore manifatturiero nelle nostre pagine dedicate alle soluzioni. Scopri le opzioni di licenza diUltralytics per iniziare a lavorare con Vision AI.

Logo di LinkedInLogo di TwitterLogo di FacebookSimbolo di copia-link

Leggi tutto in questa categoria

Costruiamo insieme il futuro
di AI!

Inizia il tuo viaggio nel futuro dell'apprendimento automatico