Conjunto de datos VisDrone
El Conjunto de Datos VisDrone es un punto de referencia a gran escala creado por el equipo AISKYEYE en el Laboratorio de Aprendizaje Automático y Minería de Datos de la Universidad de Tianjin, China. Contiene datos ground truth cuidadosamente anotados para diversas tareas de visión artificial relacionadas con el análisis de imágenes y videos basados en drones.
Ver: 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 videoclips con 261.908 fotogramas y 10.209 imágenes estáticas, capturadas por varias cámaras montadas en drones. El conjunto de datos cubre una amplia gama de aspectos, incluyendo la ubicación (14 ciudades diferentes en China), el entorno (urbano y rural), los objetos (peatones, vehículos, bicicletas, etc.) y la densidad (escenas dispersas y concurridas). El conjunto de datos se recogió utilizando varias plataformas de drones en diferentes escenarios y condiciones meteorológicas y de iluminación. Estos fotogramas se anotan 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 de múltiples objetos
- Tarea 5: Conteo de multitudes
Aplicaciones
El conjunto de datos VisDrone se utiliza ampliamente para entrenar y evaluar modelos de visión artificial de aprendizaje profundo en tareas basadas en drones, como la detección de objetos, el seguimiento de objetos y el conteo de multitudes. El conjunto diverso de datos de sensores, anotaciones de objetos y atributos del conjunto de datos lo convierten en un recurso valioso para investigadores y profesionales en el campo de la visión artificial basada en drones.
YAML del conjunto de datos
Se utiliza un archivo YAML (Yet Another Markup Language) para definir la configuración del conjunto de datos. Contiene información sobre las rutas, las clases y otra información relevante del conjunto de datos. En el caso del conjunto de datos Visdrone, el VisDrone.yaml
archivo se mantiene en 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
Uso
Para entrenar un modelo YOLO11n en el conjunto de datos VisDrone durante 100 épocas con un tamaño de imagen de 640, puede utilizar los siguientes fragmentos de código. Para obtener una lista completa de los argumentos disponibles, consulte la página de Entrenamiento del modelo.
Ejemplo de entrenamiento
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
Datos de muestra y anotaciones
El conjunto de datos VisDrone contiene un conjunto diverso de imágenes y videos capturados por cámaras montadas en drones. Aquí hay algunos ejemplos de datos del conjunto de datos, junto con sus anotaciones correspondientes:
- Tarea 1: Detección de objetos en imágenes: esta imagen muestra un ejemplo de detección de objetos en imágenes, donde los objetos se anotan con cuadros delimitadores. El conjunto de datos proporciona una amplia variedad de imágenes tomadas de diferentes ubicaciones, entornos y densidades para facilitar el desarrollo de modelos para esta tarea.
El ejemplo muestra la variedad y la complejidad de los datos en el conjunto de datos VisDrone y destaca la importancia de los datos de sensores de alta calidad para las tareas de visión artificial basadas en drones.
Citas y agradecimientos
Si utiliza el conjunto de datos VisDrone en su trabajo de investigación o desarrollo, cite el siguiente artículo:
@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}}
Nos gustaría agradecer al equipo de AISKYEYE en el Laboratorio de Aprendizaje Automático y Minería de Datos, Universidad de Tianjin, China, por crear y mantener el conjunto de datos VisDrone como un recurso valioso para la comunidad de investigación de visión artificial basada en drones. Para obtener más información sobre el conjunto de datos VisDrone y sus creadores, visite el repositorio de VisDrone Dataset en GitHub.
Preguntas frecuentes
¿Qué es el conjunto de datos VisDrone y cuáles son sus características principales?
El Conjunto de Datos VisDrone es un punto de referencia a gran escala creado por el equipo AISKYEYE en la Universidad de Tianjin, China. Está diseñado para diversas tareas de visión artificial relacionadas con el análisis de imágenes y videos basados en drones. Las características clave incluyen:
- Composición: 288 videoclips con 261.908 fotogramas y 10.209 imágenes estáticas.
- Anotaciones: Más de 2.6 millones de cuadros delimitadores para objetos como peatones, coches, bicicletas y triciclos.
- Diversidad: Recopilados en 14 ciudades, en entornos urbanos y rurales, en diferentes condiciones climáticas y de iluminación.
- Tareas: Divididas en cinco tareas principales: detección de objetos en imágenes y vídeos, seguimiento de un solo objeto y de múltiples objetos, y conteo de multitudes.
¿Cómo puedo utilizar el conjunto de datos VisDrone para entrenar un modelo YOLO11 con Ultralytics?
Para entrenar un modelo YOLO11 en el conjunto de datos VisDrone durante 100 épocas con un tamaño de imagen de 640, puede seguir estos pasos:
Ejemplo de entrenamiento
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
Para obtener opciones de configuración adicionales, consulte la página de Entrenamiento del modelo.
¿Cuáles son los principales subconjuntos del conjunto de datos VisDrone y sus aplicaciones?
El conjunto de datos VisDrone se divide en cinco subconjuntos principales, cada uno adaptado para una tarea específica de visión artificial:
- 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 de múltiples objetos.
- Tarea 5: Conteo de multitudes.
Estos subconjuntos se utilizan ampliamente para entrenar y evaluar modelos de aprendizaje profundo en aplicaciones basadas en drones, como la vigilancia, el control del tráfico y la seguridad pública.
¿Dónde puedo encontrar el archivo de configuración para el conjunto de datos VisDrone en Ultralytics?
El archivo de configuración para el conjunto de datos VisDrone, VisDrone.yaml
, se puede encontrar en el repositorio de Ultralytics en el siguiente enlace:
VisDrone.yaml.
¿Cómo puedo citar el conjunto de datos VisDrone si lo utilizo en mi investigación?
Si utiliza el conjunto de datos VisDrone en su trabajo de investigación o desarrollo, cite el siguiente artículo:
@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}
}