Sicurezza a livello enterprise: Conforme a ISO 27001 + SOC 2 Type I.
No license

Link to this sectionDataset VisDrone#

Il VisDrone Dataset è un benchmark di immagini da drone su larga scala il cui sottoinsieme di rilevamento (VisDrone2019-DET) fornisce 8.629 immagini aeree — 6.471 di addestramento, 548 di validazione e 1.610 di test-dev — annotate con 10 classi di oggetti per l'object detection. È stato creato dal team AISKYEYE presso il laboratorio di Machine Learning e Data Mining della Tianjin University, in Cina.



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

Il benchmark completo VisDrone comprende 288 video clip (261.908 fotogrammi) e 10.209 immagini statiche catturate da telecamere montate su droni in 14 diverse città della Cina, spaziando tra ambienti urbani e rurali, scene sparse e affollate e condizioni meteorologiche e di luce variabili. I suoi fotogrammi contengono oltre 2,6 milioni di bounding boxes annotate manualmente, con attributi aggiuntivi come visibilità della scena, classe dell'oggetto e occlusione. La configurazione Ultralytics VisDrone.yaml utilizza il sottoinsieme di immagini statiche VisDrone2019-DET di questo benchmark.

Link to this sectionCaratteristiche principali#

  • Oggetti piccoli e densi: I punti di vista aerei rendono i bersagli minuscoli e affollati — le sole 548 immagini di validazione contengono 38.759 box etichettate, una media di circa 70 oggetti per immagine.
  • Diversità delle scene: Immagini provenienti da 14 città cinesi che coprono località urbane e rurali, giorno e notte, e diverse condizioni meteorologiche.
  • Annotazioni ricche: Oltre 2,6 milioni di box sull'intero benchmark, con attributi di occlusione e visibilità.
  • Split predefiniti: Split fissi di train / val / test-dev (6.471 / 548 / 1.610 immagini) per una valutazione coerente.

Link to this sectionStruttura del dataset#

La configurazione Ultralytics VisDrone copre il sottoinsieme di immagini VisDrone2019-DET, suddiviso in tre parti:

SplitImmaginiDescrizione
Addestramento6.471Immagini aeree etichettate utilizzate per addestrare il rilevatore
Validazione548Immagini utilizzate per l'evaluation durante lo sviluppo
Test-dev1.610Immagini tenute da parte per la valutazione finale del modello addestrato

Un quarto split, test-challenge (1.580 immagini), è riservato alla competizione VisDrone e non viene scaricato, motivo per cui l'intero set DET totalizza 10.209 immagini.

Il dataset annota 10 classi di oggetti: pedestrian, people, bicycle, car, van, truck, tricycle, awning-tricycle, bus e motor. VisDrone distingue pedestrian (una persona in piedi o che cammina) da people (una persona in qualsiasi altra postura).

Conversione YOLO automatica

Al primo utilizzo, lo script di download converte le annotazioni VisDrone originali nel formato YOLO, saltando le regioni contrassegnate come ignorate (il che esclude anche la categoria inutilizzata "others").

Link to this sectionApplicazioni#

Le scene dense e i bersagli minuscoli di VisDrone lo rendono un benchmark standard per il small-object detection da punti di vista aerei. Le applicazioni comuni includono:

  • Monitoraggio del traffico e conteggio dei veicoli da UAV
  • Analisi della folla e sorveglianza per la pubblica sicurezza
  • Ispezione di infrastrutture e cantieri edili
  • Ricerca di Computer vision sul rilevamento di piccoli oggetti in scene ingombre

Per altri benchmark di immagini aeree, consulta il dataset xView focalizzato sui satelliti o il dataset DOTA-v2 a box orientate.

Link to this sectionDataset YAML#

Il file VisDrone.yaml definisce la configurazione del dataset: i percorsi del dataset, i nomi delle classi e lo script automatico di download e conversione. È mantenuto nel repository di Ultralytics all'indirizzo 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 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 sectionUtilizzo#

~2 GB di download

VisDrone si scarica automaticamente la prima volta che effettui l'addestramento — tre archivi per un totale di circa 2 GB — e richiede circa 4 GB di spazio libero su disco durante l'estrazione e la conversione.

Per addestrare un modello YOLO26n sul dataset VisDrone per 100 epochs con una dimensione dell'immagine di 640, puoi utilizzare i seguenti frammenti di codice. Per un elenco completo degli argomenti disponibili, fai riferimento alla pagina di Training del modello.

Esempio di Addestramento
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)

Per etichettare ulteriori immagini aeree e gestire le esecuzioni di addestramento su VisDrone nel tuo browser, utilizza la Ultralytics Platform.

Link to this sectionDati di esempio e annotazioni#

L'esempio qui sotto mostra una tipica scena VisDrone: un punto di vista aereo sopra una strada trafficata dove pedoni e veicoli appaiono come bersagli piccoli e densamente raggruppati, molti parzialmente occlusi l'uno dall'altro.

Immagini aeree di droni del dataset VisDrone con object detection

Link to this sectionCitazioni e riconoscimenti#

Se utilizzi il dataset VisDrone nel tuo lavoro di ricerca o sviluppo, cita il seguente articolo:

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

Desideriamo ringraziare il team AISKYEYE presso il laboratorio di Machine Learning e Data Mining della Tianjin University, Cina, per aver creato e mantenuto il dataset VisDrone. Per maggiori informazioni, visita il repository GitHub del VisDrone Dataset.

Link to this sectionFAQ#

Link to this sectionA cosa serve il dataset VisDrone?#

VisDrone viene utilizzato per addestrare e sottoporre a benchmark rilevatori su immagini catturate da droni, dove gli oggetti sono piccoli, densi e visti dall'alto. La sua combinazione di punti di vista aerei, scene affollate e condizioni variabili lo rende un banco di prova standard per il monitoraggio del traffico tramite UAV, l'analisi della folla e la ricerca sul rilevamento di piccoli oggetti.

Link to this sectionQuante immagini e classi contiene VisDrone?#

La configurazione Ultralytics VisDrone contiene 8.629 immagini: 6.471 per l'addestramento, 548 per la validazione e 1.610 per il test (test-dev). Tutti gli split condividono le stesse 10 classi: pedestrian, people, bicycle, car, van, truck, tricycle, awning-tricycle, bus e motor. Vedi Dataset Structure per la suddivisione completa.

Link to this sectionCome posso scaricare il dataset VisDrone?#

VisDrone si scarica automaticamente la prima volta che effettui un addestramento con data="VisDrone.yaml" — non sono richiesti passaggi manuali. Lo script recupera tre archivi (circa 2 GB) dagli asset delle release GitHub di Ultralytics e converte le annotazioni nel formato YOLO. Lo split test-challenge riservato per la competizione non è incluso.

Link to this sectionCome faccio ad addestrare un modello YOLO26 sul dataset VisDrone?#

Addestra un modello YOLO26n su VisDrone per 100 epoche con una dimensione dell'immagine di 640:

Esempio di Addestramento
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)

Per configurazioni dettagliate, consulta la pagina Training e i consigli per l'addestramento del modello.

Link to this sectionPerché VisDrone è difficile per i rilevatori di oggetti e come posso migliorare l'accuratezza?#

Gli oggetti in VisDrone sono minuscoli rispetto al fotogramma — spesso solo poche decine di pixel — e appaiono in gruppi densi e pesantemente occlusi, il che mette a dura prova i rilevatori ottimizzati su foto scattate da terra. Addestrare e prevedere a una risoluzione più elevata (ad esempio imgsz=1280 con un batch più piccolo) permette di recuperare piccoli bersagli, e l'SAHI tiled inference suddivide immagini grandi in modo che gli oggetti piccoli occupino una porzione maggiore di ciascuna finestra di inferenza.

Link to this sectionQual è la differenza tra VisDrone-DET e il benchmark completo VisDrone?#

Il benchmark completo VisDrone copre cinque task — object detection in immagini, object detection in video, inseguimento di singolo oggetto, multi-object tracking e conteggio della folla — su 288 video clip e 10.209 immagini statiche. La configurazione Ultralytics VisDrone.yaml copre solo il task di rilevamento su immagini (VisDrone2019-DET), scaricando le sue 6.471 immagini di train, 548 di validazione e 1.610 di test-dev.

Link to this sectionCome posso citare VisDrone nella mia ricerca?#

Cita il documento "Detection and Tracking Meet Drones Challenge" (IEEE TPAMI, vol. 44, n. 11, 2022, DOI 10.1109/TPAMI.2021.3119563); la voce BibTeX completa si trova nella sezione Citations and Acknowledgments qui sopra.

Commenti