Conjunto de dados VisDrone

O Conjunto de dados VisDrone é um benchmark em larga escala criado pela equipa AISKYEYE do Laboratório de Aprendizagem Automática e Mineração de Dados da Universidade de Tianjin, na China. Contém dados de referência cuidadosamente anotados para várias tarefas de visão computacional relacionadas com a análise de imagens e vídeos baseada em drones.



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

O VisDrone é composto por 288 videoclipes com 261.908 fotogramas e 10.209 imagens estáticas, capturadas por várias câmaras montadas em drones. O conjunto de dados cobre uma vasta gama de aspetos, incluindo localização (14 cidades diferentes na China), ambiente (urbano e rural), objetos (peões, veículos, bicicletas, etc.) e densidade (cenas esparsas e lotadas). O conjunto de dados foi recolhido utilizando várias plataformas de drones em diferentes cenários e condições meteorológicas e de luminosidade. 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, classe do objeto e oclusão também são fornecidos para uma melhor utilização dos dados.

Estrutura do Dataset

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

  1. Tarefa 1: Deteção de objetos em imagens
  2. Tarefa 2: Deteção de objetos em vídeos
  3. Tarefa 3: Rastreio de objeto único
  4. Tarefa 4: Rastreio de múltiplos objetos
  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, rastreio de objetos e contagem de multidões. O conjunto diversificado de dados de sensores, anotações de objetos e atributos do conjunto de dados torna-o um recurso valioso para investigadores e profissionais na área da visão computacional baseada em drones.

YAML do Dataset

Um ficheiro YAML (Yet Another Markup Language) é utilizado para definir a configuração do conjunto de dados. 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 🚀 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

Utilização

Para treinar um modelo YOLO26n no conjunto de dados VisDrone durante 100 épocas com um tamanho de imagem de 640, podes utilizar os seguintes fragmentos de código. Para uma lista abrangente de argumentos disponíveis, consulta a página de Treino do modelo.

Exemplo de Treino
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)

Amostra de dados 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 suas anotações correspondentes:

Imagens aéreas de drone do conjunto de dados VisDrone com deteção de objetos

  • Tarefa 1: Deteção de objetos em imagens - Esta imagem demonstra um exemplo de deteção de objetos em imagens, onde os objetos 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, por favor cita o seguinte artigo:

Citação
@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 Mineração de Dados, 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, visita o repositório GitHub do Conjunto de Dados VisDrone.

FAQ

O que é o Conjunto de Dados VisDrone e quais são as suas principais funcionalidades?

O Conjunto de Dados VisDrone é um benchmark em larga escala criado 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 baseada em drones. As funcionalidades principais incluem:

  • Composição: 288 videoclipes com 261.908 fotogramas e 10.209 imagens estáticas.
  • Anotações: Mais de 2,6 milhões de caixas delimitadoras para objetos como peões, carros, bicicletas e triciclos.
  • Diversidade: Recolhido em 14 cidades, em contextos urbanos e rurais, sob diferentes condições meteorológicas e de luminosidade.
  • Tarefas: Dividido em cinco tarefas principais — deteção de objetos em imagens e vídeos, rastreio de objeto único e de múltiplos objetos, e contagem de multidões.

Como posso utilizar o Conjunto de Dados VisDrone para treinar um modelo YOLO26 com a Ultralytics?

Para treinar um modelo YOLO26 no conjunto de dados VisDrone durante 100 épocas com um tamanho de imagem de 640, podes seguir estes passos:

Exemplo de Treino
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 opções de configuração adicionais, por favor consulta a página de Treino 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 para uma tarefa de visão computacional específica:

  1. Tarefa 1: Deteção de objetos em imagens.
  2. Tarefa 2: Deteção de objetos em vídeos.
  3. Tarefa 3: Rastreio de objeto único.
  4. Tarefa 4: Rastreio de múltiplos objetos.
  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 vigilância, monitorização de tráfego e segurança pública.

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

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

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

Se utilizares o conjunto de dados VisDrone no teu trabalho de investigação ou desenvolvimento, por favor cita o seguinte artigo:

Citação
@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}
}

Comentários