Ir al contenido

Conjunto de datos VisDrone

El conjunto de datos VisDrone es una referencia a gran escala creada por el equipo AISKYEYE del Laboratorio de Aprendizaje Automático y Minería de Datos de la Universidad de Tianjin (China). Contiene datos reales cuidadosamente anotados para diversas tareas de visión por ordenador relacionadas con el análisis de imágenes y vídeos con drones.



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 diferentes 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 se anotaron 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:

  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 multiobjeto
  5. Tarea 5: Recuento de multitudes

Aplicaciones

El conjunto de datos VisDrone se utiliza ampliamente para entrenar y evaluar modelos de aprendizaje profundo en tareas de visión por ordenador basadas en drones, como la detección de objetos, el seguimiento de objetos y el recuento de multitudes. La diversidad de datos de sensores, anotaciones de objetos y atributos del conjunto de datos lo convierten en un recurso valioso para investigadores y profesionales del campo de la visión por ordenador basada en drones.

Conjunto de datos YAML

Para definir la configuración del conjunto de datos se utiliza un archivo YAML (Yet Another Markup Language). 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

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 tren

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

Ejemplos 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. A continuación se muestran algunos ejemplos de datos del conjunto de datos, junto con sus correspondientes anotaciones:

Imagen de muestra del conjunto de datos

  • Tarea 1. Detección de objetos en imágenes 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 en diferentes ubicaciones, entornos y densidades para facilitar el desarrollo de modelos para esta tarea.

El ejemplo muestra la variedad y complejidad de los datos del conjunto de datos de VisDrone y pone de relieve la importancia de disponer de datos de sensores de alta calidad para las tareas de visión por ordenador basadas en drones.

Citas y agradecimientos

Si utiliza el conjunto de datos VisDrone en su trabajo de investigación o desarrollo, cite 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}}

Nos gustaría dar las gracias al equipo AISKYEYE del Laboratorio de Aprendizaje Automático y Minería de Datos de la Universidad de Tianjin (China) por crear y mantener el conjunto de datos VisDrone como un valioso recurso para la comunidad de investigación en visión por ordenador basada en drones. Para obtener más información sobre el conjunto de datos VisDrone y sus creadores, visite el repositorio VisDrone Dataset GitHub.

PREGUNTAS FRECUENTES

¿Qué es el conjunto de datos VisDrone y cuáles son sus principales características?

El conjunto de datos VisDrone es una referencia a gran escala creada por el equipo AISKYEYE de la Universidad de Tianjin (China). Está diseñado para diversas tareas de visión por ordenador relacionadas con el análisis de imágenes y vídeos basados en drones. Entre sus principales características se 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 cuadros delimitadores para objetos como peatones, coches, bicicletas y triciclos.
  • Diversidad: Recogidas en 14 ciudades, en entornos urbanos y rurales, en diferentes condiciones meteorológicas y de iluminación.
  • Tareas: Dividida en cinco tareas principales: detección de objetos en imágenes y vídeos, seguimiento de objetos individuales y múltiples, y recuento 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 tren

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 más opciones de configuración, consulte la página de formación 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 a una tarea específica de visión por ordenador:

  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 multiobjeto.
  5. Tarea 5: Recuento de multitudes.

Estos subconjuntos se utilizan ampliamente para entrenar y evaluar modelos de aprendizaje profundo en aplicaciones basadas en drones, como la vigilancia, la supervisión del tráfico y la seguridad pública.

¿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.yamlse 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 utiliza el conjunto de datos VisDrone en su trabajo de investigación o desarrollo, cite 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}
}
Creado hace 1 año ✏️ Actualizado hace 2 meses

Comentarios