Salta para o conte√ļdo

Conjunto de dados VisDrone

O VisDrone Dataset é uma referência de grande escala criada pela equipa AISKYEYE no Laboratório de Aprendizagem Automática e Extração de Dados da Universidade de Tianjin, na China. Contém dados de verdade cuidadosamente anotados para várias tarefas de visão computacional relacionadas com a análise de imagem e vídeo baseada em drones.

O VisDrone √© composto por 288 clipes de v√≠deo com 261 908 fotogramas e 10 209 imagens est√°ticas, captados por v√°rias c√Ęmaras montadas em drones. O conjunto de dados abrange uma vasta gama de aspectos, incluindo a localiza√ß√£o (14 cidades diferentes em toda a China), o ambiente (urbano e rural), os objectos (pe√Ķes, ve√≠culos, bicicletas, etc.) e a densidade (cenas esparsas e com muita gente). O conjunto de dados foi recolhido utilizando v√°rias plataformas de drones em diferentes cen√°rios e condi√ß√Ķes meteorol√≥gicas e de ilumina√ß√£o. Estes fotogramas s√£o anotados manualmente com mais de 2,6 milh√Ķes de caixas delimitadoras de alvos como pe√Ķes, carros, bicicletas e triciclos. Atributos como a visibilidade da cena, a classe do objeto e a oclus√£o tamb√©m s√£o fornecidos para uma melhor utiliza√ß√£o dos dados.

Estrutura do conjunto de dados

O conjunto de dados VisDrone está organizado em cinco subconjuntos principais, cada um centrado numa tarefa específica:

  1. Tarefa 1: Deteção de objectos em imagens
  2. Tarefa 2: Deteção de objectos em vídeos
  3. Tarefa 3: Seguimento de um √ļnico objeto
  4. Tarefa 4: Rastreio de m√ļltiplos objectos
  5. Tarefa 5: Contagem de multid√Ķes

Aplica√ß√Ķes

O conjunto de dados VisDrone √© amplamente utilizado para treinar e avaliar modelos de aprendizagem profunda em tarefas de vis√£o computacional baseadas em drones, como dete√ß√£o de objetos, rastreamento de objetos e contagem de multid√Ķes. O conjunto diversificado de dados de sensores, anota√ß√Ķes de objectos e atributos do conjunto de dados fazem dele um recurso valioso para investigadores e profissionais no dom√≠nio da vis√£o computacional baseada em drones.

Conjunto de dados YAML

Um ficheiro YAML (Yet Another Markup Language) √© utilizado para definir a configura√ß√£o do conjunto de dados. Cont√©m informa√ß√Ķes sobre os caminhos do conjunto de dados, classes e outras informa√ß√Ķes relevantes. No caso do conjunto de dados Visdrone, o ficheiro VisDrone.yaml √© mantido em 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

Utilização

Para treinar um modelo YOLOv8n no conjunto de dados VisDrone para 100 épocas com um tamanho de imagem de 640, podes utilizar os seguintes snippets de código. Para obter uma lista completa dos argumentos disponíveis, consulta a página de treino do modelo.

Exemplo de comboio

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

Dados de amostra e anota√ß√Ķes

O conjunto de dados VisDrone cont√©m um conjunto diversificado de imagens e v√≠deos capturados por c√Ęmaras montadas em drones. Aqui est√£o alguns exemplos de dados do conjunto de dados, juntamente com as anota√ß√Ķes correspondentes:

Imagem de amostra do conjunto de dados

  • Tarefa 1: Dete√ß√£o de objectos em imagens - Esta imagem demonstra um exemplo de dete√ß√£o de objectos em imagens, onde os objectos s√£o anotados com caixas delimitadoras. O conjunto de dados fornece uma grande variedade de imagens tiradas de diferentes locais, ambientes e densidades para facilitar o desenvolvimento de modelos para esta tarefa.

O exemplo mostra a variedade e complexidade dos dados no conjunto de dados VisDrone e destaca a import√Ęncia de dados de sensores de alta qualidade para tarefas de vis√£o computacional baseadas em drones.

Cita√ß√Ķes e agradecimentos

Se utilizares o conjunto de dados VisDrone no teu trabalho de investigação ou desenvolvimento, cita o seguinte 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}}

Gostar√≠amos de agradecer √† equipa AISKYEYE do Laborat√≥rio de Aprendizagem Autom√°tica e Extra√ß√£o de Dados da Universidade de Tianjin, China, por criar e manter o conjunto de dados VisDrone como um recurso valioso para a comunidade de investiga√ß√£o de vis√£o computacional baseada em drones. Para mais informa√ß√Ķes sobre o conjunto de dados VisDrone e os seus criadores, visita o reposit√≥rio GitHub do conjunto de dados VisDrone.



Criado em 2023-11-12, Atualizado em 2023-11-22
Autores: glenn-jocher (3), Laughing-q (1)

Coment√°rios