Ultralytics YOLO27:

Argoverseデータセット#

UltralyticsのArgoverseデータセット(Argoverse-HD)は、8クラス(person、bicycle、car、motorcycle、bus、truck、traffic light、stop sign)にわたる54,446枚のラベル付き自動運転画像(トレーニング用39,384枚、検証用15,062枚)で構成された2D 物体検出データセットです。画像は車両のリング前方中央カメラで撮影され、アノテーションはArgo AIのArgoverse 1.1走行データを基盤とする、Carnegie Mellon Universityのストリーミング知覚プロジェクトから提供されています。自動運転シナリオで道路上の物体を検出するコンピュータービジョンモデルのトレーニングに適した、大規模な実環境ベンチマークです。

Ultralytics Platform上のArgoverse-HDで、アノテーション付きサンプルのプレビュー、データセット統計の確認、トレーニング用のクローン作成を行えます。

手動ダウンロードが必要です

トレーニングに必要なArgoverse-HDの*.zipファイル(~31.5 GB)は、FordによるArgo AIの閉鎖後、Amazon S3から削除されました。Google Driveから手動でダウンロードできます。自動ダウンロードは機能しないため、トレーニング前にアーカイブをダウンロードしてください。

主な特徴#

  • 8つの物体検出クラス: person、bicycle、car、motorcycle、bus、truck、traffic light、stop sign。
  • 54,446枚のラベル付き画像(トレーニング用39,384枚、検証用15,062枚)に加え、eval.aiチャレンジ用に確保されたラベルなしのテスト分割があります。
  • 都市部の自動運転シーンで撮影された、リング前方中央カメラの高解像度フレーム約31.5 GBです。
  • アノテーションは初回使用時にYOLO形式へ自動変換されるため、データセットをUltralytics YOLO検出モデルで直接トレーニングできます。

データセットの構成#

Argoverse-HDデータセットは、Argoverse.yaml設定で定義された、あらかじめ定められた3つのサブセットに分割されています。

分割画像ラベル
トレーニング39,384はい
検証15,062はい
テストラベルなし(eval.aiチャレンジ

すべての画像で、同じ8つの物体クラス(インデックス0~7)(person、bicycle、car、motorcycle、bus、truck、traffic light、stop sign)が使用されています。

YOLOへの自動変換

手動ダウンロード後、Ultralyticsは初回のトレーニング時に元のArgoverse-HDアノテーションをYOLO検出ラベルへ自動変換するため、手動の前処理は必要ありません。

アプリケーション#

Argoverse-HDデータセットは、自動運転におけるさまざまな物体検出用途に対応しています。

  • 自動運転の知覚 — 前方カメラから車両、歩行者、自転車利用者を検出し、自動運転車のナビゲーションを支援します。
  • 先進運転支援システム (ADAS) — 信号機や一時停止標識を認識し、リアルタイムのドライバー警告に利用します。
  • 交通監視 — 都市部のシーンで道路利用者をカウントおよび追跡し、スマートシティ分析に活用します。
  • 研究とプロトタイピング — 走行データに対するモデルのトレーニング予測の学習に適した、大規模な実環境ベンチマークです。

データセット YAML#

YAMLファイルで、パス、クラス、その他の関連情報を含むデータセット設定を定義します。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.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データセットでYOLO26nモデルを100エポック、画像サイズ640でトレーニングするには、次のコードサンプルを使用します。利用可能な引数の一覧については、モデルのトレーニングページを参照してください。

トレーニング例
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)

トレーニング後、ファインチューニング済みモデルで新しい走行画像または動画に対して推論を実行します。

推論例
from ultralytics import YOLO

# Load a model
model = YOLO("path/to/best.pt")  # load an Argoverse fine-tuned model

# Inference using the model
results = model.predict("path/to/driving-scene.jpg")

サンプルデータとアノテーション#

Argoverse-HDデータセットには、リング前方中央カメラで撮影され、8つの物体クラスに対する2Dバウンディングボックスが付与された高解像度の走行画像が含まれています。以下は、対応するアノテーション付きのデータセット画像の例です。

アノテーション付き道路物体が写るArgoverse-HDの自動運転シーン

  • アノテーション付き走行シーン: この画像には、車両や歩行者などの道路上の物体が2Dバウンディングボックスでラベル付けされています。これは、YOLOモデルがトレーニング中に予測する形式です。

引用と謝辞#

このデータセットで使用されているArgoverse-HDの2D検出アノテーションは、Carnegie Mellon Universityのストリーミング知覚に関する研究成果です。研究または開発でデータセットを使用する場合は、次の文献を引用してください。

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

自動運転研究コミュニティにとって貴重なリソースであるArgoverse-HDの検出アノテーションを提供したCarnegie Mellon Universityと、元のArgoverseデータセットを作成したArgo AIに謝意を表します。

FAQ#

  • UltralyticsのArgoverseデータセット(Argoverse-HD)は、8クラス(person、bicycle、car、motorcycle、bus、truck、traffic light、stop sign)にわたる54,446枚の自動運転画像で構成された2D 物体検出データセットです。前方を向いた車載カメラから道路上の物体を検出するモデルのトレーニングと評価に使用され、自動運転の知覚、ADAS、交通監視の研究を支援します。

  • Argoverse-HDデータセットには、8つのクラス(person、bicycle、car、motorcycle、bus、truck、traffic light、stop sign)と、54,446枚のラベル付き画像(トレーニング用39,384枚、検証用15,062枚)があり、さらにeval.aiチャレンジ用に確保されたラベルなしのテスト分割があります。

  • Ultralyticsでは、これは2D物体検出データセット(2Dバウンディングボックス付きのArgoverse-HDカメラフレーム)であり、より広範なArgoverseプログラムに含まれる3Dトラッキング、動き予測、LiDAR研究スイートではありません。yolo26n.ptなどの標準的な検出モデルでトレーニングします。

  • まずデータセットを手動でダウンロードし(以下を参照)、Argoverse.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)

    引数の詳しい説明については、モデルのトレーニングページを参照してください。

  • 以前はAmazon S3でホストされていたArgoverse-HDの*.zipファイル(~31.5 GB)は、現在はGoogle Driveから手動でダウンロードできます。自動ダウンロードは機能しないため、トレーニングコマンドを実行する前にアーカイブを取得してください。

  • はい。Ultralytics Platformでは、Argoverse-HDのような大規模データセットをアップロードしてバージョン管理し、ローカル環境を大規模に構築することなく、クラウドで物体検出モデルのトレーニングとデプロイを行えます。検出データセットの概要で関連データセットを参照することもできます。

コメント