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:
- Tarefa 1: Detecção de objetos em imagens
- Tarefa 2: Detecção de objetos em vídeos
- Tarefa 3: Rastreamento de objeto único
- Tarefa 4: Rastreamento de múltiplos objetos
- 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:
- 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:
- Tarefa 1: Detecção de objetos em imagens.
- Tarefa 2: Detecção de objetos em vídeos.
- Tarefa 3: Rastreamento de objeto único.
- Tarefa 4: Rastreamento de múltiplos objetos.
- 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}
}