Salta para o conteúdo

Conjunto de dados Argoverse

O conjunto de dados Argoverse é uma coleção de dados concebida para apoiar a investigação em tarefas de condução autónoma, como o seguimento 3D, a previsão de movimentos e a estimativa de profundidade estéreo. Desenvolvido pela Argo AI, o conjunto de dados fornece uma vasta gama de dados de sensores de alta qualidade, incluindo imagens de alta resolução, nuvens de pontos LiDAR e dados de mapas.

Nota

O conjunto de dados Argoverse *.zip O ficheiro necessário para a formação foi removido do Amazon S3 após o encerramento do Argo AI pela Ford, mas disponibilizámo-lo para transferência manual em Google Drive.

Características principais

  • O Argoverse contém mais de 290 mil rastos de objectos 3D etiquetados e 5 milhões de instâncias de objectos em 1.263 cenas distintas.
  • O conjunto de dados inclui imagens de câmaras de alta resolução, nuvens de pontos LiDAR e mapas HD ricamente anotados.
  • As anotações incluem caixas delimitadoras 3D para objectos, rastos de objectos e informações de trajetória.
  • O Argoverse fornece vários subconjuntos para diferentes tarefas, como rastreamento 3D, previsão de movimento e estimativa de profundidade estéreo.

Estrutura do conjunto de dados

O conjunto de dados Argoverse está organizado em três subconjuntos principais:

  1. Argoverse 3D Tracking: Este subconjunto contém 113 cenas com mais de 290 mil trajectos de objectos 3D etiquetados, centrando-se em tarefas de seguimento de objectos 3D. Inclui nuvens de pontos LiDAR, imagens de câmaras e informações de calibração de sensores.
  2. Previsão de movimentos Argoverse: Este subconjunto é composto por 324K trajectórias de veículos recolhidas a partir de 60 horas de dados de condução, adequadas para tarefas de previsão de movimentos.
  3. Estimativa de profundidade estéreo Argoverse: Este subconjunto foi concebido para tarefas de estimativa de profundidade estéreo e inclui mais de 10 mil pares de imagens estéreo com nuvens de pontos LiDAR correspondentes para a estimativa de profundidade da verdade terrestre.

Aplicações

O conjunto de dados Argoverse é amplamente utilizado para treinar e avaliar modelos de aprendizagem profunda em tarefas de condução autónoma, como o seguimento de objectos 3D, a previsão de movimentos e a estimativa de profundidade estéreo. O conjunto diversificado de dados de sensores, anotações de objectos e informações de mapas do conjunto de dados torna-o um recurso valioso para investigadores e profissionais na área da condução autónoma.

Conjunto de dados YAML

Um ficheiro YAML (Yet Another Markup Language) é utilizado para definir a configuração do conjunto de dados. Contém informações sobre os caminhos do conjunto de dados, classes e outras informações relevantes. No caso do conjunto de dados Argoverse, o ficheiro Argoverse.yaml é mantido em https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/Argoverse.yaml.

ultralytics/cfg/datasets/Argoverse.yaml

# Ultralytics YOLO 🚀, AGPL-3.0 license
# Argoverse-HD dataset (ring-front-center camera) https://www.cs.cmu.edu/~mengtial/proj/streaming/ by Argo AI
# 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: ../datasets/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 tqdm import tqdm
  from ultralytics.utils.downloads import download
  from pathlib import Path

  def argoverse2yolo(set):
      labels = {}
      a = json.load(open(set, "rb"))
      for annot in tqdm(a['annotations'], desc=f"Converting {set} to YOLOv5 format..."):
          img_id = annot['image_id']
          img_name = a['images'][img_id]['name']
          img_label_name = f'{img_name[:-3]}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 = set.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") as f:
              f.writelines(labels[k])


  # Download 'https://argoverse-hd.s3.us-east-2.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

Utilização

Para treinar um modelo YOLOv8n no conjunto de dados Argoverse para 100 épocas com um tamanho de imagem de 640, podes utilizar os seguintes snippets de código. Para obter uma lista abrangente dos argumentos disponíveis, consulta a página de treino do modelo.

Exemplo de comboio

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data='Argoverse.yaml', epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=Argoverse.yaml model=yolov8n.pt epochs=100 imgsz=640

Dados de amostra e anotações

O conjunto de dados Argoverse contém um conjunto diversificado de dados de sensores, incluindo imagens de câmaras, nuvens de pontos LiDAR e informações de mapas HD, fornecendo um contexto rico para tarefas de condução autónoma. Aqui estão alguns exemplos de dados do conjunto de dados, juntamente com as anotações correspondentes:

Imagem de amostra do conjunto de dados

  • Argoverse 3D Tracking: Esta imagem demonstra um exemplo de seguimento de objectos 3D, em que os objectos são anotados com caixas delimitadoras 3D. O conjunto de dados fornece nuvens de pontos LiDAR e imagens de câmaras para facilitar o desenvolvimento de modelos para esta tarefa.

O exemplo mostra a variedade e a complexidade dos dados no conjunto de dados Argoverse e realça a importância de dados de sensores de alta qualidade para tarefas de condução autónoma.

Citações e agradecimentos

Se utilizares o conjunto de dados Argoverse no teu trabalho de investigação ou desenvolvimento, cita o seguinte documento:

@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}
}

Gostaríamos de agradecer à Argo AI por criar e manter o conjunto de dados Argoverse como um recurso valioso para a comunidade de investigação da condução autónoma. Para mais informações sobre o conjunto de dados Argoverse e os seus criadores, visita o sítio Web do conjunto de dados Argoverse.



Criado em 2023-11-12, Atualizado em 2024-01-14
Autores: glenn-jocher (4), Laughing-q (1)

Comentários