Dataset VisDrone
Il VisDrone Dataset è un benchmark su larga scala creato dal team AISKYEYE presso il Lab of Machine Learning and Data Mining, Tianjin University, Cina. Contiene dati ground truth accuratamente annotati per varie attività di computer vision relative all'analisi di immagini e video basati su drone.
Guarda: Come addestrare i modelli Ultralytics YOLO sul dataset VisDrone per l'analisi di immagini di droni
VisDrone è composto da 288 clip video con 261.908 frame e 10.209 immagini statiche, acquisite da varie telecamere montate su drone. Il dataset copre una vasta 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 drone in diversi scenari e condizioni meteorologiche e di illuminazione. Questi frame sono annotati manualmente con oltre 2,6 milioni di bounding box di target come pedoni, auto, biciclette e tricicli. Attributi come la visibilità della scena, la classe dell'oggetto e l'occlusione sono forniti anche per una migliore utilizzazione dei dati.
Struttura del set di dati
Il dataset VisDrone è organizzato in cinque sottoinsiemi principali, ognuno incentrato su un task specifico:
- Attività 1: Rilevamento di oggetti nelle immagini
- Attività 2: Rilevamento di oggetti nei video
- Attività 3: Tracciamento di un singolo oggetto
- Attività 4: Tracciamento multi-oggetto
- Attività 5: Conteggio della folla
Applicazioni
Il dataset VisDrone è ampiamente utilizzato per l'addestramento e la valutazione di modelli di deep learning in task di computer vision basati su drone, come il rilevamento di oggetti, il tracciamento di oggetti e il conteggio della folla. L'insieme diversificato di dati dei sensori, annotazioni degli oggetti e attributi del dataset lo rendono una risorsa preziosa per ricercatori e professionisti nel campo della computer vision basata su drone.
YAML del set di dati
Un file YAML (Yet Another Markup Language) viene utilizzato per definire la configurazione del dataset. Contiene informazioni sui percorsi, le classi e altre informazioni rilevanti del dataset. Nel caso del dataset Visdrone, il VisDrone.yaml
file è mantenuto in 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
Utilizzo
Per addestrare un modello YOLO11n sul dataset VisDrone per 100 epoche con una dimensione dell'immagine di 640, puoi utilizzare i seguenti frammenti di codice. Per un elenco completo degli argomenti disponibili, consulta la pagina di addestramento del modello.
Esempio di addestramento
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
Dati di esempio e annotazioni
Il dataset VisDrone contiene un insieme diversificato di immagini e video acquisiti da telecamere montate su drone. Ecco alcuni esempi di dati dal dataset, insieme alle relative annotazioni:
- Attività 1: Rilevamento di oggetti nelle immagini - Questa immagine mostra un esempio di rilevamento di oggetti nelle immagini, in cui gli oggetti sono annotati con bounding box. Il dataset fornisce un'ampia varietà di immagini scattate da diverse posizioni, ambienti e densità per facilitare lo sviluppo di modelli per questa attività.
L'esempio mostra la varietà e la complessità dei dati nel dataset VisDrone ed evidenzia l'importanza di dati di sensori di alta qualità per le attività di computer vision basate su drone.
Citazioni e ringraziamenti
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 del Lab of Machine Learning and Data Mining dell'Università di Tianjin, in Cina, per aver creato e mantenuto il dataset VisDrone come risorsa preziosa per la comunità di ricerca nel campo della computer vision basata su drone. Per maggiori informazioni sul dataset VisDrone e sui suoi creatori, visitare il repository GitHub del dataset VisDrone.
FAQ
Cos'è il VisDrone Dataset e quali sono le sue caratteristiche principali?
Il VisDrone Dataset è un benchmark su larga scala creato dal team AISKYEYE presso la Tianjin University, Cina. È progettato per varie attività di computer vision relative all'analisi di immagini e video basati su drone. Le caratteristiche principali includono:
- Composizione: 288 clip video con 261.908 frame e 10.209 immagini statiche.
- Annotazioni: Oltre 2,6 milioni di bounding box per oggetti come pedoni, auto, biciclette e tricicli.
- Diversità: Raccolti in 14 città, in contesti urbani e rurali, in diverse condizioni meteorologiche e di illuminazione.
- Attività: Suddivise in cinque attività principali: rilevamento di oggetti in immagini e video, tracciamento di oggetti singoli e multipli e conteggio della folla.
Come posso usare il VisDrone Dataset per addestrare un modello YOLO11 con Ultralytics?
Per addestrare un modello YOLO11 sul dataset VisDrone per 100 epoche con una dimensione dell'immagine di 640, puoi seguire questi passaggi:
Esempio di addestramento
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
Per ulteriori opzioni di configurazione, consultare la pagina Training del modello.
Quali sono i principali sottoinsiemi del dataset VisDrone e le loro applicazioni?
Il dataset VisDrone è diviso in cinque sottoinsiemi principali, ciascuno dei quali è progettato per uno specifico task di computer vision:
- Attività 1: Rilevamento di oggetti nelle immagini.
- Attività 2: Rilevamento di oggetti nei video.
- Attività 3: Tracciamento di un singolo oggetto.
- Attività 4: Tracciamento di più oggetti.
- Attività 5: Conteggio della folla.
Questi sottoinsiemi sono ampiamente utilizzati per l'addestramento e la valutazione di modelli di deep learning in applicazioni basate su droni come la sorveglianza, il monitoraggio del traffico e la sicurezza pubblica.
Dove posso trovare il file di configurazione per il dataset VisDrone in Ultralytics?
Il file di configurazione per il dataset VisDrone, VisDrone.yaml
, può essere trovato nel repository Ultralytics al seguente link:
VisDrone.yaml.
Come 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}
}