Il riconoscimento delle immagini di YOLOv8 è eccezionale, ma l'addestramento del modello è un compito importante da non trascurare.

YOLOv8 è un algoritmo di rilevamento di oggetti in tempo reale ampiamente utilizzato nel campo del rilevamento di oggetti. Fa parte della serie You Only Look Once (YOLO) sviluppata da Ultralytics. L'algoritmo tiene traccia, rileva, segmenta le istanze, stima la posa e classifica gli oggetti in immagini e video. Mira ad essere più veloce e più preciso rispetto ai suoi algoritmi precedenti.

L'utilizzo di YOLOv8 su set di dati sperimentali come CIFAR-10 e CIFAR-100 è spesso più semplice per i progetti POC (Proof-of-Concept) che su set di dati del mondo reale che richiedono set di dati personalizzati.

Questo tutorial ti guiderà attraverso i passaggi coinvolti nell'addestramento di YOLOv8 sui dati personalizzati.

Configurazione dell'ambiente Python

Inizia installando l'ambiente di sviluppo per il progetto, seguendo le istruzioni riportate di seguito.

  1. Vai al terminale e crea una nuova directory denominata yolov8project:
    mkdir yolov8project
  2. instagram viewer
  3. Passare alla directory del progetto e creare un ambiente virtuale:
    cd progetto yolov8
    python -m venv env
  4. Quindi, attiva l'ambiente virtuale.
    # Su Windows
    env/Script/activate

    # Su Linux/macOS
    sorgente env/bin/activate

    Per eseguire il tuo codice, devi installare Ultralytics, una libreria per il rilevamento degli oggetti e la segmentazione delle immagini. È anche una dipendenza YOLOv8. Installalo usando il pip eseguendo il comando seguente.
    pip installa ultralytics
  5. Questo comando installa il modello pre-addestrato di YOLOv8, yolov8n.pt. Testare il modello eseguendo i comandi seguenti per eseguire un rilevamento con pesi pre-addestrati rispettivamente sull'immagine o sul video scelti utilizzando YOLOv8.
    #rilevamento delle immagini
    yolo task=detect mode=predict model=yolov8n.pt source="path/to/image.png"

    #rilevamento video
    yolo task=detect mode=predict model=yolov8n.pt source="path/to/video.mp4"

    Se tutto funziona perfettamente, i risultati saranno disponibili nel file yolov8project directory nel corre/rileva/exp sottocartella.

Preparazione del set di dati personalizzato

I passaggi per preparare il set di dati personalizzato includono la raccolta dei dati, l'etichettatura dei dati e la suddivisione dei dati (addestramento, test, convalida).

Raccolta dati

Questo è il processo di raccolta di una serie di immagini che contengono gli oggetti che si desidera rilevare. Assicurati di utilizzare immagini di alta qualità, a fuoco e gli oggetti sono chiaramente visibili. Puoi utilizzare una varietà di strumenti per raccogliere immagini, come Google Immagini, Flickr o la tua fotocamera. Se non disponi di un set di dati di immagini, utilizza il set di dati del file openimages Banca dati. Questo articolo utilizzerà l'immagine di sicurezza del cantiere set di dati di Kaggle.

Etichettatura dei dati

Dopo aver raccolto le tue immagini, devi etichettarle. Ciò significa identificare gli oggetti in ciascuna immagine e i relativi riquadri di delimitazione. Sono disponibili diversi strumenti per aiutarti a etichettare i tuoi dati, come LabelImg, CVAT e Robotflow. Questi strumenti sono tutti gratuiti.

Dividere i dati

Per addestrare i modelli di machine learning, devi suddividere i dati in set di addestramento e test. Prova a utilizzare un rapporto di suddivisione del 70% -30% quando utilizzi grandi quantità di dati. Altrimenti, attenersi all'80% -20% per evitare di sovradimensionare o sottodimensionare il modello.

Utilizzo cartelle divise, per suddividere in modo casuale i dati nei set di addestramento, test e convalida con il rapporto di suddivisione desiderato.

Configurazione di YOLOv8 per il tuo set di dati

Dopo aver etichettato i tuoi dati, procedi alla configurazione di YOLOv8 per il tuo set di dati personalizzato. Ciò comporta la creazione di un file di configurazione che specifica quanto segue:

  • Il percorso dei tuoi dati di allenamento.
  • Il percorso dei dati di convalida.
  • Il numero di classi che desideri rilevare.

Crea un file config.yaml per archiviare la configurazione:

sentiero:(set di datidirectorysentiero)
treno:(trenoinsieme di daticartellasentiero)
test:(testinsieme di daticartellasentiero)
valido:(convalidainsieme di daticartellasentiero)

# Classi
nc:5# sostituisci in base al numero di classi del tuo set di dati

# Nomi di classe
# sostituisci tutti i nomi delle classi con i nomi delle tue classi
nomi:['classe1','classe2','classe3','classe4','classe5']

La creazione del file di configurazione è un modo utile per strutturare e archiviare i parametri cruciali per il modello di visione artificiale. Assicurati di aggiornare il file config.yaml in base alla natura e alla struttura del tuo set di dati.

Assicurati di utilizzare i percorsi corretti per i tuoi set di dati poiché l'addestramento del modello si basa completamente sul file di configurazione.

Formazione YOLOv8 sui dati personalizzati

Una volta creato il file di configurazione, inizia ad addestrare YOLOv8. Usa lo strumento della riga di comando YOLOv8 per addestrare il tuo modello. Lo strumento della riga di comando accetta diversi parametri, come il percorso del file di configurazione, il numero di epoche e la dimensione dell'immagine come segue:

yolo task=detect mode=train model=yolov8n.pt data=path/to/config.yaml epochs=10 imgsz=640

Ci sono diverse parti in questo comando.

compito imposta il tipo di attività: rilevare, segmentare o classificare. modalità rappresenta un'azione: train, predict, val, export, track o benchmark. modello è il modello da utilizzare, in questo caso yolov8n.pt. Puoi anche usare yolov8s/yolov8l/yolov8x.

epoche rappresenta il numero di cicli di allenamento (10). imgsz rappresenta la dimensione dell'immagine (640). La dimensione dell'immagine deve essere sempre impostata su un multiplo di 32.

Ecco un esempio dell'output che puoi aspettarti:

Il tempo utilizzato per l'addestramento dipende dalle dimensioni del set di dati, dal numero di epoche e dal numero di classi che si desidera rilevare. Una volta completato il processo di addestramento, avrai un modello YOLOv8 addestrato che utilizzerai per rilevare oggetti in immagini e video.

Al termine dell'allenamento, eseguire l'inferenza con i nuovi pesi, best.pt

yolo task=detect mode=predict model="corse/train/pesi/best.pt" source="image.png"

Naviga verso il corse/treno/exp/pesi/best.pt directory per accedere ai pesi personalizzati. YOLOv8 avrà memorizzato l'immagine prevista nel file corre/rileva/exp sottocartella.

Valutazione delle prestazioni del modello

È possibile valutare le prestazioni del modello YOLOv8 utilizzando il seguente comando che valuta il modello su una serie di immagini di prova:

yolo val model=yolov8n.pt data=path/to/config.yaml batch=1 imgsz=640

I risultati attesi sono i seguenti:

Il processo di valutazione genererà varie metriche, come precisione, richiamo e punteggio F1. La metrica di precisione misura la percentuale di oggetti rilevati correttamente. La metrica di richiamo misura la percentuale di oggetti rilevati da YOLOv8. Il punteggio F1 è una media ponderata delle metriche di precisione e richiamo.

Distribuzione del tuo modello YOLOv8 personalizzato

Testa le prestazioni del tuo modello YOLOv8.

yolo rileva predire model=path/to/best.pt source='path/to/image.jpg'

L'output è il seguente:

Quindi, salva i pesi del modello in un file.

yolo export model=path/to/best.pt format=onnx

Usa il file per caricare il modello nella tua applicazione e usalo per rilevare oggetti in tempo reale. Se distribuisci il modello in a servizio cloud, utilizzare il servizio cloud per rilevare gli oggetti nelle immagini e nei video presenti nel servizio.

YOLOv8 da asporto

Il team Ultralytics ha continuamente migliorato i modelli della serie YOLO. Ciò li ha resi leader del settore nella tecnologia di rilevamento degli oggetti e nel campo della visione artificiale.

YOLOv8 è un modello migliorato che puoi utilizzare per gestire molti tipi di progetti di visione artificiale.