Argoverse 데이터셋

Argoverse 데이터셋은 3D 추적, 모션 예측, 스테레오 깊이 추정과 같은 자율주행 작업 연구를 지원하기 위해 설계된 데이터 모음입니다. Argo AI에서 개발한 이 데이터셋은 고해상도 이미지, LiDAR 포인트 클라우드, 지도 데이터를 포함한 광범위하고 고품질의 센서 데이터를 제공합니다.

참고

학습에 필요한 Argoverse 데이터셋 *.zip 파일은 Ford의 Argo AI 폐업 이후 Amazon S3에서 제거되었으나, 당사에서는 Google Drive를 통해 수동으로 다운로드할 수 있도록 제공하고 있습니다.

주요 특징

  • Argoverse에는 1,263개의 개별 장면(scene)에 걸쳐 29만 개 이상의 라벨링된 3D 객체 트랙과 500만 개의 객체 인스턴스가 포함되어 있습니다.
  • 이 데이터셋에는 고해상도 카메라 이미지, LiDAR 포인트 클라우드, 풍부하게 주석이 달린 HD 지도가 포함되어 있습니다.
  • 주석(annotation)에는 객체에 대한 3D BBox, 객체 트랙, 궤적 정보가 포함됩니다.
  • Argoverse는 3D 추적, 모션 예측, 스테레오 깊이 추정과 같은 다양한 작업을 위한 다중 서브셋을 제공합니다.

데이터셋 구조

Argoverse 데이터셋은 크게 세 가지 주요 서브셋으로 구성됩니다:

  1. Argoverse 3D Tracking: 이 서브셋은 3D 객체 추적 작업에 초점을 맞춘 113개의 장면과 29만 개 이상의 라벨링된 3D 객체 트랙을 포함합니다. 여기에는 LiDAR 포인트 클라우드, 카메라 이미지, 센서 보정 정보가 포함됩니다.
  2. Argoverse Motion Forecasting: 이 서브셋은 60시간의 주행 데이터에서 수집된 32만 4천 개의 차량 궤적으로 구성되어 있으며, 모션 예측 작업에 적합합니다.
  3. Argoverse Stereo Depth Estimation: 이 서브셋은 스테레오 깊이 추정 작업을 위해 설계되었으며, 그라운드 트루스(ground truth) 깊이 추정을 위한 대응 LiDAR 포인트 클라우드가 포함된 1만 개 이상의 스테레오 이미지 쌍을 포함합니다.

응용 분야

Argoverse 데이터셋은 3D 객체 추적, 모션 예측, 스테레오 깊이 추정과 같은 자율주행 작업에서 deep learning 모델을 학습하고 평가하는 데 널리 사용됩니다. 이 데이터셋의 다양한 센서 데이터, 객체 주석, 지도 정보는 자율주행 분야의 연구자와 실무자들에게 귀중한 자원입니다.

데이터셋 YAML

데이터셋 구성을 정의하기 위해 YAML (Yet Another Markup Language) 파일이 사용됩니다. 여기에는 데이터셋의 경로, 클래스 및 기타 관련 정보가 포함되어 있습니다. Argoverse 데이터셋의 경우, Argoverse.yaml 파일은 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.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

사용법

Argoverse 데이터셋에서 이미지 크기 640으로 100 epochs 동안 YOLO26n 모델을 학습하려면 다음 코드 스니펫을 사용할 수 있습니다. 사용 가능한 인수에 대한 전체 목록은 모델 Training 페이지를 참조하십시오.

학습 예제
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="Argoverse.yaml", epochs=100, imgsz=640)

샘플 데이터 및 주석

Argoverse 데이터셋은 카메라 이미지, LiDAR 포인트 클라우드, HD 지도 정보를 포함한 다양한 센서 데이터를 포함하고 있어 자율주행 작업에 대한 풍부한 맥락을 제공합니다. 다음은 해당 주석과 함께 데이터셋에서 추출한 데이터의 몇 가지 예입니다:

Argoverse 데이터셋 3D 추적 샘플(차량 주석 포함)

  • Argoverse 3D Tracking: 이 이미지는 객체에 3D BBox가 주석으로 달린 3D 객체 추적의 예시를 보여줍니다. 이 데이터셋은 이 작업을 위한 모델 개발을 원활하게 하기 위해 LiDAR 포인트 클라우드와 카메라 이미지를 제공합니다.

이 예시는 Argoverse 데이터셋의 데이터 다양성과 복잡성을 보여주며 자율주행 작업을 위한 고품질 센서 데이터의 중요성을 강조합니다.

인용 및 감사의 글

연구 또는 개발 작업에서 Argoverse 데이터셋을 사용하는 경우 다음 논문을 인용해 주십시오:

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

자율주행 연구 커뮤니티를 위한 귀중한 자원으로서 Argoverse 데이터셋을 생성하고 유지 관리해 준 Argo AI에 감사를 표합니다. Argoverse 데이터셋과 제작자에 대한 자세한 내용은 Argoverse 데이터셋 웹사이트를 방문하십시오.

FAQ

Argoverse 데이터셋이란 무엇이며 주요 특징은 무엇입니까?

Argo AI에서 개발한 Argoverse 데이터셋은 자율주행 연구를 지원합니다. 여기에는 1,263개의 개별 장면에서 29만 개 이상의 라벨링된 3D 객체 트랙과 500만 개의 객체 인스턴스가 포함되어 있습니다. 이 데이터셋은 고해상도 카메라 이미지, LiDAR 포인트 클라우드, 주석이 달린 HD 지도를 제공하여 3D 추적, 모션 예측, 스테레오 깊이 추정과 같은 작업에 매우 유용합니다.

Argoverse 데이터셋을 사용하여 어떻게 Ultralytics YOLO 모델을 학습할 수 있습니까?

Argoverse 데이터셋으로 YOLO26 모델을 학습하려면 제공된 YAML 구성 파일과 다음 코드를 사용하십시오:

학습 예제
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="Argoverse.yaml", epochs=100, imgsz=640)

인수에 대한 자세한 설명은 모델 Training 페이지를 참조하십시오.

Argoverse 데이터셋에서 사용할 수 있는 데이터 및 주석 유형은 무엇입니까?

Argoverse 데이터셋에는 고해상도 카메라 이미지, LiDAR 포인트 클라우드, HD 지도 데이터와 같은 다양한 센서 데이터 유형이 포함되어 있습니다. 주석에는 3D BBox, 객체 트랙, 궤적 정보가 포함됩니다. 이러한 포괄적인 주석은 3D 객체 추적, 모션 예측, 스테레오 깊이 추정과 같은 작업에서 정확한 모델 학습을 위해 필수적입니다.

Argoverse 데이터셋은 어떻게 구성되어 있습니까?

데이터셋은 크게 세 가지 주요 서브셋으로 나뉩니다:

  1. Argoverse 3D Tracking: 3D 객체 추적 작업에 초점을 맞춘 113개의 장면과 29만 개 이상의 라벨링된 3D 객체 트랙이 포함되어 있습니다. LiDAR 포인트 클라우드, 카메라 이미지, 센서 보정 정보가 포함됩니다.
  2. Argoverse Motion Forecasting: 60시간의 주행 데이터에서 수집된 32만 4천 개의 차량 궤적으로 구성되어 있으며, 모션 예측 작업에 적합합니다.
  3. Argoverse Stereo Depth Estimation: 그라운드 트루스 깊이 추정을 위한 대응 LiDAR 포인트 클라우드가 포함된 1만 개 이상의 스테레오 이미지 쌍이 포함되어 있습니다.

Amazon S3에서 제거된 지금, Argoverse 데이터셋은 어디에서 다운로드할 수 있습니까?

이전에 Amazon S3에서 사용할 수 있었던 Argoverse 데이터셋 *.zip 파일은 이제 Google Drive에서 수동으로 다운로드할 수 있습니다.

Argoverse 데이터셋에서 YAML 구성 파일은 어떤 용도로 사용됩니까?

YAML 파일에는 데이터셋의 경로, 클래스 및 기타 필수 정보가 포함되어 있습니다. Argoverse 데이터셋의 경우 구성 파일인 Argoverse.yaml은 다음 링크에서 찾을 수 있습니다: Argoverse.yaml.

YAML 구성에 대한 자세한 내용은 datasets 가이드를 참조하십시오.

댓글