VisDrone Dataset
De VisDrone Dataset is een grootschalige benchmark gemaakt door het AISKYEYE team van het Lab of Machine Learning and Data Mining, Tianjin University, China. Het bevat zorgvuldig geannoteerde ground truth gegevens voor verschillende computer vision taken met betrekking tot drone-gebaseerde beeld- en videoanalyse.
VisDrone bestaat uit 288 videoclips met 261.908 frames en 10.209 statische beelden, gemaakt door verschillende camera's die op een drone zijn gemonteerd. De dataset omvat een breed scala aan aspecten, waaronder locatie (14 verschillende steden in China), omgeving (stedelijk en landelijk), objecten (voetgangers, voertuigen, fietsen, enz.) en dichtheid (schaarse en drukke scènes). De dataset is verzameld met verschillende drone-platforms onder verschillende scenario's en weers- en lichtomstandigheden. Deze frames zijn handmatig geannoteerd met meer dan 2,6 miljoen bounding boxes van doelen zoals voetgangers, auto's, fietsen en driewielers. Attributen zoals zichtbaarheid van de scène, objectklasse en occlusie worden ook geleverd voor een beter gebruik van de gegevens.
Structuur dataset
De VisDrone dataset is onderverdeeld in vijf subsets, die elk gericht zijn op een specifieke taak:
- Opdracht 1: Objectdetectie in afbeeldingen
- Taak 2: Objectdetectie in video's
- Taak 3: Eén object volgen
- Taak 4: Multi-object volgen
- Opdracht 5: Menigte tellen
Toepassingen
De VisDrone dataset wordt veel gebruikt voor het trainen en evalueren van deep learning modellen in drone-gebaseerde computer vision taken zoals objectdetectie, het volgen van objecten en het tellen van menigten. De diverse set sensorgegevens, objectannotaties en attributen van de dataset maken het een waardevolle bron voor onderzoekers en praktijkmensen op het gebied van computer vision met behulp van drones.
Dataset YAML
Een YAML (Yet Another Markup Language) bestand wordt gebruikt om de configuratie van de dataset te definiëren. Het bevat informatie over de paden, klassen en andere relevante informatie van de dataset. In het geval van de Visdrone dataset is de VisDrone.yaml
bestand wordt onderhouden op https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/VisDrone.yaml.
ultralytics/cfg/datasets/VisDrone.yaml
# Ultralytics YOLO 🚀, AGPL-3.0 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: ../datasets/VisDrone # dataset root dir
train: VisDrone2019-DET-train/images # train images (relative to 'path') 6471 images
val: VisDrone2019-DET-val/images # val images (relative to 'path') 548 images
test: VisDrone2019-DET-test-dev/images # test 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
from ultralytics.utils.downloads import download
def visdrone2yolo(dir):
from PIL import Image
from tqdm import tqdm
def convert_box(size, box):
# Convert VisDrone box to YOLO xywh box
dw = 1. / size[0]
dh = 1. / size[1]
return (box[0] + box[2] / 2) * dw, (box[1] + box[3] / 2) * dh, box[2] * dw, box[3] * dh
(dir / 'labels').mkdir(parents=True, exist_ok=True) # make labels directory
pbar = tqdm((dir / 'annotations').glob('*.txt'), desc=f'Converting {dir}')
for f in pbar:
img_size = Image.open((dir / 'images' / f.name).with_suffix('.jpg')).size
lines = []
with open(f, 'r') as file: # read annotation.txt
for row in [x.split(',') for x in file.read().strip().splitlines()]:
if row[4] == '0': # VisDrone 'ignored regions' class 0
continue
cls = int(row[5]) - 1
box = convert_box(img_size, tuple(map(int, row[:4])))
lines.append(f"{cls} {' '.join(f'{x:.6f}' for x in box)}\n")
with open(str(f).replace(f'{os.sep}annotations{os.sep}', f'{os.sep}labels{os.sep}'), 'w') as fl:
fl.writelines(lines) # write label.txt
# Download
dir = Path(yaml['path']) # dataset root dir
urls = ['https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-train.zip',
'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-val.zip',
'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-test-dev.zip',
'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-test-challenge.zip']
download(urls, dir=dir, curl=True, threads=4)
# Convert
for d in 'VisDrone2019-DET-train', 'VisDrone2019-DET-val', 'VisDrone2019-DET-test-dev':
visdrone2yolo(dir / d) # convert VisDrone annotations to YOLO labels
Gebruik
Om een YOLOv8n model te trainen op de VisDrone dataset voor 100 epochs met een afbeeldingsgrootte van 640, kun je de volgende codefragmenten gebruiken. Raadpleeg de pagina Model Training voor een uitgebreide lijst met beschikbare argumenten.
Voorbeeld trein
Voorbeeldgegevens en annotaties
De VisDrone dataset bevat een diverse set afbeeldingen en video's die zijn vastgelegd door op een drone gemonteerde camera's. Hier zijn enkele voorbeelden van gegevens uit de dataset, samen met de bijbehorende annotaties:
- Opdracht 1: Objectdetectie in afbeeldingen - Deze afbeelding demonstreert een voorbeeld van objectdetectie in afbeeldingen, waarbij objecten worden geannoteerd met bounding boxes. De dataset biedt een grote verscheidenheid aan afbeeldingen van verschillende locaties, omgevingen en dichtheden om de ontwikkeling van modellen voor deze taak te vergemakkelijken.
Het voorbeeld laat de verscheidenheid en complexiteit van de gegevens in de VisDrone dataset zien en benadrukt het belang van hoogwaardige sensorgegevens voor computervisietaken met behulp van drones.
Citaten en erkenningen
Als je de VisDrone dataset gebruikt in je onderzoek of ontwikkeling, citeer dan het volgende document:
@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}}
We willen graag het AISKYEYE team van het Lab of Machine Learning and Data Mining, Tianjin University, China, bedanken voor het maken en onderhouden van de VisDrone dataset als een waardevolle bron voor de drone-gebaseerde computer vision onderzoeksgemeenschap. Ga voor meer informatie over de VisDrone dataset en de makers ervan naar de VisDrone Dataset GitHub repository.