Ir para o conteúdo

Conjunto de Dados VisDrone

O Dataset VisDrone é um benchmark de grande escala criado pela equipe AISKYEYE no Laboratório de Aprendizado de Máquina e Mineração de Dados, Universidade de Tianjin, China. Ele contém dados de verdade terrestre cuidadosamente anotados para várias tarefas de visão computacional relacionadas à análise de imagem e vídeo baseada em drones.



Assista: Como Treinar Modelos Ultralytics YOLO no Dataset VisDrone para Análise de Imagens de Drones

O VisDrone é composto por 288 videoclipes com 261.908 frames e 10.209 imagens estáticas, capturadas por várias câmeras montadas em drones. O conjunto de dados abrange uma ampla gama de aspectos, incluindo localização (14 cidades diferentes na China), ambiente (urbano e rural), objetos (pedestres, veículos, bicicletas, etc.) e densidade (cenas esparsas e lotadas). O conjunto de dados foi coletado usando várias plataformas de drones em diferentes cenários e condições climáticas e de iluminação. Esses frames são anotados manualmente com mais de 2,6 milhões de caixas delimitadoras de alvos como pedestres, carros, bicicletas e triciclos. Atributos como visibilidade da cena, classe de objeto e oclusão também são fornecidos para melhor utilização dos dados.

Estrutura do Conjunto de Dados

O conjunto de dados VisDrone é organizado em cinco subconjuntos principais, cada um com foco em uma tarefa específica:

  1. Tarefa 1: Detecção de objetos em imagens
  2. Tarefa 2: Detecção de objetos em vídeos
  3. Tarefa 3: Rastreamento de objeto único
  4. Tarefa 4: Rastreamento 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 deep learning em tarefas de visão computacional baseadas em drones, como detecção de objetos, rastreamento de objetos e contagem de multidões. O conjunto diversificado de dados de sensores, anotações de objetos e atributos do conjunto de dados o tornam um recurso valioso para pesquisadores e profissionais no campo da visão computacional baseada em drones.

YAML do Conjunto de Dados

Um arquivo YAML (Yet Another Markup Language) é usado 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 VisDrone.yaml arquivo é 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


  def visdrone2yolo(dir, split, source_name=None):
      """Convert VisDrone annotations to YOLO format with images/{split} and labels/{split} structure."""
      from PIL import Image
      from tqdm import tqdm

      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 = [
      "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
  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 YOLO11n no conjunto de dados VisDrone por 100 epochs com um tamanho de imagem de 640, você pode usar os seguintes trechos de código. Para uma lista completa de argumentos disponíveis, consulte a página de Treinamento do modelo.

Exemplo de Treinamento

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âmeras montadas em drones. Aqui estão alguns exemplos de dados do conjunto de dados, juntamente com suas anotações correspondentes:

Imagem de amostra do conjunto de dados

  • Tarefa 1: Detecção de objetos em imagens - Esta imagem demonstra um exemplo de detecção de objetos em imagens, onde os objetos são anotados com bounding boxes. O conjunto de dados fornece uma ampla 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 a 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 você usar o conjunto de dados VisDrone em seu trabalho de pesquisa ou desenvolvimento, cite o seguinte artigo:

@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 à equipe AISKYEYE do Laboratório de Aprendizado de Máquina e Mineraçã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 pesquisa em visão computacional baseada em drones. Para obter mais informações sobre o conjunto de dados VisDrone e seus criadores, visite o repositório GitHub do conjunto de dados VisDrone.

FAQ

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

O Dataset VisDrone é um benchmark de grande escala criado pela equipe AISKYEYE na Universidade de Tianjin, China. Ele é projetado para várias tarefas de visão computacional relacionadas à análise de imagem e vídeo baseada em drones. As principais características incluem:

  • Composição: 288 videoclipes com 261.908 frames e 10.209 imagens estáticas.
  • Anotações: Mais de 2,6 milhões de caixas delimitadoras para objetos como pedestres, carros, bicicletas e triciclos.
  • Diversidade: Coletado em 14 cidades, em ambientes urbanos e rurais, sob diferentes condições climáticas e de iluminação.
  • Tarefas: Dividido em cinco tarefas principais — detecção de objetos em imagens e vídeos, rastreamento de objeto único e multi-objeto e contagem de multidões.

Como posso usar o Conjunto de Dados VisDrone para treinar um modelo YOLO11 com Ultralytics?

Para treinar um modelo YOLO11 no conjunto de dados VisDrone por 100 epochs com um tamanho de imagem de 640, você pode seguir estes passos:

Exemplo de Treinamento

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 Treino do modelo.

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

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

  1. Tarefa 1: Detecção de objetos em imagens.
  2. Tarefa 2: Detecção de objetos em vídeos.
  3. Tarefa 3: Rastreamento de objeto único.
  4. Tarefa 4: Rastreamento de múltiplos objetos.
  5. Tarefa 5: Contagem de multidões.

Esses subconjuntos são amplamente utilizados para treinar e avaliar modelos de aprendizado profundo em aplicações baseadas em drones, como vigilância, monitoramento de tráfego e segurança pública.

Onde posso encontrar o arquivo de configuração para o conjunto de dados VisDrone no Ultralytics?

O arquivo de configuração para o conjunto de dados VisDrone, VisDrone.yaml, pode ser encontrado no repositório Ultralytics no seguinte link: VisDrone.yaml.

Como posso citar o conjunto de dados VisDrone se eu o usar em minha pesquisa?

Se você usar o conjunto de dados VisDrone em seu trabalho de pesquisa ou desenvolvimento, cite o seguinte artigo:

@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}
}


📅 Criado há 1 ano ✏️ Atualizado há 4 meses

Comentários