Ultralytics YOLO27:

Conjunto de datos Argoverse#

El conjunto de datos Argoverse de Ultralytics (Argoverse-HD) es un conjunto de detección de objetos 2D con 54 446 imágenes etiquetadas de conducción autónoma —39 384 para entrenamiento y 15 062 para validación— repartidas en 8 clases: persona, bicicleta, coche, motocicleta, autobús, camión, semáforo y señal de stop. Las imágenes se capturan con la cámara delantera central de anillo de un vehículo, y las anotaciones proceden del proyecto de percepción continua de la Universidad Carnegie Mellon, basado en los datos de conducción Argoverse 1.1 de Argo AI. Es un banco de pruebas amplio y del mundo real para entrenar modelos de visión artificial que detecten objetos de la vía en escenarios de conducción autónoma.

Explora Argoverse-HD en Ultralytics Platform para previsualizar muestras anotadas, consultar las estadísticas del conjunto de datos y clonarlo para entrenar.

Es necesario descargarlo manualmente

El archivo *.zip de Argoverse-HD (~31,5 GB), necesario para el entrenamiento, se eliminó de Amazon S3 tras el cierre de Argo AI por parte de Ford. Está disponible para su descarga manual desde Google Drive: la descarga automática no funcionará, así que descarga el archivo y extráelo en la carpeta Argoverse del directorio de conjuntos de datos antes de entrenar.

Características principales#

  • 8 clases de detección de objetos: persona, bicicleta, coche, motocicleta, autobús, camión, semáforo y señal de stop.
  • 54 446 imágenes etiquetadas —39 384 para entrenamiento y 15 062 para validación—, además de una partición de prueba sin etiquetas reservada para el reto eval.ai.
  • ~31,5 GB de fotogramas de alta resolución capturados con la cámara delantera central de anillo en escenas urbanas de conducción autónoma.
  • Las anotaciones se convierten automáticamente al formato YOLO la primera vez que se utiliza el conjunto de datos, por lo que se puede entrenar directamente con los modelos de detección Ultralytics YOLO.

Estructura del conjunto de datos#

El conjunto de datos Argoverse-HD se divide en tres subconjuntos predefinidos, definidos por la configuración Argoverse.yaml:

DivisiónImágenesEtiquetas
Entrenar39,384Sí
Validación15,062Sí
Prueba—Sin etiquetar (reto de eval.ai)

Todas las imágenes comparten las mismas 8 clases de objetos (índices del 0 al 7): persona, bicicleta, coche, motocicleta, autobús, camión, semáforo y señal de stop.

Conversión automática a YOLO

Después de descargarlo manualmente, Ultralytics convierte automáticamente las anotaciones originales de Argoverse-HD en etiquetas de detección de YOLO la primera vez que entrenas, por lo que no hace falta ningún preprocesamiento manual.

Aplicaciones#

El conjunto de datos Argoverse-HD admite diversas aplicaciones de detección de objetos en la conducción autónoma:

  • Percepción para vehículos autónomos — detecta vehículos, peatones y ciclistas con una cámara orientada hacia delante para facilitar la navegación de vehículos autónomos.
  • Sistemas avanzados de asistencia a la conducción (ADAS) — reconocen semáforos y señales de stop para enviar alertas al conductor en tiempo real.
  • Monitorización del tráfico — cuenta y sigue a los usuarios de la vía en entornos urbanos para realizar análisis de ciudades inteligentes.
  • Investigación y creación de prototipos — un conjunto de referencia amplio y del mundo real para aprender a entrenar modelos y realizar predicciones con datos de conducción.

YAML del conjunto de datos#

Un archivo YAML define la configuración del conjunto de datos, incluidas las rutas, las clases y otros detalles relevantes. Para el conjunto de datos Argoverse, el archivo Argoverse.yaml se mantiene en https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/Argoverse.yaml.

ultralytics/cfg/datasets/Argoverse.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# Argoverse-HD dataset (ring-front-center camera) by Argo AI: https://www.cs.cmu.edu/~mengtial/proj/streaming/
# Documentation: https://docs.ultralytics.com/datasets/detect/argoverse
# Example usage: yolo train data=Argoverse.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── Argoverse ← downloads here (31.5 GB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: Argoverse # dataset root dir
train: Argoverse-1.1/images/train/ # train images (relative to 'path') 39384 images
val: Argoverse-1.1/images/val/ # val images (relative to 'path') 15062 images
test: Argoverse-1.1/images/test/ # test images (optional) https://eval.ai/web/challenges/challenge-page/800/overview

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: bus
  5: truck
  6: traffic_light
  7: stop_sign

# Download script/URL (optional) ---------------------------------------------------------------------------------------
download: |
  import json
  from pathlib import Path

  from ultralytics.utils import TQDM
  from ultralytics.utils.downloads import download

  def argoverse2yolo(annotation_file):
      """Convert Argoverse dataset annotations to YOLO format for object detection tasks."""
      labels = {}
      with open(annotation_file, encoding="utf-8") as f:
          a = json.load(f)
      for annot in TQDM(a["annotations"], desc=f"Converting {annotation_file} to YOLO format..."):
          img_id = annot["image_id"]
          img_name = a["images"][img_id]["name"]
          img_label_name = f"{Path(img_name).stem}.txt"

          cls = annot["category_id"]  # instance class id
          x_center, y_center, width, height = annot["bbox"]
          x_center = (x_center + width / 2) / 1920.0  # offset and scale
          y_center = (y_center + height / 2) / 1200.0  # offset and scale
          width /= 1920.0  # scale
          height /= 1200.0  # scale

          img_dir = annotation_file.parents[2] / "Argoverse-1.1" / "labels" / a["seq_dirs"][a["images"][annot["image_id"]]["sid"]]
          if not img_dir.exists():
              img_dir.mkdir(parents=True, exist_ok=True)

          k = str(img_dir / img_label_name)
          if k not in labels:
              labels[k] = []
          labels[k].append(f"{cls} {x_center} {y_center} {width} {height}\n")

      for k in labels:
          with open(k, "w", encoding="utf-8") as f:
              f.writelines(labels[k])

  # Download 'https://argoverse-hd.s3.amazonaws.com/Argoverse-HD-Full.zip' (deprecated S3 link)
  dir = Path(yaml["path"])  # dataset root dir
  urls = ["https://drive.google.com/file/d/1st9qW3BeIwQsnR0t8mRpvbsSWIo16ACi/view?usp=drive_link"]
  print("\n\nWARNING: Argoverse dataset MUST be downloaded manually, autodownload will NOT work.")
  print(f"WARNING: Manually download Argoverse dataset '{urls[0]}' to '{dir}' and re-run your command.\n\n")
  # download(urls, dir=dir)

  # Convert
  annotations_dir = "Argoverse-HD/annotations/"
  (dir / "Argoverse-1.1" / "tracking").rename(dir / "Argoverse-1.1" / "images")  # rename 'tracking' to 'images'
  for d in "train.json", "val.json":
      argoverse2yolo(dir / annotations_dir / d)  # convert Argoverse annotations to YOLO labels

Uso#

Para entrenar un modelo YOLO26n con el conjunto de datos Argoverse durante 100 épocas y con un tamaño de imagen de 640, utiliza los siguientes ejemplos de código. Para consultar una lista completa de los argumentos disponibles, visita la página de entrenamiento del modelo.

Ejemplo de entrenamiento
from ultralytics import YOLO

# Cargar un modelo
model = YOLO("yolo26n.pt")  # Carga un modelo preentrenado (recomendado para el entrenamiento)

# Entrenar el modelo
results = model.train(data="Argoverse.yaml", epochs=100, imgsz=640)

Una vez entrenado, ejecuta la inferencia con el modelo ajustado en nuevas imágenes o vídeos de conducción:

Ejemplo de inferencia
from ultralytics import YOLO

# Cargar un modelo
model = YOLO("path/to/best.pt")  # carga un modelo ajustado con Argoverse

# Inferencia con el modelo
results = model.predict("path/to/driving-scene.jpg")

Datos de ejemplo y anotaciones#

El conjunto de datos Argoverse-HD contiene imágenes de conducción de alta resolución capturadas por una cámara central frontal del anillo y anotadas con cuadros delimitadores 2D para las 8 clases de objetos. A continuación se muestra una imagen de ejemplo del conjunto de datos con sus anotaciones correspondientes:

Escena de conducción autónoma de Argoverse-HD con objetos viales anotados

  • Escena de conducción anotada: esta imagen muestra objetos de la vía, como vehículos y peatones, etiquetados con cuadros delimitadores 2D, el formato que los modelos YOLO aprenden a predecir durante el entrenamiento.

Citas y agradecimientos#

Las anotaciones de detección 2D de Argoverse-HD utilizadas en este conjunto de datos proceden del trabajo de percepción en flujo de Carnegie Mellon University. Si utilizas el conjunto de datos en tu investigación o desarrollo, cita lo siguiente:

Cita
@inproceedings{li2020towards,
  title={Towards Streaming Perception},
  author={Li, Mengtian and Wang, Yu-Xiong and Ramanan, Deva},
  booktitle={Proceedings of the European Conference on Computer Vision (ECCV)},
  pages={473--488},
  year={2020}
}

@inproceedings{chang2019argoverse,
  title={Argoverse: 3D Tracking and Forecasting with Rich Maps},
  author={Chang, Ming-Fang and Lambert, John and Sangkloy, Patsorn and Singh, Jagjeet and Bak, Slawomir and Hartnett, Andrew and Wang, Dequan and Carr, Peter and Lucey, Simon and Ramanan, Deva and others},
  booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
  pages={8748--8757},
  year={2019}
}

Queremos agradecer a Carnegie Mellon University las anotaciones de detección de Argoverse-HD y a Argo AI la creación del conjunto de datos Argoverse original, un recurso valioso para la comunidad de investigación sobre conducción autónoma.

Preguntas frecuentes#

  • El conjunto de datos Argoverse de Ultralytics (Argoverse-HD) es un conjunto de datos de detección de objetos 2D con 54.446 imágenes de conducción autónoma repartidas en 8 clases: persona, bicicleta, coche, motocicleta, autobús, camión, semáforo y señal de stop. Se utiliza para entrenar y evaluar modelos que detectan objetos de la vía mediante una cámara del vehículo orientada hacia delante, lo que contribuye a la investigación sobre percepción para vehículos autónomos, ADAS y monitorización del tráfico.

  • El conjunto de datos Argoverse-HD tiene 8 clases (persona, bicicleta, coche, motocicleta, autobús, camión, semáforo y señal de stop) y 54.446 imágenes etiquetadas: 39.384 para entrenamiento y 15.062 para validación; además, incluye una división de prueba sin etiquetar reservada para el reto de eval.ai.

  • En Ultralytics, es un conjunto de datos de detección de objetos 2D (fotogramas de cámara de Argoverse-HD con cuadros delimitadores 2D), no el conjunto de investigación más amplio de Argoverse sobre seguimiento 3D, predicción de movimiento o LiDAR. Se entrena con un modelo de detección estándar, como yolo26n.pt.

  • Primero, descarga manualmente el conjunto de datos (consulta la información de abajo) y, después, entrena con el archivo de configuración Argoverse.yaml:

    Ejemplo
    from ultralytics import YOLO
    
    # Cargar un modelo
    model = YOLO("yolo26n.pt")  # Carga un modelo preentrenado (recomendado para el entrenamiento)
    
    # Entrenar el modelo
    results = model.train(data="Argoverse.yaml", epochs=100, imgsz=640)

    Para obtener una explicación detallada de los argumentos, consulta la página de entrenamiento del modelo.

  • El archivo *.zip de Argoverse-HD (~31.5 GB), que antes estaba alojado en Amazon S3, ahora se puede descargar manualmente desde Google Drive. La descarga automática no funcionará, así que descarga el archivo comprimido y extráelo en la carpeta Argoverse de tu directorio de conjuntos de datos antes de ejecutar el comando de entrenamiento.

  • Sí. Ultralytics Platform te permite subir y versionar conjuntos de datos grandes como Argoverse-HD, y después entrenar y desplegar modelos de detección de objetos en la nube sin necesidad de una configuración local compleja. También puedes explorar conjuntos de datos relacionados en la descripción general de conjuntos de datos de detección.

Comentarios