Saltar al contenido

Conjunto de datos VisDrone

El conjunto de datos VisDrone es un punto de referencia a gran escala creado 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.

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:

  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. El variado conjunto de datos de sensores, anotaciones de objetos y atributos del conjunto de datos lo convierten en un valioso recurso para investigadores y profesionales del campo de la visi贸n por ordenador basada en drones.

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/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

Utilizaci贸n

Para entrenar un modelo YOLOv8n en el conjunto de datos VisDrone durante 100 茅pocas con un tama帽o de imagen de 640, puedes utilizar los siguientes fragmentos de c贸digo. Para obtener una lista completa de los argumentos disponibles, consulta la p谩gina Entrenamiento del modelo.

Ejemplo de tren

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.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=yolov8n.pt epochs=100 imgsz=640

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:

Imagen de muestra del conjunto de datos

  • 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 cajas delimitadoras. 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 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}}

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 m谩s informaci贸n sobre el conjunto de datos VisDrone y sus creadores, visita el repositorio GitHub del conjunto de datos VisDrone.



Creado 2023-11-12, Actualizado 2024-05-18
Autores: glenn-jocher (4), Laughing-q (1)

Comentarios