Ultralytics YOLO27:

Набор данных Argoverse#

Набор данных Ultralytics Argoverse (Argoverse-HD) предназначен для 2D-обнаружения объектов и содержит 54 446 размеченных изображений для автономного вождения: 39 384 для обучения и 15 062 для валидации, распределенных по 8 классам: человек, велосипед, автомобиль, мотоцикл, автобус, грузовик, светофор и знак «Стоп». Изображения сняты фронтальной центральной камерой, установленной на автомобиле, а аннотации взяты из проекта потокового восприятия Университета Карнеги — Меллона, основанного на данных для вождения Argoverse 1.1 от Argo AI. Это масштабный бенчмарк на реальных данных для обучения моделей компьютерного зрения, распознающих объекты на дорогах в сценариях автономного вождения.

Открой Argoverse-HD на платформе Ultralytics, чтобы просмотреть примеры с аннотациями, изучить статистику набора данных и клонировать его для обучения.

Требуется ручная загрузка

Файл *.zip набора данных Argoverse-HD (~31,5 ГБ), необходимый для обучения, был удален с Amazon S3 после закрытия Argo AI компанией Ford. Его можно скачать вручную с Google Drive. Автоматическая загрузка не сработает: скачай архив и распакуй его в папку Argoverse каталога с наборами данных до начала обучения.

Основные особенности#

  • 8 классов для обнаружения объектов: человек, велосипед, автомобиль, мотоцикл, автобус, грузовик, светофор и знак «Стоп».
  • 54 446 размеченных изображений — 39 384 для обучения и 15 062 для валидации, а также неразмеченная тестовая выборка, зарезервированная для соревнования eval.ai.
  • ~31,5 ГБ кадров высокого разрешения с фронтальной центральной камеры, снятых в городских сценариях автономного вождения.
  • При первом использовании аннотации автоматически преобразуются в формат YOLO, поэтому набор данных можно напрямую использовать для обучения моделей Ultralytics YOLO обнаружению объектов.

Структура набора данных#

Датасет Argoverse-HD разделён на три заранее заданные подвыборки, указанные в конфигурации Argoverse.yaml:

ПодвыборкаИзображенияРазметка
Обучение39,384Да
Валидация15,062Да
Тестовая—Без разметки (соревнование eval.ai)

Во всех изображениях представлены одни и те же 8 классов объектов (индексы 0–7): человек, велосипед, автомобиль, мотоцикл, автобус, грузовик, светофор и знак «Стоп».

Автоматическое преобразование в формат 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

Использование#

Чтобы обучить модель YOLO26n на датасете Argoverse в течение 100 эпох с размером изображения 640, используй следующие примеры кода. Полный список доступных аргументов смотри на странице обучения модели.

Пример обучения
from ultralytics import YOLO

# Загрузить модель
model = YOLO("yolo26n.pt")  # загрузить предварительно обученную модель (рекомендуется для обучения)

# Обучить модель
results = model.train(data="Argoverse.yaml", epochs=100, imgsz=640)

После обучения запусти инференс на новых дорожных изображениях или видео с помощью дообученной модели:

Пример инференса
from ultralytics import YOLO

# Загрузить модель
model = YOLO("path/to/best.pt")  # загрузить дообученную модель Argoverse

# Инференс с использованием модели
results = model.predict("path/to/driving-scene.jpg")

Примеры данных и аннотаций#

Датасет Argoverse-HD содержит изображения дорог высокого разрешения, снятые кольцевой фронтально-центральной камерой и размеченные 2D ограничивающими рамками для 8 классов объектов. Ниже приведён пример изображения из датасета с соответствующими аннотациями:

Сцена автономного вождения из Argoverse-HD с размеченными объектами на дороге

  • Размеченная дорожная сцена: на изображении объекты на дороге, например автомобили и пешеходы, размечены 2D ограничивающими рамками — в таком формате модели YOLO учатся предсказывать объекты во время обучения.

Цитирование и благодарности#

Аннотации для обнаружения объектов в 2D, используемые в датасете Argoverse-HD, взяты из работы 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}
}

Мы выражаем благодарность Carnegie Mellon University за аннотации для обнаружения объектов в Argoverse-HD и Argo AI за создание исходного датасета Argoverse, ценного ресурса для сообщества исследователей автономного вождения.

Часто задаваемые вопросы#

  • Датасет Ultralytics Argoverse (Argoverse-HD) предназначен для обнаружения объектов в 2D и содержит 54 446 изображений для автономного вождения с 8 классами: человек, велосипед, автомобиль, мотоцикл, автобус, грузовик, светофор и знак «Стоп». Он используется для обучения и оценки моделей, обнаруживающих объекты на дороге по изображению с фронтальной камеры автомобиля, а также для исследований в области восприятия беспилотных автомобилей, ADAS и мониторинга дорожного движения.

  • Датасет Argoverse-HD содержит 8 классов (человек, велосипед, автомобиль, мотоцикл, автобус, грузовик, светофор и знак «Стоп») и 54 446 размеченных изображений — 39 384 для обучения и 15 062 для валидации, — а также неразмеченную тестовую подвыборку для соревнования eval.ai.

  • В Ultralytics это датасет для обнаружения объектов в 2D (кадры Argoverse-HD с камер с 2D ограничивающими рамками), а не набор данных для исследований 3D-трекинга, прогнозирования движения или LiDAR из более широкой программы Argoverse. Для обучения используй стандартную модель обнаружения, например yolo26n.pt.

  • Сначала вручную скачай датасет (см. ниже), затем запусти обучение с файлом конфигурации Argoverse.yaml:

    Пример
    from ultralytics import YOLO
    
    # Загрузить модель
    model = YOLO("yolo26n.pt")  # загрузить предварительно обученную модель (рекомендуется для обучения)
    
    # Обучить модель
    results = model.train(data="Argoverse.yaml", epochs=100, imgsz=640)

    Подробное описание аргументов смотри на странице обучения модели.

  • Файл *.zip датасета Argoverse-HD (~31.5 GB), который раньше размещался на Amazon S3, теперь можно вручную скачать с Google Drive. Автоматическая загрузка не сработает, поэтому скачай архив и распакуй его в папку Argoverse в каталоге с датасетами, прежде чем запускать обучение.

  • Да. Ultralytics Platform позволяет загружать большие датасеты, например Argoverse-HD, управлять их версиями, а затем обучать и развёртывать модели обнаружения объектов в облаке без сложной локальной настройки. Также ты можешь просматривать связанные датасеты в обзоре датасетов для обнаружения объектов.

Комментарии