Conjunto de datos VisDrone
The VisDrone Dataset is a large-scale benchmark created by the AISKYEYE team at the Lab of Machine Learning and Data Mining, Tianjin University, China. It contains carefully annotated ground truth data for various computer vision tasks related to drone-based image and video analysis.
Observa: Cómo entrenar modelos Ultralytics YOLO en el conjunto de datos VisDrone para el análisis de imágenes de drones
VisDrone se compone de 288 secuencias de vídeo con 261.908 fotogramas y 10.209 imágenes estáticas, captadas por varias cámaras montadas en drones. El conjunto de datos abarca una amplia gama de aspectos, como la ubicación (14 ciudades distintas de China), el entorno (urbano y rural), los objetos (peatones, vehículos, bicicletas, etc.) y la densidad (escenas dispersas y abarrotadas). El conjunto de datos se recopiló utilizando varias plataformas de drones en diferentes escenarios y condiciones meteorológicas y de iluminación. Estos fotogramas están anotados manualmente con más de 2,6 millones de cuadros delimitadores de objetivos como peatones, coches, bicicletas y triciclos. También se proporcionan atributos como la visibilidad de la escena, la clase de objeto y la oclusión, para una mejor utilización de los datos.
Estructura del conjunto de datos
El conjunto de datos VisDrone está organizado en cinco subconjuntos principales, cada uno centrado en una tarea específica:
- Tarea 1: Detección de objetos en imágenes
- Tarea 2: Detección de objetos en vídeos
- Tarea 3: Seguimiento de un solo objeto
- Tarea 4: Seguimiento multiobjeto
- Tarea 5: Recuento de multitudes
Aplicaciones
The VisDrone dataset is widely used for training and evaluating deep learning models in drone-based computer vision tasks such as object detection, object tracking, and crowd counting. The dataset's diverse set of sensor data, object annotations, and attributes make it a valuable resource for researchers and practitioners in the field of drone-based computer vision.
Conjunto de datos YAML
Se utiliza un archivo YAML (Yet Another Markup Language) para definir la configuración del conjunto de datos. Contiene información sobre las rutas del conjunto de datos, las clases y otra información relevante. En el caso del conjunto de datos Visdrone, el archivo VisDrone.yaml
se mantiene en 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/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, 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
Utilización
To train a YOLO11n model on the VisDrone dataset for 100 epochs with an image size of 640, you can use the following code snippets. For a comprehensive list of available arguments, refer to the model Training page.
Ejemplo de tren
Muestra de datos y anotaciones
El conjunto de datos VisDrone contiene un variado conjunto de imágenes y vídeos captados por cámaras montadas en drones. He aquí algunos ejemplos de datos del conjunto de datos, junto con sus correspondientes anotaciones:
- Task 1: Object detection in images - This image demonstrates an example of object detection in images, where objects are annotated with bounding boxes. The dataset provides a wide variety of images taken from different locations, environments, and densities to facilitate the development of models for this task.
El ejemplo muestra la variedad y complejidad de los datos del conjunto de datos VisDrone y destaca la importancia de los datos de sensores de alta calidad para las tareas de visión por ordenador basadas en drones.
Citas y agradecimientos
Si utilizas el conjunto de datos VisDrone en tu trabajo de investigación o desarrollo, cita el siguiente documento:
@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 would like to acknowledge the AISKYEYE team at the Lab of Machine Learning and Data Mining, Tianjin University, China, for creating and maintaining the VisDrone dataset as a valuable resource for the drone-based computer vision research community. For more information about the VisDrone dataset and its creators, visit the VisDrone Dataset GitHub repository.
PREGUNTAS FRECUENTES
¿Qué es el Conjunto de Datos VisDrone y cuáles son sus principales características?
The VisDrone Dataset is a large-scale benchmark created by the AISKYEYE team at Tianjin University, China. It is designed for various computer vision tasks related to drone-based image and video analysis. Key features include:
- Composition: 288 video clips with 261,908 frames and 10,209 static images.
- Annotations: Over 2.6 million bounding boxes for objects like pedestrians, cars, bicycles, and tricycles.
- Diversity: Collected across 14 cities, in urban and rural settings, under different weather and lighting conditions.
- Tasks: Split into five main tasks—object detection in images and videos, single-object and multi-object tracking, and crowd counting.
How can I use the VisDrone Dataset to train a YOLO11 model with Ultralytics?
To train a YOLO11 model on the VisDrone dataset for 100 epochs with an image size of 640, you can follow these steps:
Ejemplo de tren
Para conocer otras opciones de configuración, consulta la página de Formación del modelo.
¿Cuáles son los principales subconjuntos del conjunto de datos VisDrone y sus aplicaciones?
The VisDrone dataset is divided into five main subsets, each tailored for a specific computer vision task:
- Task 1: Object detection in images.
- Task 2: Object detection in videos.
- Task 3: Single-object tracking.
- Task 4: Multi-object tracking.
- Task 5: Crowd counting.
These subsets are widely used for training and evaluating deep learning models in drone-based applications such as surveillance, traffic monitoring, and public safety.
¿Dónde puedo encontrar el archivo de configuración del conjunto de datos VisDrone en Ultralytics?
El archivo de configuración del conjunto de datos VisDrone, VisDrone.yaml
, se puede encontrar en el repositorio Ultralytics en el siguiente enlace:
VisDrone.yaml.
¿Cómo puedo citar el conjunto de datos VisDrone si lo utilizo en mi investigación?
Si utilizas el conjunto de datos VisDrone en tu trabajo de investigación o desarrollo, cita el siguiente documento:
@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}
}