Link to this sectionYOLOE: Vedi tutto in tempo reale#
Link to this sectionIntroduzione#

YOLOE (Real-Time Seeing Anything) è un nuovo progresso nei modelli YOLO zero-shot con supporto per prompt, progettato per il rilevamento e la segmentazione a vocabolario aperto. A differenza dei precedenti modelli YOLO limitati a categorie fisse, YOLOE utilizza prompt basati su testo, immagini o vocabolari interni, consentendo il rilevamento in tempo reale di qualsiasi classe di oggetti. Costruito su YOLOv10 e ispirato a YOLO-World, YOLOE raggiunge prestazioni zero-shot all'avanguardia con un impatto minimo su velocità e precisione.
Watch: How to use Ultralytics YOLOE-26 (New) | Open Vocabulary & Real-Time Seeing Anything 🚀
Rispetto ai precedenti modelli YOLO, YOLOE incrementa significativamente efficienza e precisione. Migliora di +3,5 AP rispetto a YOLO-Worldv2 su LVIS, utilizzando solo un terzo delle risorse di addestramento e ottenendo velocità di inferenza 1,4 volte superiori. Ottimizzato su COCO, YOLOE-v8-large supera YOLOv8-L di 0,1 mAP, utilizzando quasi 4 volte meno tempo di addestramento. Questo dimostra l'eccezionale equilibrio di YOLOE tra precisione, efficienza e versatilità. Le sezioni seguenti esplorano l'architettura di YOLOE, i confronti di benchmark e l'integrazione con il framework Ultralytics.
Link to this sectionPanoramica dell'architettura#
YOLOE mantiene la struttura YOLO standard: una backbone convoluzionale (es. CSP-Darknet) per l'estrazione delle feature, un neck (es. PAN-FPN) per la fusione multi-scala e una head di rilevamento decoupled e senza anchor (come in YOLOv8/YOLO11) che predice indipendentemente objectness, classi e box. YOLOE introduce tre moduli innovativi che consentono il rilevamento a vocabolario aperto:
-
Re-parameterizable Region-Text Alignment (RepRTA): Supporta il rilevamento tramite prompt testuali raffinando gli embedding di testo (es. da CLIP) tramite una piccola rete ausiliaria. Durante l'inferenza, questa rete viene integrata nel modello principale, garantendo zero overhead. YOLOE rileva così oggetti etichettati tramite testo arbitrario (es. un non visto "semaforo") senza penalità durante l'esecuzione.
-
Semantic-Activated Visual Prompt Encoder (SAVPE): Abilita il rilevamento tramite prompt visivi attraverso un ramo di embedding leggero. Data un'immagine di riferimento, SAVPE codifica feature semantiche e di attivazione, condizionando il modello a rilevare oggetti visivamente simili: una capacità di rilevamento one-shot utile per loghi o parti specifiche.
-
Lazy Region-Prompt Contrast (LRPC): In modalità senza prompt, YOLOE esegue il riconoscimento open-set utilizzando embedding interni addestrati su ampi vocabolari (oltre 1200 categorie da LVIS e Objects365). Senza prompt o encoder esterni, YOLOE identifica gli oggetti tramite la similarità degli embedding, gestendo in modo efficiente ampi spazi di etichette durante l'inferenza.
Inoltre, YOLOE integra la segmentazione di istanze in tempo reale estendendo la detection head con un ramo di predizione delle maschere (simile a YOLACT o YOLOv8-Seg), aggiungendo un overhead minimo.
Fondamentalmente, i moduli open-world di YOLOE non introducono costi di inferenza quando utilizzati come un normale YOLO a classi chiuse. Post-addestramento, i parametri di YOLOE possono essere ri-parametrizzati in una head YOLO standard, preservando identici FLOP e velocità (es. corrispondendo esattamente a YOLO11).
Link to this sectionModelli disponibili, attività supportate e modalità operative#
Questa sezione descrive i modelli disponibili con i loro specifici pesi pre-addestrati, le attività che supportano e la loro compatibilità con varie modalità operative come Inferenza, Validazione, Addestramento ed Esportazione, indicate da ✅ per le modalità supportate e ❌ per quelle non supportate.
Link to this sectionModelli con prompt Testuali/Visivi#
| Tipo di modello | Pesi pre-addestrati | Attività supportate | Inferenza | Validazione | Addestramento | Esportazione |
|---|---|---|---|---|---|---|
| YOLOE-11S | yoloe-11s-seg.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11M | yoloe-11m-seg.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11L | yoloe-11l-seg.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8S | yoloe-v8s-seg.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8M | yoloe-v8m-seg.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8L | yoloe-v8l-seg.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26N | yoloe-26n-seg.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26S | yoloe-26s-seg.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26M | yoloe-26m-seg.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26L | yoloe-26l-seg.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26X | yoloe-26x-seg.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
Link to this sectionModelli senza Prompt#
| Tipo di modello | Pesi pre-addestrati | Attività supportate | Inferenza | Validazione | Addestramento | Esportazione |
|---|---|---|---|---|---|---|
| YOLOE-11S-PF | yoloe-11s-seg-pf.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11M-PF | yoloe-11m-seg-pf.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11L-PF | yoloe-11l-seg-pf.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8S-PF | yoloe-v8s-seg-pf.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8M-PF | yoloe-v8m-seg-pf.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8L-PF | yoloe-v8l-seg-pf.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26N-PF | yoloe-26n-seg-pf.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26S-PF | yoloe-26s-seg-pf.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26M-PF | yoloe-26m-seg-pf.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26L-PF | yoloe-26l-seg-pf.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26X-PF | yoloe-26x-seg-pf.pt | Segmentazione di istanze | ✅ | ✅ | ✅ | ✅ |
Per benchmark dettagliati delle prestazioni dei modelli YOLOE-26, consulta la Documentazione di YOLO26.
Link to this sectionEsempi di Utilizzo#
I modelli YOLOE sono facili da integrare nelle tue applicazioni Python. Ultralytics fornisce una Python API intuitiva e comandi CLI per ottimizzare lo sviluppo.
Link to this sectionUtilizzo per l'addestramento#
Link to this sectionFine-Tuning su dataset personalizzato#
Puoi effettuare il fine-tuning di qualsiasi modello YOLOE preaddestrato sul tuo dataset YOLO personalizzato per attività di rilevamento e segmentazione di istanze.
Watch: How to Train YOLOE on Car Parts Segmentation Dataset | Open-Vocabulary Model, Prediction & Export 🚀
Segmentazione di istanze
Il fine-tuning di un checkpoint YOLOE preaddestrato segue principalmente la procedura di addestramento standard YOLO. La differenza principale consiste nell'assegnare esplicitamente YOLOEPESegTrainer come parametro trainer a model.train():
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEPESegTrainer
model = YOLOE("yoloe-26s-seg.pt")
# Fine-tune on your segmentation dataset
results = model.train(
data="coco128-seg.yaml", # Segmentation dataset
epochs=80,
patience=10,
trainer=YOLOEPESegTrainer, # <- Important: use segmentation trainer
)Rilevamento di oggetti
Tutti i modelli YOLOE preaddestrati eseguono la segmentazione di istanze per impostazione predefinita. Per utilizzare questi checkpoint preaddestrati per addestrare un modello di rilevamento, inizializza un modello di rilevamento da zero usando la configurazione YAML, quindi carica il checkpoint di segmentazione preaddestrato della stessa scala. Nota che usiamo YOLOEPETrainer invece di YOLOEPESegTrainer poiché stiamo addestrando un modello di rilevamento:
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEPETrainer
# Initialize a detection model from a config
model = YOLOE("yoloe-26s.yaml")
# Load weights from a pretrained segmentation checkpoint (same scale)
model.load("yoloe-26s-seg.pt")
# Fine-tune on your detection dataset
results = model.train(
data="coco128.yaml", # Detection dataset
epochs=80,
patience=10,
trainer=YOLOEPETrainer, # <- Important: use detection trainer
)Link to this sectionUtilizzo di Predict#
YOLOE supporta prompt sia testuali che visivi. Usare i prompt è semplice: basta passarli attraverso il metodo predict come mostrato di seguito:
I prompt testuali ti consentono di specificare le classi che desideri rilevare attraverso descrizioni testuali. Il seguente codice mostra come usare YOLOE per rilevare persone e autobus in un'immagine:
from ultralytics import YOLOE
# Initialize a YOLOE model
model = YOLOE("yoloe-26l-seg.pt") # or yoloe-26s/m-seg.pt for different sizes
# Set text prompt to detect person and bus. You only need to do this once after you load the model.
model.set_classes(["person", "bus"])
# Run detection on the given image
results = model.predict("path/to/image.jpg")
# Show results
results[0].show()Link to this sectionUtilizzo di Val#
La validazione del modello su un dataset è semplificata come segue:
from ultralytics import YOLOE
# Create a YOLOE model
model = YOLOE("yoloe-26l-seg.pt") # or yoloe-26s/m-seg.pt for different sizes
# Conduct model validation on the COCO128-seg example dataset
metrics = model.val(data="coco128-seg.yaml")Link to this sectionUtilizzo dell'esportazione#
Il processo di esportazione è simile ad altri modelli YOLO, con l'aggiunta della flessibilità di gestire prompt testuali e visivi:
Le classi configurate con set_classes() (o tramite refer_image per i prompt visivi) vengono incorporate nei pesi esportati. Una volta esportato, il modello non può più accettare nuovi prompt: chiamare set_classes() o passare visual_prompts=... a predict() su un export caricato fallirà. Per cambiare le classi rilevate, riesporta dal checkpoint .pt originale con i nuovi prompt configurati. Il file esportato si comporta come un rilevatore YOLO standard e può anche essere caricato con YOLO() invece di YOLOE().
from ultralytics import YOLOE
# Select yoloe-26s/m-seg.pt for different sizes
model = YOLOE("yoloe-26l-seg.pt")
# Configure the set_classes() before exporting the model
model.set_classes(["person", "bus"])
export_model = model.export(format="onnx")
model = YOLOE(export_model)
# Run detection on the given image
results = model.predict("path/to/image.jpg")
# Show results
results[0].show()Link to this sectionAddestra modelli ufficiali#
Link to this sectionPrepara i dataset#
Training official YOLOE models needs segment annotations for train data, here's the script provided by official team that converts datasets to segment annotations, powered by SAM2.1 models. Or you can directly download the provided Processed Segment Annotations in following table provided by official team.
- Dati di addestramento
| Dataset | Tipo | Campioni | Box | Annotazioni di rilevamento grezze | Annotazioni di segmentazione processate |
|---|---|---|---|---|---|
| Objects365v1 | Rilevamento | 609k | 9621k | objects365_train.json | objects365_train_segm.json |
| GQA | Grounding | 621k | 3681k | final_mixed_train_no_coco.json | final_mixed_train_no_coco_segm.json |
| Flickr30k | Grounding | 149k | 641k | final_flickr_separateGT_train.json | final_flickr_separateGT_train_segm.json |
- Dati di validazione
| Dataset | Tipo | File di annotazione |
|---|---|---|
| LVIS minival | Rilevamento | minival.txt |
Link to this sectionAvvio dell'addestramento da zero#
I modelli Visual Prompt vengono perfezionati basandosi su modelli Text Prompt ben addestrati.
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOESegTrainerFromScratch
# Option 1: Use Python dictionary
data = dict(
train=dict(
yolo_data=["Objects365.yaml"],
grounding_data=[
dict(
img_path="flickr/full_images/",
json_file="flickr/annotations/final_flickr_separateGT_train_segm.json",
),
dict(
img_path="mixed_grounding/gqa/images",
json_file="mixed_grounding/annotations/final_mixed_train_no_coco_segm.json",
),
],
),
val=dict(yolo_data=["lvis.yaml"]),
)
# Option 2: Use YAML file (yoloe_data.yaml)
# train:
# yolo_data:
# - Objects365.yaml
# grounding_data:
# - img_path: flickr/full_images/
# json_file: flickr/annotations/final_flickr_separateGT_train_segm.json
# - img_path: mixed_grounding/gqa/images
# json_file: mixed_grounding/annotations/final_mixed_train_no_coco_segm.json
# val:
# yolo_data:
# - lvis.yaml
model = YOLOE("yoloe-26l-seg.yaml")
model.train(
data=data, # or data="yoloe_data.yaml" if using YAML file
batch=128,
epochs=30,
close_mosaic=2,
optimizer="AdamW",
lr0=2e-3,
warmup_bias_lr=0.0,
weight_decay=0.025,
momentum=0.9,
workers=4,
trainer=YOLOESegTrainerFromScratch,
device="0,1,2,3,4,5,6,7",
)Link to this sectionConfronto delle prestazioni di YOLOE#
YOLOE eguaglia o supera l'accuratezza dei modelli YOLO a set chiuso su benchmark standard come COCO e LVIS, senza compromettere la velocità o le dimensioni del modello. La tabella seguente confronta YOLOE-L (basato su YOLO11) e YOLOE26-L (basato su YOLO26) con i relativi modelli a set chiuso:
| Modello | COCO mAP50-95 | LVIS mAP50-95 | Velocità di inferenza (T4) | Parametri | GFLOPs (640px) |
|---|---|---|---|---|---|
| YOLOv8-L (a set chiuso) | 52,9% | - | 9,06 ms (110 FPS) | 43,7 M | 165,2 B |
| YOLO11-L (a set chiuso) | 53,5% | - | 6,2 ms (161 FPS) | 26,2 M | 86,9 B |
| YOLOE-L (open-vocab) | 52,6% | 35,2% | 6,2 ms (161 FPS) | 26,2 M | 86,9 B† |
| YOLOE26-L (open-vocab) | - | 36,8% | 6,2 ms (161 FPS) | 32,3 M | 88,3 B† |
† YOLOE-L condivide l'architettura di YOLO11-L e YOLOE26-L condivide l'architettura di YOLO26-L, con conseguente velocità di inferenza e GFLOP simili.
YOLOE26-L raggiunge il 36,8% LVIS mAP con 32,3M di parametri e 88,3B di FLOP, elaborando immagini 640×640 a 6,2 ms (161 FPS) su GPU T4. Questo migliora il 35,2% LVIS mAP di YOLOE-L mantenendo la stessa velocità di inferenza. Fondamentalmente, i moduli open-vocabulary di YOLOE non comportano alcun costo di inferenza, dimostrando un design a "compromesso a costo zero".
Per i compiti zero-shot, YOLOE26 supera significativamente i precedenti rilevatori open-vocabulary: su LVIS, YOLOE26-S raggiunge il 29,9% mAP, superando YOLO-World-S di +11,4 AP, mentre YOLOE26-L raggiunge il 36,8% mAP, superando YOLO-World-L di +10,0 AP. YOLOE26 mantiene un'inferenza efficiente a 161 FPS su GPU T4, ideale per applicazioni open-vocabulary in tempo reale.
Condizioni di benchmark: i risultati di YOLOE provengono da modelli pre-addestrati su Objects365, GoldG e LVIS, poi rifiniti o valutati su COCO. Il leggero vantaggio di mAP di YOLOE rispetto a YOLOv8 deriva dall'ampio pre-addestramento. Senza questo addestramento open-vocab, YOLOE eguaglia i modelli YOLO di dimensioni simili, confermando la sua accuratezza SOTA e la flessibilità open-world senza penalità di prestazioni.
Link to this sectionConfronto con i modelli precedenti#
YOLOE introduce notevoli progressi rispetto ai precedenti modelli YOLO e rilevatori open-vocabulary:
-
YOLOE vs YOLOv5: YOLOv5 offriva un buon equilibrio tra velocità e accuratezza, ma richiedeva il riaddestramento per nuove classi e utilizzava head basate su anchor. Al contrario, YOLOE è anchor-free e rileva dinamicamente nuove classi. YOLOE, basandosi sui miglioramenti di YOLOv8, raggiunge un'accuratezza maggiore (52,6% contro ~50% mAP di YOLOv5 su COCO) e integra la segmentazione delle istanze, a differenza di YOLOv5.
-
YOLOE vs YOLOv8: YOLOE estende l'architettura riprogettata di YOLOv8, raggiungendo un'accuratezza simile o superiore (52,6% mAP con ~26M di parametri rispetto al 52,9% con ~44M di parametri di YOLOv8-L). Riduce significativamente il tempo di addestramento grazie a un pre-addestramento più solido. Il progresso chiave è la capacità open-world di YOLOE, che rileva oggetti mai visti (es. "bird scooter" o "peace symbol") tramite prompt, a differenza del design a set chiuso di YOLOv8.
-
YOLOE vs YOLO11: YOLO11 migliora YOLOv8 con maggiore efficienza e meno parametri (riduzione di ~22%). YOLOE eredita direttamente questi guadagni, eguagliando la velocità di inferenza e il numero di parametri di YOLO11 (~26M di parametri), aggiungendo al contempo rilevamento e segmentazione open-vocabulary. Negli scenari a set chiuso, YOLOE è equivalente a YOLO11, ma aggiunge la cruciale adattabilità per rilevare classi non viste, ottenendo YOLO11 + capacità open-world senza compromettere la velocità.
-
YOLOE26 vs YOLOE (basato su YOLO11): YOLOE26 si basa sull'architettura di YOLO26, ereditando il suo design end-to-end senza NMS per un'inferenza più rapida. Su LVIS, YOLOE26-L raggiunge il 36,8% mAP, migliorando il 35,2% mAP di YOLOE-L. YOLOE26 offre tutte e cinque le scale di modello (N/S/M/L/X) rispetto alle tre di YOLOE (S/M/L), fornendo maggiore flessibilità per diversi scenari di distribuzione.
-
YOLOE26 vs precedenti rilevatori open-vocabulary: I precedenti modelli open-vocab (GLIP, OWL-ViT, YOLO-World) facevano molto affidamento su transformer visione-linguaggio, portando a un'inferenza lenta. Su LVIS, YOLOE26-S raggiunge il 29,9% mAP (+11,4 AP rispetto a YOLO-World-S) e YOLOE26-L raggiunge il 36,8% mAP (+10,0 AP rispetto a YOLO-World-L), mantenendo un'inferenza in tempo reale a 161 FPS su GPU T4. Rispetto agli approcci basati su transformer (es. GLIP), YOLOE26 offre un'inferenza ordini di grandezza più veloce, colmando efficacemente il divario di accuratezza-efficienza nel rilevamento open-set.
In sintesi, YOLOE e YOLOE26 mantengono la rinomata velocità ed efficienza di YOLO, superano i predecessori in accuratezza, integrano la segmentazione e introducono un potente rilevamento open-world. YOLOE26 fa progredire ulteriormente l'architettura con l'inferenza end-to-end senza NMS di YOLO26, rendendolo ideale per applicazioni open-vocabulary in tempo reale.
Link to this sectionCasi d'uso e applicazioni#
Il rilevamento e la segmentazione open-vocabulary di YOLOE consentono diverse applicazioni oltre ai tradizionali modelli a classe fissa:
-
Rilevamento oggetti Open-World: Ideale per scenari dinamici come la robotica, dove i robot riconoscono oggetti precedentemente mai visti usando prompt, o sistemi di sicurezza che si adattano rapidamente a nuove minacce (es. oggetti pericolosi) senza riaddestramento.
-
Rilevamento Few-Shot e One-Shot: Usando prompt visivi (SAVPE), YOLOE apprende rapidamente nuovi oggetti da singole immagini di riferimento—perfetto per l' ispezione industriale (identificazione istantanea di componenti o difetti) o la sorveglianza personalizzata, consentendo ricerche visive con una configurazione minima.
-
Riconoscimento a Vocabolario Ampio e Long-Tail: Dotato di un vocabolario di oltre 1000 classi, YOLOE eccelle in compiti come il monitoraggio della biodiversità (rilevamento di specie rare), collezioni museali, gestione dell'inventario retail, o e-commerce, identificando in modo affidabile molte classi senza un esteso addestramento per classe.
-
Rilevamento e segmentazione interattivi: YOLOE supporta applicazioni interattive in tempo reale come il recupero di video/immagini ricercabili, realtà aumentata (AR), e l' editing di immagini intuitivo, guidati da input naturali (testo o prompt visivi). Gli utenti possono isolare, identificare o modificare dinamicamente gli oggetti in modo preciso usando maschere di segmentazione.
-
Etichettatura dati automatizzata e Bootstrapping: YOLOE facilita la rapida creazione di dataset fornendo annotazioni iniziali di bounding box e segmentazione, riducendo significativamente gli sforzi di etichettatura umana. Particolarmente prezioso nell' analisi di grandi raccolte multimediali, dove può identificare automaticamente gli oggetti presenti, aiutando a costruire modelli specializzati più velocemente.
-
Segmentazione per qualsiasi oggetto: Estende le capacità di segmentazione a oggetti arbitrari tramite prompt—particolarmente utile per l' imaging medico, la microscopia, o l' analisi di immagini satellitari, identificando e segmentando automaticamente strutture senza modelli pre-addestrati specializzati. A differenza di modelli come SAM, YOLOE riconosce e segmenta contemporaneamente gli oggetti in modo automatico, aiutando in compiti come la creazione di contenuti o la comprensione della scena.
In tutti questi casi d'uso, il vantaggio fondamentale di YOLOE è la versatilità, fornendo un modello unificato per rilevamento, riconoscimento e segmentazione in scenari dinamici. La sua efficienza garantisce prestazioni in tempo reale su dispositivi con risorse limitate, ideale per robotica, guida autonoma, difesa e altro ancora.
Scegli la modalità di YOLOE in base alle tue esigenze:
- Modalità a set chiuso: Per compiti a classe fissa (massima velocità e accuratezza).
- Modalità con prompt: Aggiungi rapidamente nuovi oggetti tramite prompt testuali o visivi.
- Modalità open-set senza prompt: Rilevamento generale su molte categorie (ideale per catalogazione e scoperta).
Spesso, combinare le modalità—come la scoperta senza prompt seguita da prompt mirati—sfrutta appieno il potenziale di YOLOE.
Link to this sectionAddestramento e inferenza#
YOLOE si integra perfettamente con l' API Python Ultralytics e la CLI, in modo simile ad altri modelli YOLO (YOLOv8, YOLO-World). Ecco come iniziare rapidamente:
from ultralytics import YOLO
# Load pretrained YOLOE model and train on custom data
model = YOLO("yoloe-26s-seg.pt")
model.train(data="path/to/data.yaml", epochs=50, imgsz=640)
# Run inference using text prompts ("person", "bus")
model.set_classes(["person", "bus"])
results = model.predict(source="test_images/street.jpg")
results[0].save() # save annotated outputQui, YOLOE si comporta come un rilevatore standard per impostazione predefinita, ma passa facilmente al rilevamento con prompt specificando le classi (set_classes). I risultati contengono bounding box, maschere ed etichette.
Link to this sectionAltri compiti supportati#
- Validazione: Valuta facilmente l'accuratezza con
model.val()oyolo val. - Esportazione: Esporta i modelli YOLOE (
model.export()) in ONNX, TensorRT, ecc., facilitando la distribuzione. - Tracciamento: YOLOE supporta il tracciamento di oggetti (
yolo track) quando integrato, utile per tracciare classi con prompt nei video.
YOLOE include automaticamente le maschere di segmentazione nei risultati di inferenza (results[0].masks), semplificando compiti a precisione di pixel come l'estrazione o la misurazione di oggetti senza bisogno di modelli separati.
Link to this sectionIniziare#
Configura rapidamente YOLOE con Ultralytics seguendo questi passaggi:
-
Installazione: Installa o aggiorna il pacchetto Ultralytics:
pip install -U ultralytics -
Scarica i pesi di YOLOE: I modelli YOLOE pre-addestrati (es. YOLOE-v8-S/L, varianti YOLOE-11) sono disponibili dalle release GitHub di YOLOE. Basta scaricare il file
.ptdesiderato da caricare nella classe YOLO di Ultralytics. -
Requisiti Hardware:
- Inferenza: GPU consigliata (NVIDIA con ≥4-8GB VRAM). I modelli piccoli funzionano in modo efficiente su GPU edge (es. Jetson) o CPU a risoluzioni inferiori. Per inferenza ad alte prestazioni su workstation compatte, consulta la nostra guida NVIDIA DGX Spark.
- Addestramento: Il perfezionamento di YOLOE su dati personalizzati richiede solitamente una sola GPU. L'ampio pre-addestramento open-vocabulary (LVIS/Objects365) utilizzato dagli autori ha richiesto un calcolo sostanziale (8× GPU RTX 4090).
-
Configurazione: Le configurazioni di YOLOE usano file YAML Ultralytics standard. Le configurazioni predefinite (es.
yoloe-26s-seg.yaml) di solito sono sufficienti, ma puoi modificare backbone, classi o dimensioni dell'immagine secondo necessità. -
Esecuzione di YOLOE:
-
Inferenza rapida (senza prompt):
yolo predict model=yoloe-26s-seg-pf.pt source="image.jpg" -
Rilevamento con prompt (esempio di prompt testuale):
from ultralytics import YOLO model = YOLO("yoloe-26s-seg.pt") model.set_classes(["bowl", "apple"]) results = model.predict("kitchen.jpg") results[0].save()
-
-
Suggerimenti per l'integrazione:
- Nomi delle classi: Gli output predefiniti di YOLOE usano le categorie LVIS; usa
set_classes()per specificare le tue etichette. - Velocità: YOLOE non ha sovraccarico a meno che non si utilizzino prompt. I prompt testuali hanno un impatto minimo; quelli visivi leggermente di più.
- Comportamento NMS: YOLOE usa automaticamente
agnostic_nms=Truedurante la previsione, unendo i box sovrapposti tra le classi. Ciò previene rilevamenti duplicati quando lo stesso oggetto corrisponde a più categorie nell'ampio vocabolario di YOLOE (1200+ classi LVIS). Puoi sovrascriverlo passandoagnostic_nms=Falseesplicitamente. - Inferenza batch: Supportata direttamente (
model.predict([img1, img2])). Per prompt specifici per immagine, esegui le immagini individualmente.
- Nomi delle classi: Gli output predefiniti di YOLOE usano le categorie LVIS; usa
La documentazione di Ultralytics fornisce ulteriori risorse. YOLOE ti permette di esplorare facilmente potenti capacità open-world all'interno del familiare ecosistema YOLO.
Consiglio Pro: Per massimizzare l'accuratezza zero-shot di YOLOE, rifinisci dai checkpoint forniti invece di addestrare da zero. Usa parole di prompt allineate con le etichette di addestramento comuni (vedi categorie LVIS) per migliorare l'accuratezza del rilevamento.
Link to this sectionCitazioni e riconoscimenti#
Se YOLOE ha contribuito alla tua ricerca o progetto, ti preghiamo di citare l'articolo originale di Ao Wang, Lihao Liu, Hui Chen, Zijia Lin, Jungong Han, e Guiguang Ding della Tsinghua University:
@misc{wang2025yoloerealtimeseeing,
title={YOLOE: Real-Time Seeing Anything},
author={Ao Wang and Lihao Liu and Hui Chen and Zijia Lin and Jungong Han and Guiguang Ding},
year={2025},
eprint={2503.07465},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2503.07465},
}Per ulteriori letture, l'articolo originale di YOLOE è disponibile su arXiv. Il codice sorgente del progetto e risorse aggiuntive possono essere consultati tramite il loro repository GitHub.
Link to this sectionFAQ#
Link to this sectionIn cosa differisce YOLOE da YOLO-World?#
Sebbene sia YOLOE che YOLO-World consentano il rilevamento open-vocabulary, YOLOE offre diversi vantaggi. YOLOE raggiunge un'accuratezza superiore di +3,5 AP su LVIS utilizzando 3 volte meno risorse di addestramento e funzionando 1,4 volte più velocemente di YOLO-Worldv2. YOLOE supporta anche tre modalità di prompt (testuale, visivo e vocabolario interno), mentre YOLO-World si concentra principalmente sui prompt testuali. Inoltre, YOLOE include capacità di segmentazione delle istanze integrate, fornendo maschere a precisione di pixel per gli oggetti rilevati senza sovraccarico aggiuntivo.
Link to this sectionPosso usare YOLOE come un normale modello YOLO?#
Sì, YOLOE può funzionare esattamente come un modello YOLO standard senza alcuna penalità di prestazioni. Quando utilizzato in modalità a set chiuso (senza prompt), i moduli open-vocabulary di YOLOE vengono ri-parametrizzati nell'head di rilevamento standard, con velocità e accuratezza identiche ai modelli YOLO11 equivalenti. Questo rende YOLOE estremamente versatile: puoi usarlo come un rilevatore tradizionale per la massima velocità e poi passare alla modalità open-vocabulary solo quando necessario.
Link to this sectionChe tipi di prompt posso usare con YOLOE?#
YOLOE supporta tre tipi di prompt:
- Prompt testuali: Specifica le classi di oggetti usando il linguaggio naturale (es. "persona", "semaforo", "monopattino")
- Prompt visivi: Fornisci immagini di riferimento degli oggetti che desideri rilevare
- Vocabolario interno: Usa il vocabolario integrato di YOLOE di oltre 1200 categorie senza prompt esterni
Questa flessibilità ti consente di adattare YOLOE a vari scenari senza riaddestrare il modello, rendendolo particolarmente utile per ambienti dinamici in cui i requisiti di rilevamento cambiano frequentemente.
Link to this sectionCome gestisce YOLOE la segmentazione delle istanze?#
YOLOE integra la segmentazione delle istanze direttamente nella sua architettura estendendo la testa di rilevamento con un ramo di predizione delle maschere. Questo approccio è simile a YOLOv8-Seg ma funziona per qualsiasi classe di oggetti suggerita. Le maschere di segmentazione sono incluse automaticamente nei risultati dell'inferenza e possono essere consultate tramite results[0].masks. Questo approccio unificato elimina la necessità di modelli separati per il rilevamento e la segmentazione, snellendo i flussi di lavoro per le applicazioni che richiedono confini degli oggetti precisi al pixel.
Link to this sectionIn che modo YOLOE gestisce l'inferenza con prompt personalizzati?#
Similmente a YOLO-World, YOLOE supporta una strategia di "prompt-then-detect" che utilizza un vocabolario offline per migliorare l'efficienza. Prompt personalizzati come didascalie o categorie specifiche di oggetti vengono pre-codificati e memorizzati come embedding di vocabolario offline. Questo approccio ottimizza il processo di rilevamento senza richiedere riaddestramento. Puoi impostare dinamicamente questi prompt all'interno del modello per adattarlo a specifici compiti di rilevamento:
from ultralytics import YOLO
# Initialize a YOLOE model
model = YOLO("yoloe-26s-seg.pt")
# Define custom classes
model.set_classes(["person", "bus"])
# Execute prediction on an image
results = model.predict("path/to/image.jpg")
# Show results
results[0].show()