Meet YOLO26: next-gen vision AI.

Link to this sectionDataset VisDrone#

El Dataset VisDrone es un benchmark a gran escala creado por el equipo AISKYEYE en el Laboratorio de Machine Learning y Minería de Datos de la Universidad de Tianjin, China. Contiene datos de verdad fundamental cuidadosamente anotados para diversas tareas de visión artificial relacionadas con el análisis de imágenes y vídeos basados en drones.



Watch: How to Train Ultralytics YOLO26 on the VisDrone Dataset | Aerial Detection | Complete Tutorial 🚀

VisDrone se compone de 288 clips de vídeo con 261 908 fotogramas y 10 209 imágenes estáticas, capturadas por varias cámaras montadas en drones. El dataset cubre una amplia gama de aspectos, incluyendo ubicación (14 ciudades diferentes en toda China), entorno (urbano y rural), objetos (peatones, vehículos, bicicletas, etc.) y densidad (escenas dispersas y concurridas). El dataset se recopiló utilizando diversas 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 cajas delimitadoras 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 un mejor aprovechamiento de los datos.

Link to this sectionEstructura del dataset#

El dataset VisDrone está organizado en cinco subconjuntos principales, cada uno centrado en una tarea específica:

  1. Tarea 1: Detección de objetos en imágenes
  2. Tarea 2: Detección de objetos en vídeos
  3. Tarea 3: Seguimiento de un solo objeto
  4. Tarea 4: Seguimiento de múltiples objetos
  5. Tarea 5: Conteo de multitudes

Link to this sectionAplicaciones#

El dataset VisDrone se utiliza ampliamente para entrenar y evaluar modelos de aprendizaje profundo en tareas de computer vision 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 dataset lo convierte en un recurso valioso para investigadores y profesionales en el campo de la visión artificial basada en drones.

Link to this sectionYAML del dataset#

Se utiliza un archivo YAML (Yet Another Markup Language) para definir la configuración del dataset. Contiene información sobre las rutas del dataset, las clases y otra información relevante. En el caso del dataset 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 🚀 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 directory

Link to this sectionUso#

Para entrenar un modelo YOLO26n en el dataset VisDrone durante 100 epochs con un tamaño de imagen de 640, puedes usar los siguientes fragmentos de código. Para obtener una lista completa de los argumentos disponibles, consulta la página de Training del modelo.

Ejemplo de entrenamiento
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 sectionEjemplos de datos y anotaciones#

El dataset VisDrone contiene un conjunto diverso de imágenes y vídeos capturados por cámaras montadas en drones. Aquí tienes algunos ejemplos de datos del dataset, junto con sus correspondientes anotaciones:

Imágenes aéreas de drones del dataset VisDrone con detección de objetos

  • Tarea 1: Object detection en imágenes - Esta imagen muestra un ejemplo de detección de objetos en imágenes, donde los objetos se anotan con bounding boxes. El dataset ofrece una amplia variedad de imágenes tomadas desde diferentes ubicaciones, entornos y densidades para facilitar el desarrollo de modelos para esta tarea.

El ejemplo muestra la variedad y complejidad de los datos en el dataset VisDrone y subraya la importancia de los datos de sensores de alta calidad para las tareas de visión artificial basadas en drones.

Link to this sectionCitas y agradecimientos#

Si utilizas el dataset VisDrone en tu investigación o trabajo de desarrollo, por favor cita el siguiente artículo:

Cita
@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 AISKYEYE del Laboratorio de Machine Learning y Data Mining de la Universidad de Tianjin, China, por crear y mantener el dataset VisDrone como un recurso valioso para la comunidad de investigación en visión artificial basada en drones. Para obtener más información sobre el dataset VisDrone y sus creadores, visita el repositorio de GitHub del Dataset VisDrone.

Link to this sectionFAQ#

Link to this section¿Qué es el Dataset VisDrone y cuáles son sus características principales?#

El Dataset VisDrone es un benchmark a gran escala creado por el equipo AISKYEYE de la Universidad de Tianjin, China. Está diseñado para diversas tareas de visión artificial relacionadas con el análisis de imágenes y vídeos basados en drones. Las características principales incluyen:

  • Composición: 288 clips de vídeo con 261 908 fotogramas y 10 209 imágenes estáticas.
  • Anotaciones: Más de 2,6 millones de cajas delimitadoras para objetos como peatones, coches, bicicletas y triciclos.
  • Diversidad: Recopilado en 14 ciudades, en entornos urbanos y rurales, bajo diferentes condiciones meteorológicas y de iluminación.
  • Tareas: Dividido 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.

Link to this section¿Cómo puedo usar el Dataset VisDrone para entrenar un modelo YOLO26 con Ultralytics?#

Para entrenar un modelo YOLO26 en el dataset VisDrone durante 100 épocas con un tamaño de imagen de 640, puedes seguir estos pasos:

Ejemplo de entrenamiento
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)

Para opciones de configuración adicionales, consulta la página de Training del modelo.

Link to this section¿Cuáles son los subconjuntos principales del dataset VisDrone y sus aplicaciones?#

El dataset VisDrone se divide en cinco subconjuntos principales, cada uno adaptado a una tarea específica de visión artificial:

  1. Tarea 1: Detección de objetos en imágenes.
  2. Tarea 2: Detección de objetos en vídeos.
  3. Tarea 3: Seguimiento de un solo objeto.
  4. Tarea 4: Seguimiento de múltiples objetos.
  5. Tarea 5: Conteo de multitudes.

Estos subconjuntos se utilizan ampliamente para entrenar y evaluar modelos de deep learning en aplicaciones basadas en drones como vigilancia, control de tráfico y seguridad pública.

Link to this section¿Dónde puedo encontrar el archivo de configuración para el dataset VisDrone en Ultralytics?#

El archivo de configuración para el dataset VisDrone, VisDrone.yaml, se puede encontrar en el repositorio de Ultralytics en el siguiente enlace: VisDrone.yaml.

Link to this section¿Cómo puedo citar el dataset VisDrone si lo utilizo en mi investigación?#

Si utilizas el dataset VisDrone en tu investigación o trabajo de desarrollo, por favor cita el siguiente artículo:

Cita
@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}
}

Comentarios