VisDrone Datensatz

Der VisDrone Datensatz ist ein groß angelegter Benchmark, der vom AISKYEYE-Team am Labor für Machine Learning und Data Mining an der Universität Tianjin, China, erstellt wurde. Er enthält sorgfältig annotierte Ground-Truth-Daten für verschiedene Aufgaben des maschinellen Sehens im Bereich der drohnengestützten Bild- und Videoanalyse.



Watch: How to Train Ultralytics YOLO26 on the VisDrone Dataset | Aerial Detection | Complete Tutorial 🚀

VisDrone besteht aus 288 Videoclips mit 261.908 Einzelbildern und 10.209 statischen Bildern, die von verschiedenen drohnenmontierten Kameras aufgenommen wurden. Der Datensatz deckt eine Vielzahl von Aspekten ab, darunter Standorte (14 verschiedene Städte in China), Umgebung (städtisch und ländlich), Objekte (Fußgänger, Fahrzeuge, Fahrräder usw.) sowie Dichte (spärliche und überfüllte Szenen). Der Datensatz wurde mit verschiedenen Drohnenplattformen unter unterschiedlichen Szenarien sowie Wetter- und Lichtbedingungen gesammelt. Diese Einzelbilder sind manuell mit über 2,6 Millionen Begrenzungsrahmen (Bounding Boxes) von Zielen wie Fußgängern, Autos, Fahrrädern und Dreirädern annotiert. Attribute wie Sichtbarkeit der Szene, Objektklasse und Verdeckung werden ebenfalls bereitgestellt, um die Datennutzung zu verbessern.

Datensatzstruktur

Der VisDrone-Datensatz ist in fünf Hauptuntergruppen gegliedert, die sich jeweils auf eine bestimmte Aufgabe konzentrieren:

  1. Aufgabe 1: Objekterkennung in Bildern
  2. Aufgabe 2: Objekterkennung in Videos
  3. Aufgabe 3: Einzelobjektverfolgung
  4. Aufgabe 4: Multi-Objekt-Verfolgung
  5. Aufgabe 5: Personenzählung (Crowd Counting)

Anwendungen

Der VisDrone-Datensatz wird häufig zum Training und zur Evaluierung von Deep-Learning-Modellen in drohnengestützten Computer-Vision-Aufgaben wie Objekterkennung, Objektverfolgung und Personenzählung eingesetzt. Die vielfältigen Sensordaten, Objektannotationen und Attribute des Datensatzes machen ihn zu einer wertvollen Ressource für Forscher und Praktiker im Bereich der drohnengestützten Computer Vision.

Datensatz-YAML

Eine YAML-Datei (Yet Another Markup Language) wird verwendet, um die Datensatzkonfiguration zu definieren. Sie enthält Informationen über die Pfade des Datensatzes, Klassen und andere relevante Details. Im Fall des Visdrone-Datensatzes wird die VisDrone.yaml-Datei unter https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/VisDrone.yaml gepflegt.

ultralytics/cfg/datasets/VisDrone.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# VisDrone2019-DET dataset https://github.com/VisDrone/VisDrone-Dataset by Tianjin University
# Documentation: https://docs.ultralytics.com/datasets/detect/visdrone/
# Example usage: yolo train data=VisDrone.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── VisDrone ← downloads here (2.3 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: VisDrone # dataset root dir
train: images/train # train images (relative to 'path') 6471 images
val: images/val # val images (relative to 'path') 548 images
test: images/test # test-dev images (optional) 1610 images

# Classes
names:
  0: pedestrian
  1: people
  2: bicycle
  3: car
  4: van
  5: truck
  6: tricycle
  7: awning-tricycle
  8: bus
  9: motor

# Download script/URL (optional) ---------------------------------------------------------------------------------------
download: |
  import os
  from pathlib import Path
  import shutil

  from ultralytics.utils.downloads import download
  from ultralytics.utils import ASSETS_URL, TQDM

  def visdrone2yolo(dir, split, source_name=None):
      """Convert VisDrone annotations to YOLO format with images/{split} and labels/{split} structure."""
      from PIL import Image

      source_dir = dir / (source_name or f"VisDrone2019-DET-{split}")
      images_dir = dir / "images" / split
      labels_dir = dir / "labels" / split
      labels_dir.mkdir(parents=True, exist_ok=True)

      # Move images to new structure
      if (source_images_dir := source_dir / "images").exists():
          images_dir.mkdir(parents=True, exist_ok=True)
          for img in source_images_dir.glob("*.jpg"):
              img.rename(images_dir / img.name)

      for f in TQDM((source_dir / "annotations").glob("*.txt"), desc=f"Converting {split}"):
          img_size = Image.open(images_dir / f.with_suffix(".jpg").name).size
          dw, dh = 1.0 / img_size[0], 1.0 / img_size[1]
          lines = []

          with open(f, encoding="utf-8") as file:
              for row in [x.split(",") for x in file.read().strip().splitlines()]:
                  if row[4] != "0":  # Skip ignored regions
                      x, y, w, h = map(int, row[:4])
                      cls = int(row[5]) - 1
                      # Convert to YOLO format
                      x_center, y_center = (x + w / 2) * dw, (y + h / 2) * dh
                      w_norm, h_norm = w * dw, h * dh
                      lines.append(f"{cls} {x_center:.6f} {y_center:.6f} {w_norm:.6f} {h_norm:.6f}\n")

          (labels_dir / f.name).write_text("".join(lines), encoding="utf-8")

  # Download (ignores test-challenge split)
  dir = Path(yaml["path"])  # dataset root dir
  urls = [
      f"{ASSETS_URL}/VisDrone2019-DET-train.zip",
      f"{ASSETS_URL}/VisDrone2019-DET-val.zip",
      f"{ASSETS_URL}/VisDrone2019-DET-test-dev.zip",
      # f"{ASSETS_URL}/VisDrone2019-DET-test-challenge.zip",
  ]
  download(urls, dir=dir, threads=4)

  # Convert
  splits = {"VisDrone2019-DET-train": "train", "VisDrone2019-DET-val": "val", "VisDrone2019-DET-test-dev": "test"}
  for folder, split in splits.items():
      visdrone2yolo(dir, split, folder)  # convert VisDrone annotations to YOLO labels
      shutil.rmtree(dir / folder)  # cleanup original directory

Verwendung

Um ein YOLO26n-Modell auf dem VisDrone-Datensatz für 100 Epochen mit einer Bildgröße von 640 zu trainieren, kannst du die folgenden Code-Schnipsel verwenden. Eine umfassende Liste der verfügbaren Argumente findest du auf der Seite zum Modell-Training.

Trainingsbeispiel
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="VisDrone.yaml", epochs=100, imgsz=640)

Beispieldaten und Annotationen

Der VisDrone-Datensatz enthält eine vielfältige Sammlung von Bildern und Videos, die von drohnenmontierten Kameras aufgenommen wurden. Hier sind einige Beispiele für Daten aus dem Datensatz, zusammen mit den entsprechenden Annotationen:

VisDrone-Datensatz Luftaufnahmen mit Objekterkennung

  • Aufgabe 1: Objekterkennung in Bildern - Dieses Bild zeigt ein Beispiel für die Objekterkennung in Bildern, bei der Objekte mit Bounding Boxes annotiert sind. Der Datensatz bietet eine große Vielfalt an Bildern, die an verschiedenen Orten, in unterschiedlichen Umgebungen und bei verschiedenen Dichten aufgenommen wurden, um die Entwicklung von Modellen für diese Aufgabe zu erleichtern.

Das Beispiel verdeutlicht die Vielfalt und Komplexität der Daten im VisDrone-Datensatz und unterstreicht die Bedeutung hochwertiger Sensordaten für drohnengestützte Computer-Vision-Aufgaben.

Zitate und Danksagungen

Wenn du den VisDrone-Datensatz in deiner Forschungs- oder Entwicklungsarbeit verwendest, zitiere bitte das folgende Papier:

Zitat
@ARTICLE{9573394,
  author={Zhu, Pengfei and Wen, Longyin and Du, Dawei and Bian, Xiao and Fan, Heng and Hu, Qinghua and Ling, Haibin},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
  title={Detection and Tracking Meet Drones Challenge},
  year={2021},
  volume={},
  number={},
  pages={1-1},
  doi={10.1109/TPAMI.2021.3119563}}

Wir möchten dem AISKYEYE-Team am Labor für Machine Learning und Data Mining an der Universität Tianjin, China, dafür danken, dass es den VisDrone-Datensatz als wertvolle Ressource für die Forschungsgemeinschaft im Bereich der drohnengestützten Computer Vision erstellt und pflegt. Weitere Informationen über den VisDrone-Datensatz und seine Ersteller findest du im GitHub-Repository zum VisDrone-Datensatz.

FAQ

Was ist der VisDrone-Datensatz und was sind seine Hauptmerkmale?

Der VisDrone-Datensatz ist ein groß angelegter Benchmark, der vom AISKYEYE-Team an der Universität Tianjin, China, erstellt wurde. Er ist für verschiedene Aufgaben des maschinellen Sehens im Bereich der drohnengestützten Bild- und Videoanalyse konzipiert. Zu den Hauptmerkmalen gehören:

  • Zusammensetzung: 288 Videoclips mit 261.908 Einzelbildern und 10.209 statischen Bildern.
  • Annotationen: Über 2,6 Millionen Bounding Boxes für Objekte wie Fußgänger, Autos, Fahrräder und Dreiräder.
  • Vielfalt: Gesammelt in 14 Städten, in städtischen und ländlichen Umgebungen, unter verschiedenen Wetter- und Lichtbedingungen.
  • Aufgaben: Unterteilt in fünf Hauptaufgaben – Objekterkennung in Bildern und Videos, Einzel- und Multi-Objekt-Verfolgung sowie Personenzählung.

Wie kann ich den VisDrone-Datensatz verwenden, um ein YOLO26-Modell mit Ultralytics zu trainieren?

Um ein YOLO26-Modell auf dem VisDrone-Datensatz für 100 Epochen mit einer Bildgröße von 640 zu trainieren, kannst du diesen Schritten folgen:

Trainingsbeispiel
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n.pt")

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

Für zusätzliche Konfigurationsoptionen lies bitte die Seite zum Modell-Training.

Was sind die wichtigsten Untergruppen des VisDrone-Datensatzes und ihre Anwendungen?

Der VisDrone-Datensatz ist in fünf Hauptuntergruppen unterteilt, die jeweils auf eine spezifische Aufgabe des maschinellen Sehens zugeschnitten sind:

  1. Aufgabe 1: Objekterkennung in Bildern.
  2. Aufgabe 2: Objekterkennung in Videos.
  3. Aufgabe 3: Einzelobjektverfolgung.
  4. Aufgabe 4: Multi-Objekt-Verfolgung.
  5. Aufgabe 5: Personenzählung.

Diese Untergruppen werden häufig zum Training und zur Evaluierung von Deep-Learning-Modellen in drohnengestützten Anwendungen wie Überwachung, Verkehrsüberwachung und öffentlicher Sicherheit verwendet.

Wo finde ich die Konfigurationsdatei für den VisDrone-Datensatz in Ultralytics?

Die Konfigurationsdatei für den VisDrone-Datensatz, VisDrone.yaml, findest du im Ultralytics-Repository unter folgendem Link: VisDrone.yaml.

Wie kann ich den VisDrone-Datensatz zitieren, wenn ich ihn in meiner Forschung verwende?

Wenn du den VisDrone-Datensatz in deiner Forschungs- oder Entwicklungsarbeit verwendest, zitiere bitte das folgende Papier:

Zitat
@ARTICLE{9573394,
  author={Zhu, Pengfei and Wen, Longyin and Du, Dawei and Bian, Xiao and Fan, Heng and Hu, Qinghua and Ling, Haibin},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
  title={Detection and Tracking Meet Drones Challenge},
  year={2021},
  volume={},
  number={},
  pages={1-1},
  doi={10.1109/TPAMI.2021.3119563}
}

Kommentare