Overslaan naar inhoud

Argoverse Dataset

De Argoverse dataset is een verzameling gegevens die is ontworpen ter ondersteuning van onderzoek naar autonoom rijden, zoals 3D-tracking, bewegingsvoorspelling en stereodiepteschatting. De dataset is ontwikkeld door Argo AI en biedt een breed scala aan hoogwaardige sensorgegevens, waaronder hogeresolutiebeelden, LiDAR-puntenwolken en kaartgegevens.

Opmerking

De Argoverse dataset *.zip bestand dat nodig is voor de training werd verwijderd van Amazon S3 na de sluiting van Argo AI door Ford, maar we hebben het beschikbaar gemaakt om handmatig te downloaden op Google Drive.

Belangrijkste kenmerken

  • Argoverse bevat meer dan 290K gelabelde 3D objectsporen en 5 miljoen objectinstanties in 1.263 verschillende scènes.
  • De dataset bevat camerabeelden met een hoge resolutie, LiDAR-puntenwolken en rijkelijk geannoteerde HD-kaarten.
  • Annotaties omvatten 3D begrenzingskaders voor objecten, objectsporen en trajectinformatie.
  • Argoverse biedt meerdere subsets voor verschillende taken, zoals 3D-tracking, bewegingsvoorspelling en stereodiepteschatting.

Structuur dataset

De Argoverse dataset is onderverdeeld in drie subsets:

  1. Argoverse 3D volgen: Deze subset bevat 113 scènes met meer dan 290K gelabelde 3D objectsporen, gericht op 3D objectvolg taken. Het bevat LiDAR puntenwolken, camerabeelden en informatie over sensorkalibratie.
  2. Argoverse Bewegingsvoorspelling: Deze subset bestaat uit 324K voertuigtrajecten verzameld uit 60 uur rijgegevens, geschikt voor het voorspellen van bewegingen.
  3. Argoverse stereodiepteschatting: Deze subset is ontworpen voor stereodiepteschattingstaken en bevat meer dan 10.000 stereobeelderparen met bijbehorende LiDAR-puntenwolken voor het schatten van de grondwaarheidsdiepte.

Toepassingen

De Argoverse dataset wordt veel gebruikt voor het trainen en evalueren van deep learning modellen in autonoom rijdende taken zoals 3D object volgen, bewegingsvoorspelling en stereodiepteschatting. De diverse set sensorgegevens, objectannotaties en kaartinformatie van de dataset maken het een waardevolle bron voor onderzoekers en praktijkmensen op het gebied van autonoom rijden.

Dataset YAML

Een YAML (Yet Another Markup Language) bestand wordt gebruikt om de configuratie van de dataset te definiëren. Het bevat informatie over de paden, klassen en andere relevante informatie van de dataset. In het geval van de Argoverse dataset is de Argoverse.yaml bestand wordt onderhouden op 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

Gebruik

Om een YOLOv8n model te trainen op de Argoverse dataset voor 100 epochs met een afbeeldingsgrootte van 640, kun je de volgende codefragmenten gebruiken. Raadpleeg de pagina Model Training voor een uitgebreide lijst met beschikbare argumenten.

Voorbeeld trein

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

Voorbeeldgegevens en annotaties

De Argoverse dataset bevat een diverse set sensorgegevens, waaronder camerabeelden, LiDAR puntenwolken en HD kaartinformatie, die een rijke context bieden voor autonome rijtaken. Hier zijn enkele voorbeelden van gegevens uit de dataset, samen met de bijbehorende annotaties:

Voorbeeldafbeelding dataset

  • Argoverse 3D volgen: Deze afbeelding toont een voorbeeld van 3D object tracking, waarbij objecten worden geannoteerd met 3D bounding boxes. De dataset biedt LiDAR-puntenwolken en camerabeelden om de ontwikkeling van modellen voor deze taak te vergemakkelijken.

Het voorbeeld toont de verscheidenheid en complexiteit van de gegevens in de Argoverse dataset en benadrukt het belang van hoogwaardige sensorgegevens voor autonome rijtaken.

Citaten en erkenningen

Als je de Argoverse dataset gebruikt in je onderzoek of ontwikkeling, citeer dan het volgende artikel:

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

We willen graag Argo AI bedanken voor het maken en onderhouden van de Argoverse dataset als een waardevolle bron voor de autonoom rijdende onderzoeksgemeenschap. Ga voor meer informatie over de Argoverse dataset en de makers ervan naar de Argoverse dataset website.



Aangemaakt 2023-11-12, Bijgewerkt 2024-01-14
Auteurs: glenn-jocher (4), Laughing-q (1)

Reacties