Link to this sectionDataset VisDrone#
Il VisDrone Dataset è un benchmark su larga scala creato dal team AISKYEYE presso il Lab of Machine Learning and Data Mining dell'Università di Tianjin, in Cina. Contiene dati di ground truth accuratamente annotati per vari task di computer vision relativi all'analisi di immagini e video da drone.
Watch: How to Train Ultralytics YOLO26 on the VisDrone Dataset | Aerial Detection | Complete Tutorial 🚀
VisDrone è composto da 288 clip video con 261.908 fotogrammi e 10.209 immagini statiche, riprese da varie telecamere montate su droni. Il dataset copre un'ampia gamma di aspetti, tra cui la posizione (14 diverse città in Cina), l'ambiente (urbano e rurale), gli oggetti (pedoni, veicoli, biciclette, ecc.) e la densità (scene sparse e affollate). Il dataset è stato raccolto utilizzando varie piattaforme di droni in diversi scenari e condizioni meteorologiche e di illuminazione. Questi fotogrammi sono annotati manualmente con oltre 2,6 milioni di BBox di target come pedoni, auto, biciclette e tricicli. Vengono inoltre forniti attributi come la visibilità della scena, la classe dell'oggetto e l'occlusione per un migliore utilizzo dei dati.
Link to this sectionStruttura del dataset#
Il dataset VisDrone è organizzato in cinque subset principali, ognuno incentrato su un task specifico:
- Task 1: Object detection in immagini
- Task 2: Object detection in video
- Task 3: Single-object tracking
- Task 4: Multi-object tracking
- Task 5: Crowd counting
Link to this sectionApplicazioni#
Il dataset VisDrone è ampiamente utilizzato per addestrare e valutare modelli di deep learning in task di computer vision basati su droni come object detection, object tracking e crowd counting. La vasta serie di dati di sensori, le annotazioni degli oggetti e gli attributi del dataset lo rendono una risorsa preziosa per ricercatori e professionisti nel campo della computer vision basata su droni.
Link to this sectionDataset YAML#
Viene utilizzato un file YAML (Yet Another Markup Language) per definire la configurazione del dataset. Contiene informazioni sui percorsi del dataset, le classi e altre informazioni rilevanti. Nel caso del dataset Visdrone, il file VisDrone.yaml è mantenuto su https://github.com/ultralytics/ultralytics/blob/main/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 directoryLink to this sectionUtilizzo#
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.
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)Link to this sectionDati di esempio e annotazioni#
Il dataset VisDrone contiene una serie diversificata di immagini e video ripresi da telecamere montate su droni. Ecco alcuni esempi di dati dal dataset, insieme alle relative annotazioni:

- Task 1: Object detection in immagini - Questa immagine mostra un esempio di object detection in immagini, dove gli oggetti sono annotati con bounding boxes. Il dataset fornisce un'ampia varietà di immagini scattate da diverse posizioni, ambienti e densità per facilitare lo sviluppo di modelli per questo task.
L'esempio mostra la varietà e la complessità dei dati nel dataset VisDrone ed evidenzia l'importanza di dati dei sensori di alta qualità per i task di computer vision basati su droni.
Link to this sectionCitazioni e riconoscimenti#
Se utilizzi il dataset VisDrone nel tuo lavoro di ricerca o sviluppo, cita il seguente articolo:
@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}}Desideriamo ringraziare il team AISKYEYE presso il Lab of Machine Learning and Data Mining, Università di Tianjin, Cina, per aver creato e mantenuto il dataset VisDrone come risorsa preziosa per la comunità di ricerca sulla computer vision basata su droni. Per ulteriori informazioni sul dataset VisDrone e i suoi creatori, visita il repository GitHub del VisDrone Dataset.
Link to this sectionFAQ#
Link to this sectionCos'è il VisDrone Dataset e quali sono le sue caratteristiche principali?#
Il VisDrone Dataset è un benchmark su larga scala creato dal team AISKYEYE presso l'Università di Tianjin, Cina. È progettato per vari task di computer vision relativi all'analisi di immagini e video da drone. Le caratteristiche principali includono:
- Composizione: 288 clip video con 261.908 fotogrammi e 10.209 immagini statiche.
- Annotazioni: Oltre 2,6 milioni di BBox per oggetti come pedoni, auto, biciclette e tricicli.
- Diversità: Raccolto in 14 città, in contesti urbani e rurali, in diverse condizioni meteorologiche e di illuminazione.
- Task: Suddiviso in cinque task principali: object detection in immagini e video, single-object e multi-object tracking, e crowd counting.
Link to this sectionCome posso utilizzare il VisDrone Dataset per addestrare un modello YOLO26 con Ultralytics?#
Per addestrare un modello YOLO26 sul dataset VisDrone per 100 epoche con una dimensione dell'immagine di 640, puoi seguire questi passaggi:
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)Per ulteriori opzioni di configurazione, fai riferimento alla pagina di Training del modello.
Link to this sectionQuali sono i principali subset del dataset VisDrone e le loro applicazioni?#
Il dataset VisDrone è diviso in cinque subset principali, ognuno su misura per un task di computer vision specifico:
- Task 1: Object detection in immagini.
- Task 2: Object detection in video.
- Task 3: Single-object tracking.
- Task 4: Multi-object tracking.
- Task 5: Crowd counting.
Questi subset sono ampiamente utilizzati per addestrare e valutare modelli di deep learning in applicazioni basate su droni come sorveglianza, monitoraggio del traffico e sicurezza pubblica.
Link to this sectionDove posso trovare il file di configurazione per il dataset VisDrone in Ultralytics?#
Il file di configurazione per il dataset VisDrone, VisDrone.yaml, si trova nel repository Ultralytics al seguente link:
VisDrone.yaml.
Link to this sectionCome posso citare il dataset VisDrone se lo utilizzo nella mia ricerca?#
Se utilizzi il dataset VisDrone nel tuo lavoro di ricerca o sviluppo, cita il seguente articolo:
@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}
}