Saltar 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 imagens e vídeos com base em drones.



Ver: Como treinar Ultralytics YOLO Modelos no conjunto de dados VisDrone para análise de imagens de 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 um vasto leque 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. Ele contém informações sobre os caminhos, classes e outras informações relevantes do conjunto de dados. 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/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

Utilização

Para treinar um modelo YOLO11n no conjunto de dados VisDrone para 100 épocas com um tamanho de imagem de 640, pode utilizar os seguintes fragmentos de código. Para obter uma lista completa dos argumentos disponíveis, consulte a página Treinamento do modelo.

Exemplo de comboio

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

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, em que 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 utilizar o conjunto de dados VisDrone no seu trabalho de investigação ou desenvolvimento, cite 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 em visão computacional baseada em drones. Para mais informações sobre o conjunto de dados VisDrone e os seus criadores, visite o repositório GitHub do conjunto de dados VisDrone.

FAQ

O que é o conjunto de dados VisDrone e quais são as suas principais caraterísticas?

O conjunto de dados VisDrone é uma referência em grande escala criada pela equipa AISKYEYE da Universidade de Tianjin, na China. Foi concebido para várias tarefas de visão computacional relacionadas com a análise de imagens e vídeos com base em drones. As principais caraterísticas incluem:

  • Composição: 288 clips de vídeo com 261 908 fotogramas e 10 209 imagens estáticas.
  • Anotações: Mais de 2,6 milhões de caixas delimitadoras para objectos como peões, carros, bicicletas e triciclos.
  • Diversidade: Recolhidas em 14 cidades, em ambientes urbanos e rurais, sob diferentes condições climatéricas e de iluminação.
  • Tarefas: Dividida em cinco tarefas principais - deteção de objectos em imagens e vídeos, rastreio de um e vários objectos e contagem de multidões.

Como é que posso utilizar o conjunto de dados VisDrone para treinar um modelo YOLO11 com Ultralytics?

Para treinar um modelo YOLO11 no conjunto de dados VisDrone para 100 épocas com um tamanho de imagem de 640, pode seguir estes passos:

Exemplo de comboio

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 opções de configuração adicionais, consulte a página de formação do modelo.

Quais são os principais subconjuntos do conjunto de dados VisDrone e as suas aplicações?

O conjunto de dados VisDrone está dividido em cinco subconjuntos principais, cada um adaptado a uma tarefa específica de visão computacional:

  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: Seguimento de múltiplos objectos.
  5. Tarefa 5: Contagem de multidões.

Estes subconjuntos são amplamente utilizados para treinar e avaliar modelos de aprendizagem profunda em aplicações baseadas em drones, como a vigilância, a monitorização do tráfego e a segurança pública.

Onde posso encontrar o ficheiro de configuração para o conjunto de dados VisDrone em Ultralytics?

O ficheiro de configuração para o conjunto de dados VisDrone, VisDrone.yamlpode ser encontrada no repositório Ultralytics na seguinte hiperligação: VisDrone.yaml.

Como posso citar o conjunto de dados VisDrone se o utilizar na minha investigação?

Se utilizar o conjunto de dados VisDrone no seu trabalho de investigação ou desenvolvimento, cite 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}
}
📅C riado há 1 ano ✏️ Atualizado há 2 meses

Comentários