Link to this sectionYOLOE: Ver cualquier cosa en tiempo real#
Link to this sectionIntroducción#

YOLOE (Real-Time Seeing Anything) es un nuevo avance en modelos YOLO de tipo zero-shot y con prompts, diseñado para la detección y segmentación de vocabulario abierto. A diferencia de modelos YOLO anteriores limitados a categorías fijas, YOLOE utiliza prompts de texto, imagen o vocabulario interno, lo que permite la detección en tiempo real de cualquier clase de objeto. Construido sobre YOLOv10 e inspirado en YOLO-World, YOLOE logra un rendimiento zero-shot de vanguardia con un impacto mínimo en la velocidad y la precisión.
Watch: How to use Ultralytics YOLOE-26 (New) | Open Vocabulary & Real-Time Seeing Anything 🚀
En comparación con modelos YOLO anteriores, YOLOE mejora significativamente la eficiencia y la precisión. Mejora en +3.5 AP sobre YOLO-Worldv2 en LVIS mientras utiliza solo un tercio de los recursos de entrenamiento y logra velocidades de inferencia 1.4× más rápidas. Ajustado en COCO, YOLOE-v8-large supera a YOLOv8-L por 0.1 mAP, usando casi 4× menos tiempo de entrenamiento. Esto demuestra el excepcional equilibrio de YOLOE entre precisión, eficiencia y versatilidad. Las secciones siguientes exploran la arquitectura de YOLOE, las comparaciones de benchmarks y la integración con el framework de Ultralytics.
Link to this sectionDescripción general de la arquitectura#
YOLOE conserva la estructura estándar de YOLO: un backbone convolucional (p. ej., CSP-Darknet) para la extracción de características, un neck (p. ej., PAN-FPN) para la fusión multiescala y una head de detección sin anclas y desacoplada (como en YOLOv8/YOLO11) que predice la existencia de objetos, clases y cajas de forma independiente. YOLOE introduce tres módulos novedosos que permiten la detección de vocabulario abierto:
-
Re-parameterizable Region-Text Alignment (RepRTA): Admite la detección mediante prompts de texto refinando embeddings de texto (p. ej., de CLIP) a través de una pequeña red auxiliar. Durante la inferencia, esta red se integra en el modelo principal, lo que garantiza un consumo de recursos nulo. Por tanto, YOLOE detecta objetos etiquetados mediante texto arbitrario (p. ej., un "semáforo" no visto) sin penalizaciones en tiempo de ejecución.
-
Semantic-Activated Visual Prompt Encoder (SAVPE): Permite la detección mediante prompts visuales a través de una rama de embedding ligera. Dada una imagen de referencia, SAVPE codifica características semánticas y de activación, condicionando al modelo para detectar objetos visualmente similares; una capacidad de detección one-shot útil para logotipos o partes específicas.
-
Lazy Region-Prompt Contrast (LRPC): En el modo sin prompts, YOLOE realiza reconocimiento de conjunto abierto utilizando embeddings internos entrenados con vocabularios grandes (más de 1200 categorías de LVIS y Objects365). Sin prompts ni codificadores externos, YOLOE identifica objetos mediante una búsqueda de similitud de embeddings, manejando eficazmente grandes espacios de etiquetas durante la inferencia.
Además, YOLOE integra segmentación de instancias en tiempo real al extender la head de detección con una rama de predicción de máscaras (similar a YOLACT o YOLOv8-Seg), añadiendo un consumo mínimo.
Es crucial destacar que los módulos de mundo abierto de YOLOE no introducen ningún coste de inferencia cuando se utilizan como un YOLO normal de conjunto cerrado. Tras el entrenamiento, los parámetros de YOLOE pueden re-parametrizarse en una head YOLO estándar, preservando idénticos FLOPs y velocidad (p. ej., coincidiendo exactamente con YOLO11).
Link to this sectionModelos disponibles, tareas compatibles y modos de funcionamiento#
Esta sección detalla los modelos disponibles con sus pesos preentrenados específicos, las tareas que admiten y su compatibilidad con varios modos de operación como Inferencia, Validación, Entrenamiento y Exportación, denotados por ✅ para modos compatibles y ❌ para modos no compatibles.
Link to this sectionModelos con prompts de texto/visuales#
| Tipo de modelo | Pesos preentrenados | Tareas compatibles | Inferencia | Validación | Entrenamiento | Exportar |
|---|---|---|---|---|---|---|
| YOLOE-11S | yoloe-11s-seg.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11M | yoloe-11m-seg.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11L | yoloe-11l-seg.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8S | yoloe-v8s-seg.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8M | yoloe-v8m-seg.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8L | yoloe-v8l-seg.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26N | yoloe-26n-seg.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26S | yoloe-26s-seg.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26M | yoloe-26m-seg.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26L | yoloe-26l-seg.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26X | yoloe-26x-seg.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
Link to this sectionModelos sin prompts#
| Tipo de modelo | Pesos preentrenados | Tareas compatibles | Inferencia | Validación | Entrenamiento | Exportar |
|---|---|---|---|---|---|---|
| YOLOE-11S-PF | yoloe-11s-seg-pf.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11M-PF | yoloe-11m-seg-pf.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11L-PF | yoloe-11l-seg-pf.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8S-PF | yoloe-v8s-seg-pf.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8M-PF | yoloe-v8m-seg-pf.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8L-PF | yoloe-v8l-seg-pf.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26N-PF | yoloe-26n-seg-pf.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26S-PF | yoloe-26s-seg-pf.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26M-PF | yoloe-26m-seg-pf.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26L-PF | yoloe-26l-seg-pf.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26X-PF | yoloe-26x-seg-pf.pt | Segmentación de instancias | ✅ | ✅ | ✅ | ✅ |
Para obtener benchmarks de rendimiento detallados de los modelos YOLOE-26, consulta la Documentación de YOLO26.
Link to this sectionEjemplos de uso#
Los modelos YOLOE son fáciles de integrar en tus aplicaciones Python. Ultralytics proporciona una API de Python fácil de usar y comandos CLI para agilizar el desarrollo.
Link to this sectionUso de entrenamiento#
Link to this sectionAjuste fino en un dataset personalizado#
Puedes realizar un ajuste fino de cualquier modelo YOLOE preentrenado en tu propio dataset YOLO personalizado tanto para tareas de detección como de segmentación de instancias.
Watch: How to Train YOLOE on Car Parts Segmentation Dataset | Open-Vocabulary Model, Prediction & Export 🚀
Segmentación de instancias
El ajuste fino de un checkpoint preentrenado de YOLOE sigue mayormente el procedimiento de entrenamiento YOLO estándar. La diferencia clave es pasar explícitamente YOLOEPESegTrainer como el parámetro 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
)Detección de objetos
Todos los modelos YOLOE preentrenados realizan segmentación de instancias por defecto. Para usar estos checkpoints preentrenados para entrenar un modelo de detección, inicializa un modelo de detección desde cero usando la configuración YAML, luego carga el checkpoint de segmentación preentrenado de la misma escala. Ten en cuenta que usamos YOLOEPETrainer en lugar de YOLOEPESegTrainer ya que estamos entrenando un modelo de detección:
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 sectionUso de Predict#
YOLOE admite prompts tanto basados en texto como visuales. Usar prompts es sencillo: simplemente pásalos a través del método predict como se muestra a continuación:
Los prompts de texto te permiten especificar las clases que deseas detectar a través de descripciones textuales. El siguiente código muestra cómo puedes usar YOLOE para detectar personas y autobuses en una imagen:
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 sectionUso de Val#
La validación del modelo en un conjunto de datos se simplifica de la siguiente manera:
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 sectionUso de exportación#
El proceso de exportación es similar al de otros modelos YOLO, con la flexibilidad añadida de manejar prompts de texto y visuales:
Las clases configuradas con set_classes() (o mediante refer_image para prompts visuales) están integradas en los pesos exportados. Una vez exportado, el modelo ya no puede aceptar nuevos prompts: llamar a set_classes() o pasar visual_prompts=... a predict() en una exportación cargada fallará. Para cambiar las clases detectadas, vuelve a exportar desde el checkpoint .pt original con los nuevos prompts configurados. El archivo exportado se comporta como un detector YOLO estándar y también puede cargarse con YOLO() en lugar de 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 sectionEntrenar modelos oficiales#
Link to this sectionPreparar conjuntos de datos#
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.
- Datos de entrenamiento
| Conjunto de datos | Tipo | Muestras | Cajas (Boxes) | Anotaciones de detección sin procesar | Anotaciones de segmento procesadas |
|---|---|---|---|---|---|
| Objects365v1 | Detección | 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 |
- Datos de validación
| Conjunto de datos | Tipo | Archivos de anotación |
|---|---|---|
| LVIS minival | Detección | minival.txt |
Link to this sectionIniciar el entrenamiento desde cero#
Los modelos de Visual Prompt se ajustan a partir de modelos de Text Prompt bien entrenados.
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 sectionComparativa de rendimiento de YOLOE#
YOLOE iguala o supera la precisión de los modelos YOLO de conjunto cerrado en benchmarks estándar como COCO y LVIS, sin comprometer la velocidad ni el tamaño del modelo. La siguiente tabla compara YOLOE-L (basado en YOLO11) y YOLOE26-L (basado en YOLO26) frente a los modelos de conjunto cerrado correspondientes:
| Modelo | COCO mAP50-95 | LVIS mAP50-95 | Velocidad de inferencia (T4) | Parámetros | GFLOPs (640px) |
|---|---|---|---|---|---|
| YOLOv8-L (conjunto cerrado) | 52.9% | - | 9.06 ms (110 FPS) | 43.7 M | 165.2 B |
| YOLO11-L (conjunto cerrado) | 53.5% | - | 6.2 ms (161 FPS) | 26.2 M | 86.9 B |
| YOLOE-L (vocabulario abierto) | 52.6% | 35.2% | 6.2 ms (161 FPS) | 26.2 M | 86.9 B† |
| YOLOE26-L (vocabulario abierto) | - | 36.8% | 6.2 ms (161 FPS) | 32.3 M | 88.3 B† |
† YOLOE-L comparte la arquitectura de YOLO11-L y YOLOE26-L comparte la arquitectura de YOLO26-L, lo que resulta en una velocidad de inferencia y GFLOPs similares.
YOLOE26-L logra un 36.8% de LVIS mAP con 32.3M de parámetros y 88.3B de FLOPs, procesando imágenes de 640×640 a 6.2 ms (161 FPS) en una GPU T4. Esto supone una mejora respecto al 35.2% de LVIS mAP de YOLOE-L, manteniendo la misma velocidad de inferencia. Fundamentalmente, los módulos de vocabulario abierto de YOLOE no suponen ningún coste de inferencia, lo que demuestra un diseño de "compensación sin almuerzo gratis".
Para tareas de disparo cero (zero-shot), YOLOE26 supera significativamente a los detectores de vocabulario abierto anteriores: en LVIS, YOLOE26-S logra un 29.9% de mAP, superando a YOLO-World-S en +11.4 AP, mientras que YOLOE26-L logra un 36.8% de mAP, superando a YOLO-World-L en +10.0 AP. YOLOE26 mantiene una inferencia eficiente a 161 FPS en la GPU T4, ideal para aplicaciones de vocabulario abierto en tiempo real.
Condiciones de referencia: Los resultados de YOLOE provienen de modelos preentrenados en Objects365, GoldG y LVIS, y posteriormente ajustados o evaluados en COCO. La ligera ventaja en mAP de YOLOE sobre YOLOv8 proviene del extenso preentrenamiento. Sin este entrenamiento de vocabulario abierto, YOLOE iguala a los modelos YOLO de tamaño similar, confirmando su precisión SOTA y su flexibilidad de mundo abierto sin penalizaciones de rendimiento.
Link to this sectionComparativa con modelos anteriores#
YOLOE introduce avances notables respecto a los modelos YOLO y detectores de vocabulario abierto anteriores:
-
YOLOE vs YOLOv5: YOLOv5 ofrecía un buen equilibrio entre velocidad y precisión, pero requería reentrenamiento para nuevas clases y utilizaba cabezales basados en anclas. Por el contrario, YOLOE está libre de anclas y detecta clases nuevas de forma dinámica. YOLOE, basándose en las mejoras de YOLOv8, logra una mayor precisión (52.6% frente al ~50% de mAP de YOLOv5 en COCO) e integra la segmentación de instancias, a diferencia de YOLOv5.
-
YOLOE vs YOLOv8: YOLOE amplía la arquitectura rediseñada de YOLOv8, logrando una precisión igual o superior (52.6% mAP con ~26M de parámetros frente al 52.9% con ~44M de parámetros de YOLOv8-L). Reduce significativamente el tiempo de entrenamiento gracias a un preentrenamiento más sólido. El avance clave es la capacidad de mundo abierto de YOLOE, que detecta objetos invisibles (p. ej., "bird scooter" o "peace symbol") mediante avisos, a diferencia del diseño de conjunto cerrado de YOLOv8.
-
YOLOE vs YOLO11: YOLO11 mejora a YOLOv8 con una mayor eficiencia y menos parámetros (reducción de ~22%). YOLOE hereda estas ganancias directamente, igualando la velocidad de inferencia y el número de parámetros de YOLO11 (~26M de parámetros), al tiempo que añade detección y segmentación de vocabulario abierto. En escenarios de conjunto cerrado, YOLOE es equivalente a YOLO11, pero añade de forma crucial la adaptabilidad para detectar clases invisibles, logrando la capacidad de YOLO11 + mundo abierto sin comprometer la velocidad.
-
YOLOE26 vs YOLOE (basado en YOLO11): YOLOE26 se basa en la arquitectura de YOLO26, heredando su diseño integral sin NMS para una inferencia más rápida. En LVIS, YOLOE26-L logra un 36.8% de mAP, mejorando el 35.2% de mAP de YOLOE-L. YOLOE26 ofrece las cinco escalas de modelo (N/S/M/L/X) en comparación con las tres de YOLOE (S/M/L), lo que proporciona más flexibilidad para diferentes escenarios de despliegue.
-
YOLOE26 vs detectores de vocabulario abierto anteriores: Los modelos de vocabulario abierto anteriores (GLIP, OWL-ViT, YOLO-World) dependían en gran medida de los transformers de visión-lenguaje, lo que daba lugar a una inferencia lenta. En LVIS, YOLOE26-S logra un 29.9% de mAP (+11.4 AP sobre YOLO-World-S) y YOLOE26-L logra un 36.8% de mAP (+10.0 AP sobre YOLO-World-L), manteniendo una inferencia en tiempo real a 161 FPS en la GPU T4. En comparación con los enfoques basados en transformer (p. ej., GLIP), YOLOE26 ofrece una inferencia órdenes de magnitud más rápida, salvando eficazmente la brecha de precisión-eficiencia en la detección de conjuntos abiertos.
En resumen, YOLOE y YOLOE26 mantienen la famosa velocidad y eficiencia de YOLO, superan a sus predecesores en precisión, integran la segmentación e introducen una potente detección de mundo abierto. YOLOE26 avanza aún más en la arquitectura con una inferencia integral sin NMS de YOLO26, lo que lo hace ideal para aplicaciones de vocabulario abierto en tiempo real.
Link to this sectionCasos de uso y aplicaciones#
La detección y segmentación de vocabulario abierto de YOLOE permiten diversas aplicaciones más allá de los modelos tradicionales de clase fija:
-
Detección de objetos en el mundo abierto: Ideal para escenarios dinámicos como la robótica, donde los robots reconocen objetos previamente invisibles mediante avisos, o los sistemas de seguridad que se adaptan rápidamente a nuevas amenazas (p. ej., artículos peligrosos) sin necesidad de reentrenamiento.
-
Detección de pocos disparos (few-shot) y un solo disparo (one-shot): Utilizando avisos visuales (SAVPE), YOLOE aprende rápidamente nuevos objetos a partir de imágenes de referencia únicas, perfecto para la inspección industrial (identificar piezas o defectos al instante) o la vigilancia personalizada, lo que permite realizar búsquedas visuales con una configuración mínima.
-
Reconocimiento de vocabulario amplio y de cola larga: Equipado con un vocabulario de más de 1000 clases, YOLOE destaca en tareas como el seguimiento de la biodiversidad (detección de especies raras), colecciones de museos, gestión de inventario minorista o comercio electrónico, identificando de forma fiable muchas clases sin necesidad de un entrenamiento exhaustivo por clase.
-
Detección y segmentación interactivas: YOLOE admite aplicaciones interactivas en tiempo real, como la recuperación de vídeo/imágenes con capacidad de búsqueda, la realidad aumentada (RA) y la edición intuitiva de imágenes, impulsadas por entradas naturales (avisos de texto o visuales). Los usuarios pueden aislar, identificar o editar objetos de forma dinámica con precisión mediante máscaras de segmentación.
-
Etiquetado y bootstrapping de datos automatizados: YOLOE facilita la creación rápida de conjuntos de datos al proporcionar anotaciones iniciales de cajas delimitadoras y segmentación, lo que reduce significativamente los esfuerzos de etiquetado humano. Particularmente valioso en el análisis de grandes colecciones de medios, donde puede autoidentificar objetos presentes, ayudando a crear modelos especializados más rápido.
-
Segmentación para cualquier objeto: Amplía las capacidades de segmentación a objetos arbitrarios a través de avisos, lo que resulta especialmente beneficioso para la imágenes médicas, la microscopía o el análisis de imágenes por satélite, identificando y segmentando automáticamente estructuras con precisión sin necesidad de modelos preentrenados especializados. A diferencia de modelos como SAM, YOLOE reconoce y segmenta objetos simultáneamente de forma automática, ayudando en tareas como la creación de contenido o la comprensión de escenas.
En todos estos casos de uso, la ventaja principal de YOLOE es su versatilidad, al proporcionar un modelo unificado para la detección, el reconocimiento y la segmentación en escenarios dinámicos. Su eficiencia garantiza un rendimiento en tiempo real en dispositivos con recursos limitados, ideal para robótica, conducción autónoma, defensa y más.
Elige el modo de YOLOE según tus necesidades:
- Modo de conjunto cerrado: Para tareas de clase fija (máxima velocidad y precisión).
- Modo con avisos: Añade objetos nuevos rápidamente mediante avisos de texto o visuales.
- Modo de conjunto abierto sin avisos: Detección general en muchas categorías (ideal para catalogación y descubrimiento).
A menudo, combinar modos (como el descubrimiento sin avisos seguido de avisos específicos) aprovecha todo el potencial de YOLOE.
Link to this sectionEntrenamiento e inferencia#
YOLOE se integra perfectamente con la API de Python de Ultralytics y la CLI, de forma similar a otros modelos YOLO (YOLOv8, YOLO-World). Aquí tienes cómo empezar rápidamente:
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 outputAquí, YOLOE se comporta como un detector estándar por defecto, pero cambia fácilmente a la detección con avisos especificando clases (set_classes). Los resultados contienen cajas delimitadoras, máscaras y etiquetas.
Link to this sectionOtras tareas compatibles#
- Validación: Evalúa la precisión fácilmente con
model.val()oyolo val. - Exportación: Exporta modelos YOLOE (
model.export()) a ONNX, TensorRT, etc., facilitando el despliegue. - Seguimiento: YOLOE admite el seguimiento de objetos (
yolo track) cuando está integrado, útil para seguir clases con avisos en vídeos.
YOLOE incluye automáticamente máscaras de segmentación en los resultados de inferencia (results[0].masks), lo que simplifica tareas con precisión de píxeles como la extracción o medición de objetos sin necesidad de modelos separados.
Link to this sectionIntroducción#
Configura YOLOE rápidamente con Ultralytics siguiendo estos pasos:
-
Instalación: Instala o actualiza el paquete de Ultralytics:
pip install -U ultralytics -
Descarga de pesos de YOLOE: Los modelos YOLOE preentrenados (p. ej., YOLOE-v8-S/L, variantes de YOLOE-11) están disponibles en los lanzamientos de GitHub de YOLOE. Simplemente descarga el archivo
.ptque desees para cargarlo en la clase YOLO de Ultralytics. -
Requisitos de hardware:
- Inferencia: GPU recomendada (NVIDIA con ≥4-8GB de VRAM). Los modelos pequeños funcionan de forma eficiente en GPU de borde (p. ej., Jetson) o CPU a resoluciones más bajas. Para una inferencia de alto rendimiento en estaciones de trabajo compactas, consulta nuestra guía de NVIDIA DGX Spark.
- Entrenamiento: El ajuste de YOLOE en datos personalizados suele requerir solo una GPU. El extenso preentrenamiento de vocabulario abierto (LVIS/Objects365) utilizado por los autores requería un cálculo sustancial (8× GPU RTX 4090).
-
Configuración: Las configuraciones de YOLOE utilizan archivos YAML estándar de Ultralytics. Las configuraciones por defecto (p. ej.,
yoloe-26s-seg.yaml) suelen ser suficientes, pero puedes modificar el backbone, las clases o el tamaño de la imagen según sea necesario. -
Ejecución de YOLOE:
-
Inferencia rápida (sin avisos):
yolo predict model=yoloe-26s-seg-pf.pt source="image.jpg" -
Detección con avisos (ejemplo de aviso de texto):
from ultralytics import YOLO model = YOLO("yoloe-26s-seg.pt") model.set_classes(["bowl", "apple"]) results = model.predict("kitchen.jpg") results[0].save()
-
-
Consejos de integración:
- Nombres de clases: Las salidas de YOLOE por defecto utilizan categorías LVIS; usa
set_classes()para especificar tus propias etiquetas. - Velocidad: YOLOE no tiene sobrecarga a menos que se utilicen avisos. Los avisos de texto tienen un impacto mínimo; los avisos visuales un poco más.
- Comportamiento de NMS: YOLOE utiliza automáticamente
agnostic_nms=Truedurante la predicción, fusionando cajas superpuestas entre clases. Esto evita detecciones duplicadas cuando el mismo objeto coincide con varias categorías en el amplio vocabulario de YOLOE (más de 1200 clases LVIS). Puedes anular esto pasandoagnostic_nms=Falseexplícitamente. - Inferencia por lotes: Admitida directamente (
model.predict([img1, img2])). Para avisos específicos de la imagen, ejecuta las imágenes individualmente.
- Nombres de clases: Las salidas de YOLOE por defecto utilizan categorías LVIS; usa
La documentación de Ultralytics ofrece más recursos. YOLOE te permite explorar fácilmente potentes capacidades de mundo abierto dentro del conocido ecosistema YOLO.
Consejo profesional: Para maximizar la precisión de disparo cero de YOLOE, realiza un ajuste preciso desde los puntos de control proporcionados en lugar de entrenar desde cero. Usa palabras de aviso que se alineen con las etiquetas de entrenamiento comunes (consulta las categorías LVIS) para mejorar la precisión de la detección.
Link to this sectionCitas y agradecimientos#
Si YOLOE ha contribuido a tu investigación o proyecto, por favor cita el artículo original de Ao Wang, Lihao Liu, Hui Chen, Zijia Lin, Jungong Han y Guiguang Ding de la Universidad de Tsinghua:
@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},
}Para seguir leyendo, el artículo original de YOLOE está disponible en arXiv. El código fuente del proyecto y los recursos adicionales pueden consultarse a través de su repositorio de GitHub.
Link to this sectionFAQ#
Link to this section¿En qué se diferencia YOLOE de YOLO-World?#
Aunque tanto YOLOE como YOLO-World permiten la detección de vocabulario abierto, YOLOE ofrece varias ventajas. YOLOE logra una precisión +3.5 AP superior en LVIS mientras utiliza 3 veces menos recursos de entrenamiento y funciona 1.4 veces más rápido que YOLO-Worldv2. YOLOE también admite tres modos de aviso (texto, visual y vocabulario interno), mientras que YOLO-World se centra principalmente en los avisos de texto. Además, YOLOE incluye capacidades integradas de segmentación de instancias, proporcionando máscaras con precisión de píxeles para los objetos detectados sin sobrecarga adicional.
Link to this section¿Puedo utilizar YOLOE como un modelo YOLO normal?#
Sí, YOLOE puede funcionar exactamente como un modelo YOLO estándar sin penalización de rendimiento. Cuando se utiliza en modo de conjunto cerrado (sin avisos), los módulos de vocabulario abierto de YOLOE se reparametrizan en el cabezal de detección estándar, lo que da como resultado una velocidad y precisión idénticas a las de los modelos YOLO11 equivalentes. Esto hace que YOLOE sea extremadamente versátil: puedes utilizarlo como un detector tradicional para obtener la máxima velocidad y luego cambiar al modo de vocabulario abierto solo cuando sea necesario.
Link to this section¿Qué tipos de avisos puedo utilizar con YOLOE?#
YOLOE admite tres tipos de avisos:
- Avisos de texto: Especifica clases de objetos mediante lenguaje natural (p. ej., "persona", "semáforo", "patinete eléctrico")
- Avisos visuales: Proporciona imágenes de referencia de los objetos que deseas detectar
- Vocabulario interno: Utiliza el vocabulario integrado de YOLOE de más de 1200 categorías sin avisos externos
Esta flexibilidad te permite adaptar YOLOE a diversos escenarios sin necesidad de volver a entrenar el modelo, lo que resulta especialmente útil para entornos dinámicos en los que los requisitos de detección cambian con frecuencia.
Link to this section¿Cómo maneja YOLOE la segmentación de instancias?#
YOLOE integra la segmentación de instancias directamente en su arquitectura al extender la cabecera de detección con una rama de predicción de máscaras. Este enfoque es similar al de YOLOv8-Seg, pero funciona para cualquier clase de objeto indicado. Las máscaras de segmentación se incluyen automáticamente en los resultados de la inferencia y se pueden acceder a ellas a través de results[0].masks. Este enfoque unificado elimina la necesidad de modelos de detección y segmentación por separado, optimizando los flujos de trabajo para aplicaciones que requieren límites de objetos con precisión de píxel.
Link to this section¿Cómo gestiona YOLOE la inferencia con prompts personalizados?#
De forma similar a YOLO-World, YOLOE admite una estrategia de "prompt-then-detect" que utiliza un vocabulario offline para mejorar la eficiencia. Los prompts personalizados como pies de foto o categorías de objetos específicas se pre-codifican y almacenan como embeddings de vocabulario offline. Este enfoque agiliza el proceso de detección sin necesidad de reentrenamiento. Puedes configurar estos prompts dinámicamente dentro del modelo para adaptarlo a tareas de detección específicas:
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()