Enterprise-ready Sicherheit: ISO 27001 + SOC 2 Type I konform.
No license

Link to this sectionVisDrone-Datensatz#

Das VisDrone Dataset ist ein groß angelegter Benchmark für Drohnenaufnahmen, dessen Detektions-Teilsatz (VisDrone2019-DET) 8.629 Luftbilder bereitstellt – 6.471 für Training, 548 für Validierung und 1.610 für Test-dev –, die mit 10 Objektklassen für die Objekterkennung annotiert sind. Es wurde vom AISKYEYE-Team am Labor für Machine Learning und Data Mining an der Tianjin Universität in China erstellt.



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

Der vollständige VisDrone-Benchmark umfasst 288 Videoclips (261.908 Frames) und 10.209 statische Bilder, die von drohnengestützten Kameras in 14 verschiedenen Städten in ganz China aufgenommen wurden und städtische sowie ländliche Umgebungen, spärliche und überfüllte Szenen sowie verschiedene Wetter- und Lichtbedingungen abdecken. Die Frames enthalten über 2,6 Millionen manuell annotierte bounding boxes mit zusätzlichen Attributen wie Sichtbarkeit der Szene, Objektklasse und Verdeckung. Die Ultralytics VisDrone.yaml-Konfiguration verwendet den VisDrone2019-DET-Teilsatz statischer Bilder dieses Benchmarks.

Link to this sectionHauptfunktionen#

  • Kleine, dichte Objekte: Luftaufnahmen lassen Ziele winzig und gedrängt erscheinen – allein die 548 Validierungsbilder enthalten 38.759 gelabelte Boxen, durchschnittlich etwa 70 Objekte pro Bild.
  • Szenenvielfalt: Bilder aus 14 chinesischen Städten, die städtische und ländliche Standorte abdecken, bei Tag und Nacht sowie unter verschiedenen Wetterbedingungen.
  • Reichhaltige Annotationen: Über 2,6 Millionen Boxen über den gesamten Benchmark hinweg, mit Attributen für Verdeckung und Sichtbarkeit.
  • Vordefinierte Aufteilungen: Feste Aufteilungen in Train / Val / Test-dev (6.471 / 548 / 1.610 Bilder) für eine konsistente Evaluierung.

Link to this sectionDatensatzstruktur#

Die Ultralytics VisDrone-Konfiguration deckt den VisDrone2019-DET-Bild-Teilsatz ab, der in drei Teile unterteilt ist:

SplitBilderBeschreibung
Trainieren6.471Labelierte Luftbilder zum Trainieren des Detektors
Validation548Bilder zur Evaluierung während der Entwicklung
Test-dev1.610Zurückgehaltene Bilder für die abschließende Evaluierung des trainierten Modells

Ein vierter Teil, test-challenge (1.580 Bilder), wird für den VisDrone-Wettbewerb zurückgehalten und nicht heruntergeladen, weshalb das vollständige DET-Set insgesamt 10.209 Bilder umfasst.

Der Datensatz annotiert 10 Objektklassen: pedestrian, people, bicycle, car, van, truck, tricycle, awning-tricycle, bus und motor. VisDrone unterscheidet pedestrian (eine stehende oder gehende Person) von people (eine Person in jeder anderen Haltung).

Automatische YOLO-Konvertierung

Bei der ersten Verwendung konvertiert das Download-Skript die ursprünglichen VisDrone-Annotationen in das YOLO-Format, wobei als ignoriert markierte Regionen übersprungen werden (was auch die ungenutzte Kategorie "others" ausschließt).

Link to this sectionAnwendungen#

Die dichten Szenen und winzigen Ziele von VisDrone machen es zu einem Standard-Benchmark für small-object detection aus der Vogelperspektive. Häufige Anwendungsgebiete sind:

  • Verkehrsüberwachung und Fahrzeugzählung mittels UAVs
  • Mengenanalyse und Überwachung der öffentlichen Sicherheit
  • Inspektion von Infrastruktur und Baustellen
  • Forschung zu Computer vision bei der Erkennung kleiner Objekte in unübersichtlichen Szenen

Für andere Benchmarks von Luftbildern, siehe den auf Satelliten ausgerichteten xView dataset oder den DOTA-v2 dataset für orientierte Boxen.

Link to this sectionDatensatz-YAML#

Die VisDrone.yaml-Datei definiert die Datensatzkonfiguration – die Datensatzpfade, Klassennamen und das automatische Skript zum Herunterladen und Konvertieren. Sie wird im Ultralytics-Repository 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 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

Link to this sectionVerwendung#

~2 GB Download

VisDrone wird beim ersten Training automatisch heruntergeladen – drei Archive mit insgesamt etwa 2 GB – und benötigt während der Entpackung und Konvertierung etwa 4 GB freien Festplattenspeicher.

Um ein YOLO26n-Modell auf dem VisDrone-Datensatz für 100 Epochen bei einer Bildgröße von 640 zu trainieren, kannst du die folgenden Code-Snippets 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 - dataset will auto-download on first run
results = model.train(data="VisDrone.yaml", epochs=100, imgsz=640)

Um zusätzliche Luftbilder zu labeln und VisDrone-Trainingsläufe in deinem Browser zu verwalten, nutze die Ultralytics Platform.

Link to this sectionBeispieldaten und Annotationen#

Das Beispiel unten zeigt eine typische VisDrone-Szene: eine Luftaufnahme über einer belebten Straße, wo Fußgänger und Fahrzeuge als kleine, dicht gedrängte Ziele erscheinen, von denen viele teilweise durch andere verdeckt sind.

Luftaufnahmen des VisDrone-Datensatzes mit Objekterkennung

Link to this sectionZitate und Danksagungen#

Wenn du den VisDrone-Datensatz in deiner Forschung oder Entwicklungsarbeit verwendest, zitiere bitte die folgende Arbeit:

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={2022},
  volume={44},
  number={11},
  pages={7380-7399},
  doi={10.1109/TPAMI.2021.3119563}}

Wir möchten dem AISKYEYE-Team am Labor für Machine Learning und Data Mining der Tianjin Universität in China dafür danken, dass sie den VisDrone-Datensatz erstellt und gepflegt haben. Für weitere Informationen besuche das VisDrone Dataset GitHub repository.

Link to this sectionFAQ#

Link to this sectionWofür wird der VisDrone-Datensatz verwendet?#

VisDrone wird zum Trainieren und Evaluieren von Detektoren auf von Drohnen aufgenommenen Bildern verwendet, bei denen Objekte klein, dicht und von oben gesehen sind. Die Kombination aus Vogelperspektive, überfüllten Szenen und unterschiedlichen Bedingungen macht ihn zu einer Standard-Testumgebung für UAV-basierte Verkehrsüberwachung, Mengenanalyse und Forschung zur Objekterkennung kleiner Ziele.

Link to this sectionWie viele Bilder und Klassen hat VisDrone?#

Die Ultralytics VisDrone-Konfiguration enthält 8.629 Bilder: 6.471 für das Training, 548 für die Validierung und 1.610 für das Testen (test-dev). Alle Aufteilungen teilen sich dieselben 10 Klassen: pedestrian, people, bicycle, car, van, truck, tricycle, awning-tricycle, bus und motor. Siehe Dataset Structure für die vollständige Aufschlüsselung.

Link to this sectionWie lade ich den VisDrone-Datensatz herunter?#

VisDrone wird beim ersten Training mit data="VisDrone.yaml" automatisch heruntergeladen – es sind keine manuellen Schritte erforderlich. Das Skript ruft drei Archive (ca. 2 GB) von den Ultralytics GitHub-Release-Assets ab und konvertiert die Annotationen in das YOLO-Format. Der für den Wettbewerb zurückgehaltene test-challenge-Teil ist nicht enthalten.

Link to this sectionWie trainiere ich ein YOLO26-Modell auf dem VisDrone-Datensatz?#

Trainiere ein YOLO26n-Modell auf VisDrone für 100 Epochen bei einer Bildgröße von 640:

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)

Für detaillierte Konfigurationen siehe die Seite Training und Tipps zum Modelltraining.

Link to this sectionWarum ist VisDrone für Objektdetektoren schwierig und wie kann ich die Genauigkeit verbessern?#

Objekte in VisDrone sind im Verhältnis zum Bild winzig – oft nur wenige Dutzend Pixel – und erscheinen in dichten, stark verdeckten Gruppen, was Detektoren belastet, die auf Fotos vom Boden aus optimiert sind. Training und Vorhersage bei höherer Auflösung (zum Beispiel imgsz=1280 mit einer kleineren Batch-Größe) gewinnen kleine Ziele zurück, und SAHI tiled inference zerlegt große Bilder, damit kleine Objekte einen größeren Teil jedes Inferenz-Fensters einnehmen.

Link to this sectionWas ist der Unterschied zwischen VisDrone-DET und dem vollständigen VisDrone-Benchmark?#

Der vollständige VisDrone-Benchmark umfasst fünf Aufgaben – Objekterkennung in Bildern, Objekterkennung in Videos, Einzelobjekt-Tracking, multi-object tracking und Personenzählung – über 288 Videoclips und 10.209 statische Bilder hinweg. Die Ultralytics VisDrone.yaml-Konfiguration deckt nur die Objekterkennungsaufgabe in Bildern (VisDrone2019-DET) ab und lädt deren 6.471 Trainings-, 548 Validierungs- und 1.610 Test-dev-Bilder herunter.

Link to this sectionWie zitiere ich VisDrone in meiner Forschung?#

Zitiere das Papier "Detection and Tracking Meet Drones Challenge" (IEEE TPAMI, vol. 44, no. 11, 2022, DOI 10.1109/TPAMI.2021.3119563); der vollständige BibTeX-Eintrag befindet sich im Abschnitt Citations and Acknowledgments oben.

Kommentare