Skip to main content

YOLOE: vedere qualsiasi cosa in tempo reale

Introduzione

Opzioni di prompting di YOLOE

YOLOE (Vedere qualsiasi cosa in tempo reale) è un nuovo progresso nei modelli YOLO zero-shot basati su prompt, progettati per open-vocabulary rilevamento e segmentazione. A differenza dei precedenti modelli YOLO limitati a categorie fisse, YOLOE utilizza prompt di testo, immagine o vocabolario interno, consentendo il rilevamento in tempo reale di qualsiasi classe di oggetti. Costruito su YOLOv10 e ispirato a YOLO-World, YOLOE raggiunge prestazioni zero-shot allo stato dell'arte con un impatto minimo su velocità e precisione.



Watch: How to use Ultralytics YOLOE-26 (New) | Open Vocabulary & Real-Time Seeing Anything 🚀

Rispetto ai modelli YOLO precedenti, YOLOE aumenta significativamente l'efficienza e la precisione. Migliora di +3.5 AP rispetto a YOLO-Worldv2 su LVIS, utilizzando solo un terzo delle risorse di addestramento e raggiungendo velocità di inferenza 1.4× superiori. Ottimizzato su COCO, YOLOE-v8-large supera YOLOv8-L di 0.1 mAP, utilizzando quasi 4× meno tempo di addestramento. Questo dimostra l'eccezionale equilibrio di precisione, efficienza e versatilità di YOLOE. Le sezioni seguenti esplorano l'architettura di YOLOE, i confronti dei benchmark e l'integrazione con il framework Ultralytics.

Panoramica dell'architettura

YOLOE Architecture

YOLOE mantiene la struttura YOLO standard: un backbone convoluzionale (ad esempio, CSP-Darknet) per l'estrazione di caratteristiche, un neck (ad esempio, PAN-FPN) per la fusione multi-scala e una anchor-free, decoupled head di rilevamento (come in YOLOv8/YOLO11) che predice indipendentemente l'oggetto, le classi e i box. YOLOE introduce tre nuovi moduli che consentono il rilevamento open-vocabulary:

  • Re-parameterizable Region-Text Alignment (RepRTA): Supporta il rilevamento tramite prompt di testo rifinendo il testo embeddings (ad esempio, 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 con testo arbitrario (ad esempio, un "semaforo" non visto) senza penalità in fase di runtime.

  • Semantic-Activated Visual Prompt Encoder (SAVPE): Abilita il rilevamento tramite prompt visivo tramite un ramo di embedding leggero. Dato un'immagine di riferimento, SAVPE codifica caratteristiche 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 oggetti tramite lookup di similarità degli embedding, gestendo in modo efficiente ampi spazi di etichette in fase di inferenza.

Inoltre, YOLOE integra in tempo reale instance segmentation estendendo la head di rilevamento 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 alcun costo di inferenza quando usati come un normale YOLO a set chiuso. Dopo l'addestramento, i parametri di YOLOE possono essere ri-parametrizzati in una head YOLO standard, preservando identici FLOP e velocità (ad esempio, eguagliando YOLO11 esattamente).

Modelli disponibili, task supportati 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, e Esporta, contrassegnate con ✅ per le modalità supportate e ❌ per quelle non supportate.

Modelli con Prompt Testuale/Visivo

Tipo di modelloPesi preaddestratiAttività supportateInferenzaValidazioneAddestramentoEsporta
YOLOE-11Syoloe-11s-seg.ptSegmentazione delle istanze
YOLOE-11Myoloe-11m-seg.ptSegmentazione delle istanze
YOLOE-11Lyoloe-11l-seg.ptSegmentazione delle istanze
YOLOE-v8Syoloe-v8s-seg.ptSegmentazione delle istanze
YOLOE-v8Myoloe-v8m-seg.ptSegmentazione delle istanze
YOLOE-v8Lyoloe-v8l-seg.ptSegmentazione delle istanze
YOLOE-26Nyoloe-26n-seg.ptSegmentazione delle istanze
YOLOE-26Syoloe-26s-seg.ptSegmentazione delle istanze
YOLOE-26Myoloe-26m-seg.ptSegmentazione delle istanze
YOLOE-26Lyoloe-26l-seg.ptSegmentazione delle istanze
YOLOE-26Xyoloe-26x-seg.ptSegmentazione delle istanze

Modelli senza Prompt

Tipo di modelloPesi preaddestratiAttività supportateInferenzaValidazioneAddestramentoEsporta
YOLOE-11S-PFyoloe-11s-seg-pf.ptSegmentazione delle istanze
YOLOE-11M-PFyoloe-11m-seg-pf.ptSegmentazione delle istanze
YOLOE-11L-PFyoloe-11l-seg-pf.ptSegmentazione delle istanze
YOLOE-v8S-PFyoloe-v8s-seg-pf.ptSegmentazione delle istanze
YOLOE-v8M-PFyoloe-v8m-seg-pf.ptSegmentazione delle istanze
YOLOE-v8L-PFyoloe-v8l-seg-pf.ptSegmentazione delle istanze
YOLOE-26N-PFyoloe-26n-seg-pf.ptSegmentazione delle istanze
YOLOE-26S-PFyoloe-26s-seg-pf.ptSegmentazione delle istanze
YOLOE-26M-PFyoloe-26m-seg-pf.ptSegmentazione delle istanze
YOLOE-26L-PFyoloe-26l-seg-pf.ptSegmentazione delle istanze
YOLOE-26X-PFyoloe-26x-seg-pf.ptSegmentazione delle istanze
Prestazioni di YOLOE-26

Per benchmark dettagliati sulle prestazioni dei modelli YOLOE-26, consulta la Documentazione di YOLO26.

Esempi di utilizzo

I modelli YOLOE sono facili da integrare nelle tue applicazioni Python. Ultralytics fornisce API Python e comandi CLI user-friendly per semplificare lo sviluppo.

Utilizzo dell'addestramento

Fine-tuning su un dataset personalizzato

Puoi eseguire il fine-tuning di qualsiasi modello YOLOE pre-addestrato sul tuo dataset YOLO personalizzato per attività sia di rilevamento che di segmentazione di istanze.



Watch: How to Train YOLOE on Car Parts Segmentation Dataset | Open-Vocabulary Model, Prediction & Export 🚀
Esempio

Segmentazione di istanze

Il fine-tuning di un checkpoint YOLOE pre-addestrato segue principalmente la procedura standard di addestramento YOLO. La differenza principale consiste nell'impostare esplicitamente YOLOEPESegTrainer come parametro trainer per 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 oggetti

Tutti i modelli YOLOE pre-addestrati eseguono la segmentazione di istanze per impostazione predefinita. Per utilizzare questi checkpoint pre-addestrati per addestrare un modello di rilevamento, inizializza un modello di rilevamento da zero usando la configurazione YAML, quindi carica il checkpoint di segmentazione pre-addestrato 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
)

Utilizzo di Predict

YOLOE supporta sia prompt testuali che visivi. Usare i prompt è semplice: basta passarli attraverso il predict come mostrato di seguito:

Esempio

I prompt testuali ti consentono di specificare le classi che desideri rilevare tramite descrizioni testuali. Il seguente codice mostra come puoi 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()

Utilizzo di Val

La validazione del modello su un dataset è semplificata come segue:

Esempio
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")

Utilizzo Esportazione

Il processo di esportazione è simile ad altri modelli YOLO, con l'ulteriore flessibilità di gestire prompt testuali e visivi:

Esempio
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()

Addestra Modelli Ufficiali

Prepara i dataset

Nota

L'addestramento dei modelli YOLOE ufficiali richiede annotazioni di segmentazione per i dati di addestramento, ecco lo script fornito dal team ufficiale che converte i dataset in annotazioni di segmentazione, potenziato dai modelli SAM2.1. Oppure puoi scaricare direttamente il materiale fornito Processed Segment Annotations nella tabella seguente fornita dal team ufficiale.

  • Dati di addestramento
  • Dati di Val
DatasetTipoFile di Annotazione
LVIS minivalRilevamentominival.txt

Avvio dell'addestramento da zero

Nota

Visual Prompt i modelli vengono sottoposti a fine-tuning basandosi su modelli Text Prompt ben addestrati.

Esempio
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",
)

Confronto 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) rispetto ai corrispondenti modelli a set chiuso:

ModelloCOCO mAP50-95LVIS mAP50-95Velocità di inferenza (T4)ParametriGFLOPs (640px)
YOLOv8-L (set chiuso)52.9%-9.06 ms (110 FPS)43.7 M165.2 B
YOLO11-L (set chiuso)53.5%-6.2 ms (161 FPS)26,2 M86,9 B
YOLOE-L (open-vocab)52,6%35,2%6.2 ms (161 FPS)26,2 M86,9 B
YOLOE26-L (open-vocab)-36,8%6.2 ms (161 FPS)32,3 M88,3 B

YOLOE-L condivide l'architettura di YOLO11-L e YOLOE26-L condivide l'architettura di YOLO26-L, ottenendo una velocità di inferenza e GFLOP simili.

YOLOE26-L raggiunge 36,8% LVIS mAP con 32,3M parametri e 88,3B FLOPs, elaborando immagini 640×640 a 6,2 ms (161 FPS) su GPU T4. Questo rappresenta un miglioramento rispetto ai 35,2% LVIS mAP di YOLOE-L, mantenendo la stessa velocità di inferenza. Fondamentalmente, i moduli open-vocabulary di YOLOE comportano alcun costo di inferenza, dimostrando un design "no free lunch trade-off".

Per i task zero-shot, YOLOE26 supera significativamente i precedenti detector open-vocabulary: su LVIS, YOLOE26-S raggiunge 29,9% mAP, superando YOLO-World-S di +11,4 AP, mentre YOLOE26-L raggiunge 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.

Nota

Condizioni di benchmark: I risultati di YOLOE provengono da modelli pre-addestrati su Objects365, GoldG e LVIS, poi fine-tuned o valutati su COCO. Il leggero vantaggio in mAP di YOLOE rispetto a YOLOv8 deriva da un 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.

Confronto con i modelli precedenti

YOLOE introduce notevoli progressi rispetto ai precedenti modelli YOLO e ai detector open-vocabulary:

  • YOLOE vs YOLOv5: YOLOv5 offriva un buon equilibrio tra velocità e precisione, 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 superiore (52,6% contro ~50% mAP di YOLOv5 su COCO) e integra l'instance segmentation, a differenza di YOLOv5.

  • YOLOE vs YOLOv8: YOLOE estende l'architettura riprogettata di YOLOv8's, ottenendo un'accuratezza simile o superiore (52,6% mAP con ~26M parametri vs 52,9% con ~44M 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 non visti (es. "bird scooter" o "peace symbol") tramite prompt, a differenza del design closed-set di YOLOv8.

  • YOLOE vs YOLO11: YOLO11 migliora YOLOv8 con un'efficienza maggiore e meno parametri (riduzione di ~22%). YOLOE eredita questi guadagni direttamente, eguagliando la velocità di inferenza e il numero di parametri di YOLO11 (~26M parametri), aggiungendo al contempo open-vocabulary detection e segmentation. Negli scenari closed-set, 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's, ereditando il suo design end-to-end senza NMS per un'inferenza più rapida. Su LVIS, YOLOE26-L raggiunge 36,8% mAP, migliorando i 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), offrendo maggiore flessibilità per diversi scenari di distribuzione.

  • YOLOE26 vs precedenti detector open-vocabulary: I modelli open-vocab precedenti (GLIP, OWL-ViT, YOLO-World) facevano molto affidamento sui transformers visione-linguaggio, portando a un'inferenza lenta. Su LVIS, YOLOE26-S raggiunge 29,9% mAP (+11,4 AP rispetto a YOLO-World-S) e YOLOE26-L raggiunge 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 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 segmentation e introducono una potente rilevazione open-world. YOLOE26 porta ulteriormente avanti l'architettura con un'inferenza end-to-end senza NMS da YOLO26, rendendola ideale per applicazioni open-vocabulary in tempo reale.

Casi d'uso e applicazioni

La rilevazione e segmentation open-vocabulary di YOLOE consentono diverse applicazioni oltre ai tradizionali modelli a classi fisse:

  • Open-World Object Detection: Ideale per scenari dinamici come robotica, dove i robot riconoscono oggetti precedentemente non visti utilizzando prompt, o sistemi di sicurezza che si adattano rapidamente a nuove minacce (es. articoli pericolosi) senza riaddestramento.

  • Few-Shot e One-Shot Detection: Utilizzando prompt visivi (SAVPE), YOLOE apprende rapidamente nuovi oggetti da singole immagini di riferimento—perfetto per l'ispezione industriale (identificazione immediata di parti o difetti) o sorveglianza personalizzata, consentendo ricerche visive con una configurazione minima.

  • Large-Vocabulary & Long-Tail Recognition: Dotato di un vocabolario di oltre 1000 classi, YOLOE eccelle in attività come il monitoraggio della biodiversità (rilevamento di specie rare), collezioni museali, inventario al dettaglio, o e-commerce, identificando in modo affidabile molte classi senza un esteso addestramento per singola classe.

  • Interactive Detection and Segmentation: YOLOE supporta applicazioni interattive in tempo reale come il recupero ricercabile di video/immagini, realtà aumentata (AR), e intuitivo editing di immagini, guidato da input naturali (testo o prompt visivi). Gli utenti possono isolare, identificare o modificare dinamicamente gli oggetti con precisione utilizzando maschere di segmentazione.

  • Etichettatura automatica dei dati e bootstrapping: YOLOE facilita la creazione rapida di dataset fornendo annotazioni iniziali di BBox e segmentazione, riducendo significativamente gli sforzi di etichettatura manuale. Particolarmente utile 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, il che è particolarmente utile per la imaging medico, microscopia, o analisi di immagini satellitari, identificando automaticamente e segmentando con precisione le strutture senza modelli pre-addestrati specializzati. A differenza di modelli come SAM, YOLOE riconosce e segmenta simultaneamente gli oggetti in automatico, aiutando in attività come creazione di contenuti o comprensione della scena.

In tutti questi casi d'uso, il vantaggio principale di YOLOE è la versatilità, fornendo un modello unificato per il rilevamento, il riconoscimento e la segmentazione in scenari dinamici. La sua efficienza garantisce prestazioni in tempo reale su dispositivi con risorse limitate, ideale per la robotica, guida autonoma, la difesa e oltre.

Suggerimento

Scegli la modalità di YOLOE in base alle tue esigenze:

  • Modalità closed-set: Per attività a classi fisse (massima velocità e precisione).
  • Modalità con prompt: Aggiungi nuovi oggetti rapidamente tramite testo o prompt 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.

Addestramento e inferenza

YOLOE si integra perfettamente con l'Ultralytics Python API e CLI, in modo simile ad altri modelli YOLO (YOLOv8, YOLO-World). Ecco come iniziare rapidamente:

Addestramento e inferenza con YOLOE
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 output

Qui, 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 BBox, maschere ed etichette.

Altre attività supportate

  • Validazione: Valuta facilmente la precisione con model.val() o yolo val.
  • Esportazione: Esporta i modelli YOLOE (model.export()) in ONNX, TensorRT, ecc., facilitando il deployment.
  • Tracking: YOLOE supporta il tracciamento degli oggetti (yolo track) quando integrato, utile per tracciare classi guidate da prompt nei video.
Nota

YOLOE include automaticamente le maschere di segmentazione nei risultati di inferenza (results[0].masks), semplificando attività pixel-precise come l'estrazione o la misurazione di oggetti senza bisogno di modelli separati.

Guida introduttiva

Configura rapidamente YOLOE con Ultralytics seguendo questi passaggi:

  1. Installazione: Installa o aggiorna il pacchetto Ultralytics:

    pip install -U ultralytics
  2. Scarica i pesi di YOLOE: I modelli YOLOE pre-addestrati (ad es. YOLOE-v8-S/L, varianti YOLOE-11) sono disponibili nelle release GitHub di YOLOE. Scarica semplicemente il .pt desiderato da caricare nella classe YOLO di Ultralytics.

  3. Requisiti hardware:

    • Inferenza: GPU consigliata (NVIDIA con ≥4-8GB VRAM). I modelli piccoli funzionano in modo efficiente su GPU edge (ad es. Jetson) o CPU a risoluzioni inferiori. Per inferenza ad alte prestazioni su workstation compatte, vedi il nostro NVIDIA DGX Spark.
    • Addestramento: Il fine-tuning di YOLOE su dati personalizzati richiede solitamente solo una GPU. L'ampio pre-addestramento a vocabolario aperto (LVIS/Objects365) utilizzato dagli autori ha richiesto una potenza di calcolo sostanziale (8× GPU RTX 4090).
  4. Configurazione: Le configurazioni YOLOE utilizzano file YAML standard di Ultralytics. Le configurazioni predefinite (ad es. yoloe-26s-seg.yaml) solitamente sono sufficienti, ma puoi modificare backbone, classi o dimensioni dell'immagine secondo necessità.

  5. Esecuzione di YOLOE:

    • Inferenza rapida (senza prompt):

      yolo predict model=yoloe-26s-seg-pf.pt source="image.jpg"
    • Rilevamento con prompt (esempio di prompt di testo):

      from ultralytics import YOLO
      
      model = YOLO("yoloe-26s-seg.pt")
      model.set_classes(["bowl", "apple"])
      results = model.predict("kitchen.jpg")
      results[0].save()
  6. 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 overhead a meno che non si utilizzino prompt. I prompt di testo hanno un impatto minimo; i prompt visivi leggermente di più.
    • Comportamento NMS: YOLOE utilizza automaticamente agnostic_nms=True durante la previsione, unendo le BBox sovrapposte tra le classi. Questo previene rilevamenti duplicati quando lo stesso oggetto corrisponde a più categorie nell'ampio vocabolario di YOLOE (1200+ classi LVIS). Puoi ignorare questo comportamento passando agnostic_nms=False esplicitamente.
    • Inferenza batch: Supportata direttamente (model.predict([img1, img2])). Per prompt specifici per immagine, esegui le immagini singolarmente.

Il metodo La documentazione di Ultralytics fornisce ulteriori risorse. YOLOE ti consente di esplorare facilmente potenti capacità open-world all'interno del familiare ecosistema YOLO.

Suggerimento

Pro Tip: Per massimizzare la precisione zero-shot di YOLOE, esegui il fine-tuning dai checkpoint forniti anziché addestrare da zero. Usa parole di prompt allineate con le comuni etichette di addestramento (vedi categorie LVIS) per migliorare la precisione di rilevamento.

Citazioni e ringraziamenti

Se YOLOE ha contribuito alla tua ricerca o al tuo progetto, cita il paper originale di Ao Wang, Lihao Liu, Hui Chen, Zijia Lin, Jungong Han, e Guiguang Ding da Tsinghua University:

Citazione
@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, il paper originale su YOLOE è disponibile su arXiv. Il codice sorgente del progetto e risorse aggiuntive possono essere consultati tramite il loro repository GitHub.

FAQ

In che modo YOLOE differisce da YOLO-World?

Sebbene sia YOLOE che YOLO-World consentano il rilevamento open-vocabulary, YOLOE offre diversi vantaggi. YOLOE raggiunge una precisione superiore di +3.5 AP su LVIS, utilizzando 3 volte meno risorse di addestramento ed essendo 1.4 volte più veloce di YOLO-Worldv2. YOLOE supporta anche tre modalità di prompt (testo, visuale e vocabolario interno), mentre YOLO-World si concentra principalmente sui prompt di testo. Inoltre, YOLOE include capacità instance segmentation integrate, fornendo maschere pixel-precise per gli oggetti rilevati senza overhead aggiuntivo.

Posso usare YOLOE come un normale modello YOLO?

Sì, YOLOE può funzionare esattamente come un modello YOLO standard senza penalità di prestazioni. Quando utilizzato in modalità closed-set (senza prompt), i moduli open-vocabulary di YOLOE vengono ri-parametrizzati nella head di rilevamento standard, risultando in velocità e precisione identiche ai modelli YOLO11 equivalenti. Questo rende YOLOE estremamente versatile: puoi usarlo come rilevatore tradizionale per la massima velocità e poi passare alla modalità open-vocabulary solo quando necessario.

Che tipi di prompt posso usare con YOLOE?

YOLOE supporta tre tipi di prompt:

  1. Prompt di testo: Specifica le classi di oggetti usando il linguaggio naturale (ad es. "person", "traffic light", "bird scooter")
  2. Prompt visivi: Fornisci immagini di riferimento degli oggetti che desideri rilevare
  3. Vocabolario interno: Usa il vocabolario integrato di YOLOE con oltre 1200 categorie senza prompt esterni

Questa flessibilità ti consente di adattare YOLOE a vari scenari senza dover riaddestrare il modello, rendendolo particolarmente utile per ambienti dinamici in cui i requisiti di rilevamento cambiano frequentemente.

Come gestisce YOLOE la segmentazione delle istanze?

YOLOE integra la segmentazione delle istanze direttamente nella sua architettura estendendo la detection head con un ramo per la 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 accessibili tramite results[0].masks. Questo approccio unificato elimina la necessità di modelli separati per il rilevamento e la segmentazione, semplificando i flussi di lavoro per le applicazioni che richiedono confini degli oggetti precisi al pixel.

Come gestisce YOLOE l'inferenza con prompt personalizzati?

Simile a YOLO-World, YOLOE supporta una strategia "prompt-then-detect" che utilizza un vocabolario offline per migliorare l'efficienza. I prompt personalizzati come didascalie o categorie specifiche di oggetti vengono pre-codificati e memorizzati come embedding del vocabolario offline. Questo approccio semplifica 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()

Commenti