Saltar al contenido

YOLO-Modelo Mundial

El YOLO-Modelo Mundial introduce un sistema avanzado, en tiempo real Ultralytics YOLOv8-para tareas de Detecci贸n de Vocabulario Abierto. Esta innovaci贸n permite detectar cualquier objeto dentro de una imagen bas谩ndose en textos descriptivos. Al reducir significativamente las demandas computacionales, conservando al mismo tiempo un rendimiento competitivo, YOLO-World surge como una herramienta vers谩til para numerosas aplicaciones basadas en la visi贸n.



Observa: YOLO Flujo de trabajo de entrenamiento mundial en un conjunto de datos personalizado

YOLO-Resumen de la arquitectura del Modelo Mundial

Visi贸n general

YOLO-World aborda los retos a los que se enfrentan los modelos tradicionales de detecci贸n de Vocabulario Abierto, que a menudo dependen de engorrosos modelos Transformer que requieren amplios recursos computacionales. La dependencia de estos modelos de categor铆as de objetos predefinidas tambi茅n restringe su utilidad en escenarios din谩micos. YOLO-World revitaliza el marco YOLOv8 con capacidades de detecci贸n de vocabulario abierto, empleando el modelado de visi贸n-lenguaje y el preentrenamiento en amplios conjuntos de datos para sobresalir en la identificaci贸n de una amplia gama de objetos en escenarios de disparo cero con una eficacia inigualable.

Caracter铆sticas principales

  1. Soluci贸n en tiempo real: Aprovechando la velocidad de c谩lculo de las CNN, YOLO-World ofrece una soluci贸n r谩pida de detecci贸n de vocabulario abierto, que satisface a los sectores que necesitan resultados inmediatos.

  2. Eficacia y rendimiento: YOLO-World reduce dr谩sticamente los requisitos computacionales y de recursos sin sacrificar el rendimiento, ofreciendo una alternativa s贸lida a modelos como SAM pero a una fracci贸n del coste computacional, lo que permite aplicaciones en tiempo real.

  3. Inferencia con vocabulario fuera de l铆nea: YOLO-World introduce una estrategia de "preguntar y luego detectar", empleando un vocabulario fuera de l铆nea para mejorar a煤n m谩s la eficacia. Este enfoque permite utilizar indicaciones personalizadas calculadas a priori, como subt铆tulos o categor铆as, que se codifican y almacenan como incrustaciones de vocabulario fuera de l铆nea, lo que agiliza el proceso de detecci贸n.

  4. Desarrollado por YOLOv8: Basado en Ultralytics YOLOv8, YOLO-World aprovecha los 煤ltimos avances en detecci贸n de objetos en tiempo real para facilitar la detecci贸n de vocabulario abierto con una precisi贸n y velocidad sin precedentes.

  5. Excelencia en los puntos de referencia: YOLO-World supera a los detectores de vocabulario abierto existentes, incluidas las series MDETR y GLIP, en t茅rminos de velocidad y eficiencia en los benchmarks est谩ndar, demostrando la capacidad superior de YOLOv8 en una sola GPU NVIDIA V100.

  6. Aplicaciones vers谩tiles: YOLO-El enfoque innovador de World abre nuevas posibilidades para multitud de tareas de visi贸n, proporcionando mejoras de velocidad de 贸rdenes de magnitud sobre los m茅todos existentes.

Modelos disponibles, tareas admitidas y modos de funcionamiento

Esta secci贸n detalla los modelos disponibles con sus pesos espec铆ficos preentrenados, las tareas que admiten y su compatibilidad con varios modos de funcionamiento como Inferencia, Validaci贸n, Entrenamiento y Exportaci贸n, denotados por 鉁 para los modos admitidos y 鉂 para los modos no admitidos.

Nota

Todos los pesos de YOLOv8-World se han migrado directamente desde el repositorio oficial de YOLO-World, destacando sus excelentes contribuciones.

Tipo de modelo Pesos preentrenados Tareas admitidas Inferencia Validaci贸n Formaci贸n Exportar
YOLOv8s-mundo yolov8s-world.pt Detecci贸n de objetos
YOLOv8s-mundov2 yolov8s-worldv2.pt Detecci贸n de objetos
YOLOv8m-mundo yolov8m-world.pt Detecci贸n de objetos
YOLOv8m-mundov2 yolov8m-worldv2.pt Detecci贸n de objetos
YOLOv8l-mundo yolov8l-world.pt Detecci贸n de objetos
YOLOv8l-mundov2 yolov8l-worldv2.pt Detecci贸n de objetos
YOLOv8x-mundo yolov8x-world.pt Detecci贸n de objetos
YOLOv8x-mundov2 yolov8x-worldv2.pt Detecci贸n de objetos

Transferencia de disparo cero en el conjunto de datos COCO

Tipo de modelo mAP mAP50 mAP75
yolov8s-mundo 37.4 52.0 40.6
yolov8s-mundov2 37.7 52.2 41.0
yolov8m-mundo 42.0 57.0 45.6
yolov8m-mundov2 43.0 58.4 46.8
yolov8l-mundo 45.7 61.3 49.8
yolov8l-mundov2 45.8 61.3 49.8
yolov8x-mundo 47.0 63.0 51.2
yolov8x-mundov2 47.1 62.8 51.4

Ejemplos de uso

Los modelos YOLO-World son f谩ciles de integrar en tus aplicaciones Python . Ultralytics proporciona una API Python y comandos CLI f谩ciles de usar para agilizar el desarrollo.

Uso del tren

Consejo

Recomendamos encarecidamente utilizar yolov8-worldv2 para el entrenamiento personalizado, porque admite el entrenamiento determinista y tambi茅n es f谩cil de exportar a otros formatos, como onnx/tensorrt.

La detecci贸n de objetos es sencilla con la funci贸n train como se ilustra a continuaci贸n:

Ejemplo

PyTorch preentrenado *.pt modelos, as铆 como la configuraci贸n *.yaml pueden pasarse a la funci贸n YOLOWorld() para crear una instancia del modelo en python:

from ultralytics import YOLOWorld

# Load a pretrained YOLOv8s-worldv2 model
model = YOLOWorld("yolov8s-worldv2.pt")

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference with the YOLOv8n model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
# Load a pretrained YOLOv8s-worldv2 model and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov8s-worldv2.yaml data=coco8.yaml epochs=100 imgsz=640

Predecir el uso

La detecci贸n de objetos es sencilla con la funci贸n predict como se ilustra a continuaci贸n:

Ejemplo

from ultralytics import YOLOWorld

# Initialize a YOLO-World model
model = YOLOWorld("yolov8s-world.pt")  # or select yolov8m/l-world.pt for different sizes

# Execute inference with the YOLOv8s-world model on the specified image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()
# Perform object detection using a YOLO-World model
yolo predict model=yolov8s-world.pt source=path/to/image.jpg imgsz=640

Este fragmento demuestra la sencillez de cargar un modelo preentrenado y ejecutar una predicci贸n sobre una imagen.

Uso de Val

La validaci贸n del modelo en un conjunto de datos se racionaliza del siguiente modo:

Ejemplo

from ultralytics import YOLO

# Create a YOLO-World model
model = YOLO("yolov8s-world.pt")  # or select yolov8m/l-world.pt for different sizes

# Conduct model validation on the COCO8 example dataset
metrics = model.val(data="coco8.yaml")
# Validate a YOLO-World model on the COCO8 dataset with a specified image size
yolo val model=yolov8s-world.pt data=coco8.yaml imgsz=640

Uso de la pista

El seguimiento de objetos con el modelo YOLO-World en un v铆deo/im谩genes se racionaliza del siguiente modo:

Ejemplo

from ultralytics import YOLO

# Create a YOLO-World model
model = YOLO("yolov8s-world.pt")  # or select yolov8m/l-world.pt for different sizes

# Track with a YOLO-World model on a video
results = model.track(source="path/to/video.mp4")
# Track with a YOLO-World model on the video with a specified image size
yolo track model=yolov8s-world.pt imgsz=640 source="path/to/video/file.mp4"

Nota

Los modelos YOLO-World proporcionados por Ultralytics vienen preconfigurados con las categor铆as del conjunto de datos COCO como parte de su vocabulario offline, lo que mejora la eficacia para su aplicaci贸n inmediata. Esta integraci贸n permite a los modelos YOLOv8-World reconocer y predecir directamente las 80 categor铆as est谩ndar definidas en el conjunto de datos COCO sin necesidad de configuraci贸n o personalizaci贸n adicionales.

Establecer indicaciones

YOLO-Resumen de los nombres de las clases r谩pidas del mundo

El marco YOLO-World permite la especificaci贸n din谩mica de clases mediante avisos personalizados, lo que permite a los usuarios adaptar el modelo a sus necesidades espec铆ficas sin necesidad de volver a entrenar. Esta caracter铆stica es especialmente 煤til para adaptar el modelo a nuevos dominios o tareas espec铆ficas que no formaban parte originalmente de los datos de entrenamiento. Al establecer indicaciones personalizadas, los usuarios pueden guiar esencialmente el enfoque del modelo hacia objetos de inter茅s, mejorando la relevancia y precisi贸n de los resultados de detecci贸n.

Por ejemplo, si tu aplicaci贸n s贸lo requiere detectar objetos "persona" y "autob煤s", puedes especificar estas clases directamente:

Ejemplo

from ultralytics import YOLO

# Initialize a YOLO-World model
model = YOLO("yolov8s-world.pt")  # or choose yolov8m/l-world.pt

# Define custom classes
model.set_classes(["person", "bus"])

# Execute prediction for specified categories on an image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()

Tambi茅n puedes guardar un modelo despu茅s de establecer clases personalizadas. Al hacerlo, creas una versi贸n del modelo YOLO-World especializada para tu caso de uso espec铆fico. Este proceso incrusta tus definiciones de clases personalizadas directamente en el archivo del modelo, haciendo que el modelo est茅 listo para usarse con tus clases especificadas sin m谩s ajustes. Sigue estos pasos para guardar y cargar tu modelo personalizado YOLOv8 :

Ejemplo

Primero carga un modelo YOLO-World, establece clases personalizadas para 茅l y gu谩rdalo:

from ultralytics import YOLO

# Initialize a YOLO-World model
model = YOLO("yolov8s-world.pt")  # or select yolov8m/l-world.pt

# Define custom classes
model.set_classes(["person", "bus"])

# Save the model with the defined offline vocabulary
model.save("custom_yolov8s.pt")

Despu茅s de guardarlo, el modelo custom_yolov8s.pt se comporta como cualquier otro modelo YOLOv8 preentrenado, pero con una diferencia clave: ahora est谩 optimizado para detectar s贸lo las clases que hayas definido. Esta personalizaci贸n puede mejorar significativamente el rendimiento y la eficacia de la detecci贸n para tus escenarios de aplicaci贸n espec铆ficos.

from ultralytics import YOLO

# Load your custom model
model = YOLO("custom_yolov8s.pt")

# Run inference to detect your custom classes
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()

Ventajas de ahorrar con el vocabulario personalizado

  • Eficacia: Agiliza el proceso de detecci贸n centr谩ndose en los objetos relevantes, reduciendo la carga computacional y acelerando la inferencia.
  • Flexibilidad: Permite adaptar f谩cilmente el modelo a tareas de detecci贸n nuevas o nicho sin necesidad de un reentrenamiento o recogida de datos exhaustivos.
  • Simplicidad: Simplifica el despliegue al eliminar la necesidad de especificar repetidamente clases personalizadas en tiempo de ejecuci贸n, haciendo que el modelo pueda utilizarse directamente con su vocabulario incorporado.
  • Rendimiento: Aumenta la precisi贸n de detecci贸n de las clases especificadas, centrando la atenci贸n y los recursos del modelo en el reconocimiento de los objetos definidos.

Este enfoque proporciona un potente medio de personalizar los modelos de detecci贸n de objetos m谩s avanzados para tareas espec铆ficas, haciendo que la IA avanzada sea m谩s accesible y aplicable a una gama m谩s amplia de aplicaciones pr谩cticas.

Reproducir resultados oficiales desde cero(Experimental)

Preparar conjuntos de datos

  • Datos del tren
Conjunto de datos Tipo Muestras Cajas Archivos de anotaci贸n
Objetos365v1 Detecci贸n 609k 9621k objetos365_entrenamiento.json
GQA Toma de tierra 621k 3681k entrenamiento_final_mezclado_no_coco.json
Flickr30k Toma de tierra 149k 641k final_flickr_separateGT_train.json
  • Datos Val
Conjunto de datos Tipo Archivos de anotaci贸n
LVIS minival Detecci贸n minival.txt

Iniciar la formaci贸n desde cero

Nota

WorldTrainerFromScratch est谩 altamente personalizado para permitir el entrenamiento de modelos yolo-world tanto en conjuntos de datos de detecci贸n como en conjuntos de datos de puesta a tierra simult谩neamente. Para m谩s detalles, consulta ultralytics.model.yolo.world.train_world.py.

Ejemplo

from ultralytics import YOLOWorld
from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch

data = dict(
    train=dict(
        yolo_data=["Objects365.yaml"],
        grounding_data=[
            dict(
                img_path="../datasets/flickr30k/images",
                json_file="../datasets/flickr30k/final_flickr_separateGT_train.json",
            ),
            dict(
                img_path="../datasets/GQA/images",
                json_file="../datasets/GQA/final_mixed_train_no_coco.json",
            ),
        ],
    ),
    val=dict(yolo_data=["lvis.yaml"]),
)
model = YOLOWorld("yolov8s-worldv2.yaml")
model.train(data=data, batch=128, epochs=100, trainer=WorldTrainerFromScratch)

Citas y agradecimientos

Extendemos nuestra gratitud al Centro de Visi贸n por Ordenador AILab de Tencent por su trabajo pionero en la detecci贸n de objetos de vocabulario abierto en tiempo real con YOLO-World:

@article{cheng2024yolow,
title={YOLO-World: Real-Time Open-Vocabulary Object Detection},
author={Cheng, Tianheng and Song, Lin and Ge, Yixiao and Liu, Wenyu and Wang, Xinggang and Shan, Ying},
journal={arXiv preprint arXiv:2401.17270},
year={2024}
}

Para m谩s informaci贸n, el documento original YOLO-World est谩 disponible en arXiv. Se puede acceder al c贸digo fuente del proyecto y a otros recursos a trav茅s de su repositorio GitHub. Agradecemos su compromiso por hacer avanzar el campo y compartir sus valiosos conocimientos con la comunidad.



Created 2024-02-14, Updated 2024-06-10
Authors: glenn-jocher (6), RizwanMunawar (3), Burhan-Q (1), Laughing-q (4)

Comentarios