Facendo clic su "Accetta tutti i cookie", l'utente accetta la memorizzazione dei cookie sul proprio dispositivo per migliorare la navigazione del sito, analizzarne l'utilizzo e contribuire alle nostre iniziative di marketing. Per saperne di più
Impostazioni dei cookie
Facendo clic su "Accetta tutti i cookie", l'utente accetta la memorizzazione dei cookie sul proprio dispositivo per migliorare la navigazione del sito, analizzarne l'utilizzo e contribuire alle nostre iniziative di marketing. Per saperne di più
Imparare ad addestrare i modelli YOLO per rilevare gli animali in natura utilizzando il dataset African Wildlife e utilizzare il modello per fare inferenze su immagini non viste.
La fauna selvatica 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 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, modelli di computer vision come Ultralytics YOLO11 possono analizzare dati visivi come immagini e video per automatizzare l'identificazione e la localizzazione degli animali in tempo reale.
I compiti di visione artificiale come il rilevamento degli oggetti e la segmentazione delle istanze, supportati da YOLO11, sono molto utili in questo caso. Analizzando i dati visivi, questi compiti ci aiutano a raccogliere dati cruciali, a identificare modelli ecologici e a rispondere in modo più efficace alle minacce ambientali.
In questo articolo illustreremo la procedura per addestrare YOLO11 a rilevare gli animali. Iniziamo!
Per iniziare con Ultralytics YOLO11
Prima di immergerci nell'esercitazione, diamo un'occhiata alle diverse opzioni di configurazione e agli strumenti necessari per addestrare e utilizzare YOLO11.
Lo strumento principale di cui avrete bisogno è il pacchetto Ultralytics Python, che semplifica il lavoro con i modelli YOLO per attività come l'addestramento, il rilevamento di oggetti e l'esecuzione di inferenze. Per utilizzare il pacchetto Ultralytics, è necessario impostare un ambiente per l'esecuzione del codice.
Ecco alcune delle opzioni più diffuse per impostare l'ambiente di sviluppo:
Interfaccia a riga di comando (CLI): La CLI, nota anche come terminale, è uno strumento basato sul testo che consente di interagire con il computer digitando i comandi. A differenza delle interfacce grafiche (GUI), in cui si fa clic su pulsanti e si usa il mouse, la CLI richiede la digitazione di istruzioni di testo per eseguire programmi o compiti.
Quaderni Jupyter: Questi taccuini consentono di scrivere ed eseguire codice in piccole parti chiamate celle. Sono interattivi, il che significa che potete vedere subito l'output del vostro 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 è necessario installare nulla sul computer.
Sebbene esistano altre opzioni per la configurazione dell'ambiente, che possono essere analizzate 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 questa guida illustreremo 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.
Comprendere il set di dati sulla fauna africana
Dopo aver scelto un ambiente di sviluppo, per addestrare YOLO11 a rilevare specificamente 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 questa esercitazione utilizzeremo l'African Wildlife Dataset. È supportato dal pacchetto Ultralytics Python ed è specificamente progettato per rilevare 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 dataset è composto da 1504 immagini suddivise in tre sottoinsiemi: 1052 per l'addestramento, 225 per la validazione e 227 per il test. Questa suddivisione garantisce un apprendimento efficace del modello e una valutazione completa.
Integrazione perfetta: Ultralytics fornisce un file di configurazione YAML che definisce i percorsi dei set di dati, le classi e altri dettagli, rendendolo facile da usare per l'addestramento dei modelli YOLO.
Licenza aperta: Questo set di dati è distribuito con licenza AGPL-3.0, che incoraggia la trasparenza e la collaborazione.
Addestramento di Ultralytics YOLO11 per il rilevamento degli animali
Dopo aver esplorato il dataset African Wildlife, possiamo iniziare ad addestrare un modello YOLO11 per rilevare gli animali nelle immagini. Il processo prevede l'impostazione 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 l'addestramento e il test del modello. È possibile utilizzare Google Colab, Jupyter Notebook o un semplice file Python, a seconda delle preferenze. Creare un nuovo taccuino Google Colab, un taccuino Jupyter o un file Python.
Se si utilizza Google Colab, l'ambiente viene eseguito per impostazione predefinita su una CPU (Central Processing Unit), che può rallentare la formazione. Per accelerare il processo, soprattutto per i modelli più grandi, è possibile cambiare il runtime per utilizzare una GPU. In Google Colab, è possibile navigare nella scheda "Runtime" del menu, selezionare "Change runtime type" e impostare l'acceleratore hardware su una GPU (preferibilmente una GPU T4). Questo è importante per ridurre i tempi di formazione.
Successivamente, indipendentemente dall'ambiente utilizzato, è necessario installare il pacchetto Ultralytics Python. Se si utilizza un ambiente basato su notebook (Google Colab o Jupyter), eseguire 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 è caricare il modello YOLO11 e preparare il set di dati per l'addestramento. Per prima cosa, carichiamo il modello YOLO11, che è già pre-addestrato per compiti di rilevamento di oggetti generici. Questo modello pre-addestrato ci offre un buon punto di partenza, poiché ha già imparato a rilevare vari oggetti.
Quindi, si specifica il set di dati utilizzando un file YAML, che contiene informazioni sulle immagini e sulle etichette. Questo file indica al modello dove trovare il set di dati e quali oggetti deve imparare a riconoscere.
Il dataset African Wildlife è supportato dal pacchetto Ultralytics, quindi verrà scaricato automaticamente all'avvio del training, risparmiandovi 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 vengono ridimensionate a una dimensione coerente per l'elaborazione e il modello lavora con un determinato numero di immagini alla volta, noto come 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 lo snippet di codice sottostante.
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
results = model.train(data="african-wildlife.yaml", epochs=30, batch=8)
Fase 3: Esecuzione della formazione YOLO11
Una volta eseguito lo snippet di codice qui sopra, il modello inizia l'addestramento in base alle impostazioni che gli abbiamo fornito. Nel 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 30 volte, imparando ogni volta qualcosa in più.
Immaginate di voler imparare a disegnare un animale. La prima volta che lo disegnate potrebbe non venire bene, ma dopo esservi esercitati più volte, iniziate a migliorare. Ogni volta che si riprova, si impara da ciò che è andato storto e lo si corregge. 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, verrà visualizzato il seguente output man mano che l'addestramento procede:
Configurazione dell'addestramento: La prima parte mostra la versione di Ultralytics, PyTorch e l'hardware utilizzato (CPU in questo caso), insieme alla configurazione dell'addestramento, compreso 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 strati e di 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 l'addestramento. Conferma che non ci sono problemi con il set di dati.
Progressi dell'addestramento: L'output si aggiorna dopo ogni epoch (ciclo di addestramento), mostrando l'avanzamento dell'addestramento insieme ai valori chiave delle perdite (box_loss, cls_loss, dfl_loss), che indicano il grado di apprendimento del modello.
Metriche delle prestazioni: Dopo ogni epoca, vengono visualizzate 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 memoria della GPU: Se si utilizza una GPU, l'output mostra l'utilizzo della memoria per monitorare l'utilizzo dell'hardware.
Figura 2. L'output che si vedrà durante l'addestramento del modello.
Fase 4: valutazione delle prestazioni del modello addestrato su misura
Al termine del processo di addestramento, è possibile esaminare e convalidare le metriche di prestazione del modello. In Google Colab, è possibile navigare nella cartella "runs", poi nella cartella "detect" e infine nella cartella "train", dove si trovano i registri che mostrano gli indicatori di prestazione chiave.
Per gli utenti in ambiente Python, i risultati dell'addestramento vengono salvati per impostazione predefinita nella directory "runs/train/" all'interno della directory di lavoro corrente. Ogni sessione di addestramento crea una nuova sottodirectory (ad esempio, runs/train/exp, runs/train/exp2, ecc.), dove si possono trovare i log e altri risultati relativi all'addestramento.
Se si utilizza la CLI, è possibile accedere facilmente a questi risultati e impostazioni utilizzando il comando "yolo settings", che consente di visualizzare o modificare i percorsi e altre configurazioni relative ai registri di allenamento e ai dettagli dell'esperimento.
Tra i registri, si trovano anche alcuni grafici che possono essere osservati per verificare l'andamento del processo di addestramento del modello. Questi grafici, creati al termine dell'addestramento, mostrano se il modello è migliorato nel tempo, riducendo gli errori e diventando più preciso.
I dati seguono 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 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 si possono analizzare per valutare il modello.
Metriche di valutazione delle prestazioni chiave
Inoltre, ecco un approfondimento su alcune delle metriche che è possibile utilizzare per valutare le prestazioni del modello:
Precisione media (mAP): Questa metrica misura l'accuratezza complessiva del modello nel rilevare gli animali in tutte le classi, calcolando 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.
Esecuzione di inferenze utilizzando il modello YOLO11 addestrato in modo personalizzato
Ora che abbiamo addestrato e valutato YOLO11, è il momento di usarlo per analizzare le immagini ed eseguire inferenze. È possibile utilizzare le immagini di prova del set di dati 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. Quindi definisce 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 dal 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, è possibile utilizzare il codice sottostante. Abbiamo utilizzato un'immagine di Pexels. È possibile utilizzare la stessa immagine o qualsiasi altra immagine pertinente.
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 aree chiave in cui Vision AI può essere utilizzata per sostenere 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 delle telecamere: Nelle aree remote, la visione computerizzata può essere utilizzata per classificare continuamente gli animali e inviare avvisi in tempo reale, consentendo alle autorità per la fauna selvatica di rispondere rapidamente a minacce quali 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: L'intelligenza artificiale 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 visione artificiale 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 dell'ecosistema. Incorporando modelli basati sull'intelligenza artificiale negli sforzi di conservazione, possiamo proteggere meglio le specie, migliorare il monitoraggio della biodiversità e prendere decisioni più informate per salvaguardare la fauna selvatica in pericolo.