Zum Inhalt springen

VisDrone-Datensatz

Der VisDrone Dataset ist ein umfangreicher Benchmark, der vom AISKYEYE-Team am Labor für maschinelles Lernen und Data Mining der Tianjin University, China, erstellt wurde. Er enthält sorgfältig annotierte Ground-Truth-Daten für verschiedene Computer-Vision-Aufgaben im Zusammenhang mit der drohnenbasierten Bild- und Videoanalyse.



Ansehen: So trainieren Sie Ultralytics YOLO-Modelle auf dem VisDrone-Datensatz für die Drohnenbildanalyse

VisDrone besteht aus 288 Videoclips mit 261.908 Frames und 10.209 statischen Bildern, die von verschiedenen drohnenmontierten Kameras aufgenommen wurden. Der Datensatz deckt ein breites Spektrum an Aspekten ab, darunter Ort (14 verschiedene Städte in China), Umgebung (städtisch und ländlich), Objekte (Fußgänger, Fahrzeuge, Fahrräder usw.) und Dichte (spärliche und überfüllte Szenen). Der Datensatz wurde mit verschiedenen Drohnenplattformen unter verschiedenen Szenarien und Wetter- und Lichtverhältnissen erfasst. Diese Frames werden manuell mit über 2,6 Millionen Begrenzungsrahmen von Zielen wie Fußgängern, Autos, Fahrrädern und Dreirädern annotiert. Attribute wie Szenensichtbarkeit, Objektklasse und Okklusion werden ebenfalls für eine bessere Datennutzung bereitgestellt.

Dataset-Struktur

Der VisDrone-Datensatz ist in fünf Hauptuntergruppen unterteilt, 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-Tracking
  5. Aufgabe 5: Crowd Counting

Anwendungen

Der VisDrone-Datensatz wird häufig für das Training und die Evaluierung von Deep-Learning-Modellen in drohnenbasierten Computer Vision-Aufgaben wie Objekterkennung, Objektverfolgung und Crowd Counting verwendet. Die vielfältige Sammlung von Sensordaten, Objektanmerkungen und Attributen des Datensatzes macht ihn zu einer wertvollen Ressource für Forscher und Praktiker auf dem Gebiet der drohnenbasierten Computer Vision.

Datensatz-YAML

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

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 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 = [
      "https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-train.zip",
      "https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-val.zip",
      "https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-test-dev.zip",
      # "https://github.com/ultralytics/assets/releases/download/v0.0.0/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

Nutzung

Um ein YOLO11n-Modell auf dem VisDrone-Datensatz für 100 Epochen mit einer Bildgröße von 640 zu trainieren, können Sie die folgenden Code-Snippets verwenden. Eine umfassende Liste der verfügbaren Argumente finden Sie auf der Trainings-Seite des Modells.

Trainingsbeispiel

from ultralytics import YOLO

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

# Train the model
results = model.train(data="VisDrone.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=VisDrone.yaml model=yolo11n.pt epochs=100 imgsz=640

Beispieldaten und Anmerkungen

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

Beispielbild des Datensatzes

  • Aufgabe 1: Objekterkennung in Bildern - Dieses Bild zeigt ein Beispiel für die Objekterkennung in Bildern, bei der Objekte mit Begrenzungsrahmen versehen sind. Der Datensatz bietet eine Vielzahl von Bildern, die von verschiedenen Orten, Umgebungen und Dichten aufgenommen wurden, um die Entwicklung von Modellen für diese Aufgabe zu erleichtern.

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

Zitate und Danksagungen

Wenn Sie den VisDrone-Datensatz in Ihrer Forschungs- oder Entwicklungsarbeit verwenden, zitieren Sie bitte das folgende Paper:

@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 das AISKYEYE-Team am Lab of Machine Learning and Data Mining der Tianjin University, China, für die Erstellung und Pflege des VisDrone-Datensatzes als wertvolle Ressource für die drohnenbasierte Computer-Vision-Forschungsgemeinschaft anerkennen. Weitere Informationen über den VisDrone-Datensatz und seine Urheber finden Sie im VisDrone Dataset GitHub-Repository.

FAQ

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

Der VisDrone Dataset ist ein umfangreicher Benchmark, der vom AISKYEYE-Team der Tianjin University, China, erstellt wurde. Er ist für verschiedene Computer-Vision-Aufgaben im Zusammenhang mit der drohnenbasierten Bild- und Videoanalyse konzipiert. Zu den wichtigsten Merkmalen gehören:

  • Zusammensetzung: 288 Videoclips mit 261.908 Frames und 10.209 statische Bilder.
  • Annotationen: Über 2,6 Millionen Begrenzungsrahmen für Objekte wie Fußgänger, Autos, Fahrräder und Dreiräder.
  • Diversität: Gesammelt in 14 Städten, in städtischen und ländlichen Umgebungen, unter verschiedenen Wetter- und Lichtbedingungen.
  • Tasks: Unterteilt in fünf Hauptaufgaben: Objekterkennung in Bildern und Videos, Einzel- und Mehrfachobjektverfolgung und Crowd Counting.

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

Um ein YOLO11-Modell auf dem VisDrone-Datensatz für 100 Epochen mit einer Bildgröße von 640 zu trainieren, können Sie die folgenden Schritte ausführen:

Trainingsbeispiel

from ultralytics import YOLO

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

# Train the model
results = model.train(data="VisDrone.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=VisDrone.yaml model=yolo11n.pt epochs=100 imgsz=640

Weitere Konfigurationsoptionen finden Sie auf der Seite Modelltraining.

Was sind die Haupt-Subsets des VisDrone-Datensatzes und ihre Anwendungen?

Der VisDrone-Datensatz ist in fünf Hauptuntergruppen unterteilt, die jeweils auf eine bestimmte Computer-Vision-Aufgabe zugeschnitten sind:

  1. Aufgabe 1: Objekterkennung in Bildern.
  2. Aufgabe 2: Objekterkennung in Videos.
  3. Aufgabe 3: Einzelobjektverfolgung.
  4. Aufgabe 4: Mehrfachobjektverfolgung.
  5. Task 5: Crowd Counting.

Diese Teilmengen werden häufig für das Training und die Evaluierung von Deep-Learning-Modellen in drohnenbasierten Anwendungen wie Überwachung, Verkehrsüberwachung und öffentliche Sicherheit verwendet.

Wo finde ich die Konfigurationsdatei für das VisDrone-Dataset in Ultralytics?

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

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

Wenn Sie den VisDrone-Datensatz in Ihrer Forschungs- oder Entwicklungsarbeit verwenden, zitieren Sie bitte das folgende Paper:

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


📅 Vor 1 Jahr erstellt ✏️ Vor 5 Monaten aktualisiert

Kommentare