Ricerca nel sito web

YOLO-World: una demo per il rilevamento di oggetti in tempo reale e senza scatti


Introduzione

YOLO-World un modello SOTA che si unisce alla serie YOLO. Questo nuovo modello può eseguire il rilevamento di oggetti su (presumibilmente) qualsiasi oggetto senza la necessità di addestrare il modello. Questo è qualcosa di nuovo e incredibile!

In questo articolo, approfondiamo YOLO-World, un rivoluzionario rilevatore di oggetti a scatto zero che vanta un notevole miglioramento della velocità di 20 volte rispetto ai suoi predecessori. Esploreremo la sua architettura, analizzeremo i fattori principali che contribuiscono alla sua eccezionale velocità e, cosa più importante, seguiremo il processo di esecuzione del modello per analizzare sia immagini che video.

Cosa c'è di nuovo in YOLO-World

Se parliamo di modelli tradizionali di rilevamento di oggetti come Faster R-CNN, Single Shot Detectors (SSD) o YOLO, questi modelli si limitano a rilevare oggetti all'interno di categorie predefinite (come le 80 categorie nel set di dati COCO). Questo è un aspetto di tutti i modelli di apprendimento supervisionato. Recentemente, i ricercatori hanno rivolto la loro attenzione allo sviluppo di modelli di vocabolario aperto. Questi modelli mirano a rispondere alla necessità di rilevare nuovi oggetti senza la necessità di creare nuovi set di dati, un processo che richiede tempo e denaro.

Il modello YOLO-World presenta un metodo all'avanguardia in tempo reale basato su Ultralytics YOLOv8, rivoluzionando le attività di rilevamento del vocabolario aperto. Questo progresso consente l'identificazione di vari oggetti nelle immagini utilizzando testi descrittivi. Con requisiti computazionali ridotti pur mantenendo prestazioni di alto livello, YOLO-World si rivela adattabile a un'ampia gamma di applicazioni basate sulla visione.

Confronto tra curve di velocità e precisione. I modelli valutati sul valore minimo LVIS e sulle velocità di inferenza sono stati misurati su una NVIDIA V100 senza TensorRT. La dimensione del cerchio rappresenta la dimensione del modello. Fonte

Architettura del modello

YOLO-World, a differenza dei tradizionali rilevatori YOLO, integra l'input di testo utilizzando un codificatore di testo per codificare gli incorporamenti di testo. Contemporaneamente, un codificatore di immagini elabora l'immagine di input in caratteristiche multiscala. Il modello RepVL-PAN unisce quindi le caratteristiche di immagine e testo a più livelli. Infine, YOLO-World prevede che i riquadri di delimitazione e gli incorporamenti di oggetti corrispondano alle categorie o ai nomi menzionati nel testo di input.

L'architettura di YOLO-World è costituita da un rilevatore YOLO, un codificatore di testo e una rete di aggregazione del percorso visione-linguaggio riparametrizzabile ( RepVL-PAN).

YOLO-World si basa principalmente su YOLOv8, che include una dorsale Darknet che funge da codificatore di immagini, una rete di aggregazione di percorsi (PAN) per generare piramidi di funzionalità multiscala e una testa sia per la regressione del riquadro di delimitazione che per gli incorporamenti di oggetti.

Il rilevatore cattura caratteristiche multiscala dall'immagine di input, un codificatore di testo per convertire il testo in incorporamenti, utilizza una rete per la fusione multilivello di caratteristiche dell'immagine e incorporamenti di testo e incorpora una rete personalizzata per lo stesso scopo.

L'utilizzo di una rete CNN più leggera e veloce come spina dorsale è uno dei motivi della velocità di YOLO-World. Il secondo è il paradigma "procedi e poi rileva". Invece di codificare il tuo prompt ogni volta che esegui l'inferenza, YOLO-World utilizza Clip per convertire il testo in incorporamenti. Tali incorporamenti vengono quindi memorizzati nella cache e riutilizzati, evitando la necessità di codifica del testo in tempo reale.

YOLO-World raggiunge la sua velocità attraverso due strategie principali. In primo luogo, adotta una rete CNN più leggera e veloce come spina dorsale. In secondo luogo, utilizza un paradigma “avvisa e rileva”. A differenza dei metodi tradizionali che codificano le istruzioni di testo ogni volta durante l'inferenza, YOLO-World utilizza Clip per convertire il testo in incorporamenti. Questi incorporamenti vengono memorizzati nella cache e riutilizzati, eliminando la necessità di codifica del testo in tempo reale, migliorando così la velocità e l'efficienza.

Demo del codice

Cominciamo controllando la GPU in esecuzione

!nvidia-smi

Ora che abbiamo l'output confermato che la sessione CUDA ha il supporto GPU, è il momento di installare le librerie necessarie.

!pip install -U ultralytics

Una volta soddisfatto il requisito, passare alla fase successiva di importazione delle librerie

import ultralytics
ultralytics.__version__
Output-

'8.1.28'
from ultralytics import YOLOWorld
Initialize a YOLO-World model
model = YOLOWorld('yolov8s-world.pt')  # or select yolov8m/l-world.pt for different sizes
Execute inference with the YOLOv8s-world model on the specified image
results = model.predict('dog.png',save=True)
Show results
results[0].show()

Ora, se vogliamo che il modello preveda determinati oggetti nell'immagine senza addestramento, possiamo farlo semplicemente passando l'argomento alla funzione model.set_classes().

Usiamo la stessa immagine e proviamo a prevedere lo zaino, un camion e un'auto che si trovano sullo sfondo.

# Define custom classes
model.set_classes(["backpack", "car","dog","person","truck"])
Execute prediction for specified categories on an image
results = model.predict('/notebooks/data/dog.jpg', save=True)
Show results
results[0].show()

Successivamente, proviamo a sperimentare con un'altra immagine e qui prevederemo solo un paio di scarpe.

# Define custom classes
model.set_classes(["shoes"])Execute prediction for specified categories on an image
results = model.predict('/notebooks/data/Two-dogs-on-a-walk.jpg', save=True)
Show results
results[0].show()

Rilevamento di oggetti utilizzando un video

Proviamo ora il modello "yolov8s-world.pt" per rilevare oggetti in un video. Eseguiremo il seguente codice per eseguire il rilevamento dell'oggetto utilizzando un video salvato.

!yolo detect predict model=yolov8s-world.pt source="/content/pexels-anthony-shkraba-8064146 (1440p).mp4"

Questo blocco di codice genererà una cartella "runs" nella directory corrente. All'interno di questa cartella troverai il video salvato nella sottocartella "predict", che a sua volta risiede nella cartella "detect".

Modelli disponibili

Si prega di trovare la tabella qui sotto che contiene i dettagli dei modelli disponibili e le attività che supportano.

Ultralytics offre un'API Python e comandi CLI progettati per uno sviluppo user-friendly, semplificando il processo di sviluppo.

Funzionalità di rilevamento con categorie definite

Abbiamo provato le capacità di rilevamento del modello con le nostre categorie definite. Ecco alcune immagini che abbiamo provato con YOLOV8m. Non esitate a provare altri modelli di YOLO-World.

Conclusione

In questo articolo presentiamo YOLO-World, un rilevatore avanzato in tempo reale che mira a migliorare l'efficienza e la capacità di vocabolario aperto in contesti pratici. Questo approccio è una nuova aggiunta alle tradizionali architetture YOLO per supportare il pre-addestramento e il rilevamento di vocabolario aperto, utilizzando RepVL-PAN per integrare in modo efficace le informazioni sulla visione e sul linguaggio. I nostri esperimenti con immagini diverse dimostrano la velocità e le prestazioni superiori di YOLO-World, mostrando i vantaggi del pre-allenamento del linguaggio visivo su modelli compatti. Immaginiamo YOLO-World come un nuovo punto di riferimento per le attività di rilevamento di vocaboli aperti nel mondo reale.

Riferimenti

  • Documento di ricerca originale
  • Blog YOLO di Ultralitici
  • YOLO-World: spiegazione del rilevamento di oggetti in tempo reale e zero-shot

Articoli correlati: