Ir al contenido

YOLOE: Ver cualquier cosa en tiempo real

Introducción

Opciones de aviso YOLOE

YOLOE (Real-Time Seeing Anything) es un nuevo avance en los modelos YOLO de disparo cero, diseñados para la detección y segmentación de vocabulario abierto. A diferencia de los modelos YOLO anteriores, limitados a categorías fijas, YOLOE utiliza texto, imágenes o avisos de vocabulario interno, lo que permite la detección en tiempo real de cualquier clase de objeto. Basado en YOLOv10 e inspirado en YOLO, YOLOE consigue un rendimiento sin disparos de última generación con un impacto mínimo en la velocidad y la precisión.

Estado de la integración Ultralytics 🚧

La integración de Ultralytics para YOLOE está actualmente en construcción 🔨. Los ejemplos de uso mostrados en esta documentación funcionarán una vez que la integración esté completa ✅. Vuelve a consultar las actualizaciones 🔄 o sigue nuestro repositorio de GitHub 🚀 para conocer las últimas novedades.

En comparación con los modelos YOLO anteriores, YOLOE aumenta significativamente la eficiencia y la precisión. Mejora en +3,5 AP a YOLO en LVIS, utilizando solo un tercio de los recursos de entrenamiento y logrando velocidades de inferencia 1,4 veces superiores. Ajustado en COCO, YOLOE-v8-large supera a YOLOv8 en 0,1 mAP, utilizando casi 4 veces menos tiempo de entrenamiento. Esto demuestra el excepcional equilibrio entre precisión, eficacia y versatilidad de YOLOE. En las secciones siguientes se analizan la arquitectura de YOLOE, las comparaciones de referencia y la integración con el software Ultralytics de YOLOE.

Arquitectura

Arquitectura YOLOE

YOLOE mantiene la estructura estándar YOLO : una columna vertebral convolucional (p. ej., CSP-Darknet) para la extracción de características, un cuello (p. ej., PAN-FPN) para la fusión multiescala y un cabezal de detección desacoplado y sin anclajes (como en YOLO11) que predice la objetualidad, las clases y los recuadros de forma independiente. YOLOE introduce tres nuevos módulos que permiten la detección de vocabulario abierto:

  • Alineación región-texto re-parametrizable (RepRTA): Permite la detección de texto mediante el refinamiento de las incrustaciones de texto (por ejemplo, de CLIP) a través de una pequeña red auxiliar. En el momento de la inferencia, esta red se integra en el modelo principal, con lo que la sobrecarga es nula. De este modo, YOLOE detecta objetos etiquetados con texto arbitrario (por ejemplo, un "semáforo" no visto) sin penalizaciones en tiempo de ejecución.

  • Semantic-Activated Visual Prompt Encoder (SAVPE): Permite la detección visual mediante una rama de incrustación ligera. A partir de una imagen de referencia, SAVPE codifica características semánticas y de activación, lo que condiciona el modelo a la detección de objetos visualmente similares.

  • Contraste perezoso región-pregunta (LRPC): En el modo sin instrucciones, YOLOE realiza el reconocimiento de conjuntos abiertos utilizando incrustaciones internas entrenadas en grandes vocabularios (más de 1200 categorías de LVIS y Objects365). Sin instrucciones externas ni codificadores, YOLOE identifica los objetos mediante la búsqueda de similitudes de incrustación, manejando de forma eficiente grandes espacios de etiquetas en la inferencia.

Además, YOLOE integra la segmentación de instancias en tiempo real ampliando el cabezal de detección con una rama de predicción de máscaras (similar a YOLACT o YOLOv8), lo que añade una sobrecarga mínima.

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 volver a parametrizarse en una cabeza de YOLO estándar, conservando idénticos FLOP y velocidad (por ejemplo, haciendo coincidir YOLO11 exactamente).

Comparación de resultados de YOLOE

YOLOE iguala o supera la precisión de los modelos YOLO de conjunto cerrado en pruebas estándar como COCO, sin comprometer la velocidad ni el tamaño del modelo. En la tabla siguiente se compara YOLOE-L (basado en YOLO11) con los modelos correspondientes de YOLOv8 y YOLO11 :

Modelo COCO mAP50-95 Velocidad de inferencia (T4) Parámetros GFLOPs (640px)
YOLOv8 (conjunto cerrado) 52.9% 9,06 ms (110 FPS) 43.7 M 165.2 B
YOLO11 (conjunto cerrado) 53.5% 6,2 ms (130 FPS) 26.2 M 86.9 B
YOLOE-L (cabina abierta) 52.6% 6,2 ms (130 FPS) 26.2 M 86.9 B†

YOLO11 y YOLOE-L tienen arquitecturas idénticas (módulos prompt desactivados en YOLO11), lo que resulta en una velocidad de inferencia idéntica y estimaciones de GFLOPs similares.

YOLOE-L alcanza un 52,6% de mAP, superando a YOLOv8(52,9%) con aproximadamente un 40% menos de parámetros (26M frente a 43,7M). Procesa imágenes de 640×640 en 6,2 ms (161 FPS ) frente a los 9,06 ms (110 FPS) de YOLOv8, lo que pone de manifiesto la eficiencia de YOLO11. Los módulos de vocabulario abierto de YOLOE no incurren en ningún coste de inferencia, lo que demuestra que su diseño "no es gratuito".

En las tareas de disparo cero y transferencia, YOLOE sobresale: en LVIS, YOLOE-small mejora a YOLO en +3,5 AP utilizando 3× menos recursos de entrenamiento. El ajuste fino de YOLOE-L de LVIS a COCO también requirió 4 veces menos tiempo de entrenamiento que YOLOv8, lo que subraya su eficiencia y adaptabilidad. YOLOE mantiene además la velocidad característica de YOLO, alcanzando más de 300 FPS en una GPU T4 y ~64 FPS en un iPhone 12 a través de CoreML, lo que resulta ideal para implantaciones móviles y periféricas.

Nota

Condiciones de referencia: Los resultados de YOLOE proceden de modelos preentrenados en Objects365, GoldG y LVIS, y posteriormente ajustados o evaluados en COCO. La ligera ventaja de mAP de YOLOE sobre YOLOv8 procede de un amplio preentrenamiento. Sin este entrenamiento en laboratorio abierto, YOLOE iguala a modelos YOLO de tamaño similar, lo que confirma su precisión SOTA y su flexibilidad en mundo abierto sin penalizaciones de rendimiento.

Comparación con modelos anteriores

YOLOE introduce notables avances con respecto a los modelos YOLO anteriores y a los detectores de vocabulario abierto:

  • YOLOE vs YOLOv5:
    YOLOv5 ofrecía un buen equilibrio entre velocidad y precisión, pero requería un reentrenamiento para nuevas clases y utilizaba cabezas basadas en anclas. En cambio, YOLOE no utiliza anclas y detecta nuevas clases 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 frente a YOLOv8:
    YOLOE se extiende YOLOv8consiguiendo una precisión similar o superior(52,6% mAP con ~26M de parámetros frente al 52,9% de YOLOv8 con ~44M de parámetros). Reduce significativamente el tiempo de entrenamiento gracias a un mayor preentrenamiento. El avance clave es la capacidad de mundo abierto de YOLOE, que detecta objetos invisibles (por ejemplo,"pájaro patinete" o"símbolo de la paz") mediante instrucciones, a diferencia del diseño de conjunto cerrado de YOLOv8.

  • YOLOE frente a YOLO11:
    YOLO11 mejora YOLOv8 con mayor eficacia y menos parámetros (~22% de reducción). YOLOE hereda directamente estas mejoras, igualando la velocidad de inferencia y el número de parámetros de YOLO11(~26 millones de parámetros), al tiempo que añade la detección y segmentación de vocabulario abierto. En escenarios cerrados, YOLOE es equivalente a YOLO11, pero añade una adaptabilidad crucial para detectar clases no vistas, logrando YOLO11 + capacidad de mundo abierto sin comprometer la velocidad.

  • YOLOE frente a anteriores detectores de vocabulario abierto:
    Los modelos anteriores de vocabulario abierto (GLIP, OWL-ViT, YOLO) se basaban en gran medida en transformadores de visión-lenguaje, lo que provocaba una inferencia lenta. YOLOE los supera en precisión cero (por ejemplo, +3,5 AP frente a YOLO) y funciona 1,4 veces más rápido con recursos de formación significativamente menores. En comparación con los enfoques basados en transformadores (p. ej., GLIP), YOLOE ofrece una inferencia varios órdenes de magnitud más rápida, lo que salva la brecha entre precisión y eficiencia en la detección de conjuntos abiertos.

En resumen, YOLOE mantiene la reconocida velocidad y eficacia de YOLO, supera a sus predecesores en precisión, integra la segmentación e introduce una potente detección en mundo abierto, lo que lo hace excepcionalmente versátil y práctico.

Casos prácticos y aplicaciones

La detección y segmentación de vocabulario abierto de YOLOE permite diversas aplicaciones más allá de los modelos tradicionales de clase fija:

  • Detección de objetos en mundo abierto:
    Ideal para escenarios dinámicos como la robótica, donde los robots reconocen objetos no vistos previamente mediante avisos, o sistemas de seguridad que se adaptan rápidamente a nuevas amenazas (por ejemplo, objetos peligrosos) sin necesidad de reentrenamiento.

  • Detección de pocos objetos y de un solo objeto:
    Mediante indicaciones visuales (SAVPE), YOLOE aprende rápidamente nuevos objetos a partir de imágenes de referencia únicas, lo que resulta perfecto para la inspección industrial (identificación instantánea de piezas o defectos) o la vigilancia personalizada, ya que permite realizar búsquedas visuales con una configuración mínima.

  • Reconocimiento de gran vocabulario y larga cola:
    Equipado con un vocabulario de más de 1.000 clases, YOLOE destaca en tareas como la supervisión de la biodiversidad (detección de especies raras), colecciones de museos, inventario de tiendas o comercio electrónico, identificando de forma fiable muchas clases sin necesidad de una formación exhaustiva por clase.

  • Detección y segmentación interactivas:
    YOLOE es compatible con aplicaciones interactivas en tiempo real, como la recuperación de imágenes y vídeos con función de búsqueda, la realidad aumentada (RA) y la edición intuitiva de imágenes mediante entradas naturales (texto o indicaciones visuales). Los usuarios pueden aislar, identificar o editar objetos de forma dinámica y precisa mediante máscaras de segmentación.

  • Etiquetado automático de datos y Bootstrapping:
    YOLOE facilita la creación rápida de conjuntos de datos proporcionando anotaciones iniciales de cajas delimitadoras y segmentación, lo que reduce significativamente los esfuerzos de etiquetado humano. Especialmente valioso en el análisis de grandes colecciones de medios, donde puede identificar automáticamente los objetos presentes, ayudando a crear modelos especializados con mayor rapidez.

  • Segmentación de cualquier objeto:
    Amplía las capacidades de segmentación a objetos arbitrarios a través de indicaciones -especialmente beneficioso para el análisis de imágenes médicas, microscopía o imágenes de satélite-, identificando automáticamente y segmentando con precisión estructuras sin modelos especializados preentrenados. A diferencia de modelos como SAMYOLOE reconoce y segmenta objetos automáticamente de forma simultánea, lo que ayuda en tareas como la creación de contenidos o la comprensión de escenas.

En todos estos casos de uso, la principal ventaja de YOLOE es su versatilidad, ya que proporciona un modelo unificado de detección, reconocimiento y segmentación en escenarios dinámicos. Su eficiencia garantiza el rendimiento en tiempo real en dispositivos con recursos limitados, lo que resulta ideal para la robótica, la conducción autónoma, la defensa y otros ámbitos.

Consejo

Elige el modo de YOLOE en función de tus necesidades:

  • Modo de juego cerrado: Para tareas de clase fija (velocidad y precisión máximas).
  • Modo con instrucciones: Añade nuevos objetos rápidamente mediante indicaciones de texto o visuales.
  • Modo open-set sin avisos: Detección general en muchas categorías (ideal para catalogación y descubrimiento).

A menudo, la combinación de modos -como el descubrimiento sin avisos seguido de avisos específicos- aprovecha todo el potencial de YOLOE.

Formación e inferencia

YOLOE se integra perfectamente con la APIPython Ultralytics y la CLIde forma similar a otros modelos YOLO YOLOv8, YOLO). He aquí cómo empezar rápidamente:

Estado de la integración Ultralytics 🚧

La integración de Ultralytics para YOLOE está actualmente en desarrollo 🔨. Los siguientes ejemplos muestran cómo funcionará la API una vez completada la integración ✅.

Formación e inferencia con YOLOE

from ultralytics import YOLO

# Load pre-trained YOLOE model and train on custom data
model = YOLO("yoloe-s.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

En este caso, YOLOE se comporta por defecto como un detector estándar, pero cambia fácilmente a la detección incitada especificando las clases (set_classes). Los resultados contienen cuadros delimitadores, máscaras y etiquetas.

# Training YOLOE on custom dataset
yolo train model=yoloe-s.pt data=path/to/data.yaml epochs=50 imgsz=640

# Inference with text prompts
yolo predict model=yoloe-s.pt source="test_images/street.jpg" classes="person,bus"

Peticiones CLI (classes) guían a YOLOE de forma similar a Python set_classes. Las consultas visuales (basadas en imágenes) requieren actualmente la API de Python .

Otras tareas compatibles

  • Validación: Evalúe la precisión fácilmente con model.val() o yolo val.
  • Exportar: Exportar modelos YOLOE (model.export()) a ONNX, TensorRT, etc., facilitando el despliegue.
  • Seguimiento: YOLOE admite el seguimiento de objetos (yolo track) cuando se integra, útil para el seguimiento de las clases incitadas en los vídeos.

Nota

YOLOE incluye automáticamente máscaras de segmentación en los resultados de la inferencia (results[0].masks), lo que simplifica tareas de precisión de píxeles como la extracción o medición de objetos sin necesidad de modelos separados.

Primeros pasos

Configure rápidamente YOLOE con Ultralytics siguiendo estos pasos:

  1. Instalación: Instale o actualice el paquete Ultralytics :

    pip install -U ultralytics
    
  2. Descargar pesas YOLOE: Los modelos YOLOE preentrenados (por ejemplo, las variantes YOLOE-v8-S/L, YOLOE-11) están disponibles en las versiones GitHub de YOLOE. Sólo tiene que descargar el modelo .pt para cargarlo en la claseYOLO Ultralytics .

  3. Requisitos de hardware:

    • Inferencia: GPU recomendadaNVIDIA con ≥4-8GB VRAM). Los modelos pequeños se ejecutan eficientemente en GPUs edge (por ejemplo, Jetson) o CPUs a resoluciones más bajas.
    • Entrenamiento: El ajuste de YOLOE en datos personalizados suele requerir una sola GPU. El extenso preentrenamiento de vocabulario abierto (LVIS/Objects365) utilizado por los autores requirió un gran esfuerzo de cálculo (8× RTX 4090 GPUs).
  4. Configuración: Las configuraciones de YOLOE utilizan archivos YAML estándar Ultralytics . Configuraciones por defecto (por ejemplo, yoloe-s.yaml) suelen ser suficientes, pero puede modificar la columna vertebral, las clases o el tamaño de la imagen según sea necesario.

  5. Corriendo YOLOE:

    • Inferencia rápida (sin previo aviso):
      yolo predict model=yoloe-s.pt source="image.jpg"
      
    • Detección solicitada (ejemplo de solicitud de texto):

      yolo predict model=yoloe-s.pt source="kitchen.jpg" classes="bowl,apple"
      

      En Python:

      from ultralytics import YOLO
      
      model = YOLO("yoloe-s.pt")
      model.set_classes(["bowl", "apple"])
      results = model.predict("kitchen.jpg")
      results[0].save()
      
  6. Consejos de integración:

    • Nombres de clase: Las salidas por defecto de YOLOE utilizan categorías LVIS; utilice set_classes() para especificar sus propias etiquetas.
    • Velocidad: YOLOE no tiene sobrecarga a menos que se utilicen avisos. Las indicaciones textuales tienen un impacto mínimo; las visuales, un poco más.
    • Inferencia por lotes: Se admite directamente (model.predict([img1, img2])). Para obtener indicaciones específicas de la imagen, ejecute las imágenes individualmente.

La documentaciónUltralytics proporciona más recursos. YOLOE le permite explorar fácilmente las potentes capacidades de mundo abierto dentro del ecosistema familiar YOLO .

Consejo

Consejo profesional: Para maximizar la precisión de tiro cero de YOLOE, realice un ajuste fino a partir de los puntos de control proporcionados en lugar de entrenar desde cero. Utilice palabras de aviso que coincidan con las etiquetas de entrenamiento habituales (consulte las categorías de LVIS) para mejorar la precisión de la detección.

Citas y agradecimientos

Si YOLOE ha contribuido a su investigación o proyecto, cite 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 más información, el artículo original de YOLOE está disponible en arXiv. El código fuente del proyecto y otros recursos pueden consultarse en su repositorio de GitHub.

PREGUNTAS FRECUENTES

¿En qué se diferencia YOLOE de YOLO?

Aunque tanto YOLOE como YOLO permiten la detección de vocabulario abierto, YOLOE ofrece varias ventajas. YOLOE alcanza una precisión +3,5 puntos porcentuales superior en LVIS, utiliza 3 veces menos recursos de entrenamiento y funciona 1,4 veces más rápido que YOLO. YOLOE también admite tres modos de indicación (texto, visual y vocabulario interno), mientras que YOLO se centra principalmente en las indicaciones de texto. Además, YOLOE incorpora funciones de segmentación de instancias que proporcionan máscaras precisas en píxeles para los objetos detectados sin sobrecarga adicional.

¿Puedo utilizar YOLOE como un modelo YOLO normal?

Sí, YOLOE puede funcionar exactamente igual que un modelo YOLO estándar sin penalización de rendimiento. Cuando se utiliza en modo de juego cerrado (sin avisos), los módulos de vocabulario abierto de YOLOE se vuelven a parametrizar 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: puede utilizarlo como detector tradicional para obtener la máxima velocidad y, a continuación, cambiar al modo de vocabulario abierto sólo cuando sea necesario.

¿Qué tipos de avisos puedo utilizar con YOLOE?

YOLOE admite tres tipos de avisos:

  1. Indicaciones de texto: Especifique clases de objetos mediante lenguaje natural (por ejemplo, "persona", "semáforo", "patinete").
  2. Indicaciones visuales: Proporcione imágenes de referencia de los objetos que desea detectar
  3. Vocabulario interno: Utiliza el vocabulario integrado de YOLOE, compuesto por más de 1200 categorías, sin ayuda externa.

Esta flexibilidad permite adaptar YOLOE a diversos escenarios sin necesidad de volver a entrenar el modelo, lo que lo hace especialmente útil para entornos dinámicos en los que los requisitos de detección cambian con frecuencia.

¿Cómo gestiona YOLOE la segmentación de instancias?

YOLOE integra la segmentación de instancias directamente en su arquitectura ampliando el cabezal de detección con una rama de predicción de máscaras. Este enfoque es similar al de YOLOv8, pero funciona para cualquier clase de objeto que se proponga. Las máscaras de segmentación se incluyen automáticamente en los resultados de la inferencia y se puede acceder a ellas a través de results[0].masks. Este enfoque unificado elimina la necesidad de modelos de detección y segmentación independientes, lo que agiliza los flujos de trabajo para aplicaciones que requieren límites de objetos precisos en píxeles.

¿Cómo gestiona YOLOE la inferencia con indicaciones personalizadas?

Al igual que YOLO, YOLOE admite una estrategia de "preguntar y luego detectar" que utiliza un vocabulario fuera de línea para mejorar la eficacia. Las indicaciones personalizadas, como subtítulos o categorías específicas de objetos, se codifican previamente y se almacenan como incrustaciones de vocabulario fuera de línea. Este enfoque agiliza el proceso de detección sin necesidad de reentrenamiento. Puede configurar dinámicamente estas indicaciones en el modelo para adaptarlo a tareas de detección específicas:

from ultralytics import YOLO

# Initialize a YOLOE model
model = YOLO("yoloe-s.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()
Creado hace 10 días ✏️ Actualizado hace 7 días

Comentarios