Ensemble de données VisDrone
Le VisDrone Dataset est un benchmark à grande échelle créé par l'équipe AISKYEYE du Laboratoire d'apprentissage machine et d'exploration de données de l'Université de Tianjin, en Chine. Il contient des données de vérité terrain soigneusement annotées pour diverses tâches de vision par ordinateur liées à l'analyse d'images et de vidéos basées sur des drones.
Regarder : Comment entraîner les modèles Ultralytics YOLO sur l'ensemble de données VisDrone pour l'analyse d'images de drones
VisDrone est composé de 288 clips vidéo contenant 261 908 images et 10 209 images statiques, capturées par diverses caméras montées sur des drones. L’ensemble de données couvre un large éventail d’aspects, notamment l’emplacement (14 villes différentes à travers la Chine), l’environnement (urbain et rural), les objets (piétons, véhicules, vélos, etc.) et la densité (scènes clairsemées et bondées). L’ensemble de données a été recueilli à l’aide de diverses plateformes de drones dans différents scénarios et conditions météorologiques et d’éclairage. Ces images sont annotées manuellement avec plus de 2,6 millions de cadres de délimitation de cibles telles que les piétons, les voitures, les vélos et les tricycles. Des attributs tels que la visibilité de la scène, la classe d’objet et l’occlusion sont également fournis pour une meilleure utilisation des données.
Structure du jeu de données
L'ensemble de données VisDrone est organisé en cinq sous-ensembles principaux, chacun étant axé sur une tâche spécifique :
- Tâche 1 : Détection d’objets dans les images
- Tâche 2 : Détection d’objets dans les vidéos
- Tâche 3 : Suivi d’objet unique
- Tâche 4 : Suivi multi-objets
- Tâche 5 : Comptage de foule
Applications
L'ensemble de données VisDrone est largement utilisé pour l'entraînement et l'évaluation de modèles d'apprentissage profond dans des tâches de vision par ordinateur basées sur des drones, telles que la détection d'objets, le suivi d'objets et le comptage de foules. L'ensemble diversifié de données de capteurs, d'annotations d'objets et d'attributs de l'ensemble de données en fait une ressource précieuse pour les chercheurs et les praticiens dans le domaine de la vision par ordinateur basée sur des drones.
YAML du jeu de données
Un fichier YAML (Yet Another Markup Language) est utilisé pour définir la configuration de l'ensemble de données. Il contient des informations sur les chemins d'accès, les classes et d'autres informations pertinentes de l'ensemble de données. Dans le cas de l'ensemble de données Visdrone, le VisDrone.yaml
fichier est maintenu à l'adresse 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 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 = [
"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, 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
Utilisation
Pour entraîner un modèle YOLO11n sur le jeu de données VisDrone pendant 100 epochs avec une taille d'image de 640, vous pouvez utiliser les extraits de code suivants. Pour une liste complète des arguments disponibles, consultez la page Formation du modèle.
Exemple d'entraînement
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
Exemple de données et d'annotations
L'ensemble de données VisDrone contient un ensemble diversifié d'images et de vidéos capturées par des caméras montées sur des drones. Voici quelques exemples de données de l'ensemble de données, ainsi que leurs annotations correspondantes :
- Tâche 1 : Détection d’objets dans les images - Cette image montre un exemple de détection d’objets dans des images, où les objets sont annotés avec des boîtes englobantes. L’ensemble de données fournit une grande variété d’images prises à partir de différents endroits, environnements et densités afin de faciliter le développement de modèles pour cette tâche.
L'exemple met en évidence la variété et la complexité des données de l'ensemble de données VisDrone et souligne l'importance des données de capteurs de haute qualité pour les tâches de vision par ordinateur basées sur des drones.
Citations et remerciements
Si vous utilisez l'ensemble de données VisDrone dans vos travaux de recherche ou de développement, veuillez citer l'article suivant :
@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}}
Nous tenons à remercier l'équipe AISKYEYE du laboratoire d'apprentissage automatique et d'exploration de données de l'université de Tianjin, en Chine, pour la création et la maintenance de l'ensemble de données VisDrone en tant que ressource précieuse pour la communauté de recherche en vision par ordinateur basée sur les drones. Pour plus d'informations sur l'ensemble de données VisDrone et ses créateurs, consultez le référentiel GitHub de l'ensemble de données VisDrone.
FAQ
Qu'est-ce que le jeu de données VisDrone et quelles sont ses principales caractéristiques ?
Le VisDrone Dataset est un benchmark à grande échelle créé par l'équipe AISKYEYE de l'Université de Tianjin, en Chine. Il est conçu pour diverses tâches de vision par ordinateur liées à l'analyse d'images et de vidéos basées sur des drones. Les principales caractéristiques sont les suivantes :
- Composition : 288 clips vidéo avec 261 908 images et 10 209 images statiques.
- Annotations : Plus de 2,6 millions de boîtes englobantes pour des objets tels que les piétons, les voitures, les vélos et les tricycles.
- Diversité : Collectées dans 14 villes, dans des environnements urbains et ruraux, dans différentes conditions météorologiques et d'éclairage.
- Tâches : Réparties en cinq tâches principales : la détection d’objets dans les images et les vidéos, le suivi d’objets uniques et multi-objets, et le comptage de foule.
Comment puis-je utiliser l’ensemble de données VisDrone pour entraîner un modèle YOLO11 avec Ultralytics ?
Pour entraîner un modèle YOLO11 sur l'ensemble de données VisDrone pendant 100 epochs avec une taille d'image de 640, vous pouvez suivre ces étapes :
Exemple d'entraînement
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
Pour des options de configuration supplémentaires, veuillez consulter la page Entraînement du modèle.
Quels sont les principaux sous-ensembles du jeu de données VisDrone et leurs applications ?
L'ensemble de données VisDrone est divisé en cinq sous-ensembles principaux, chacun étant adapté à une tâche de vision par ordinateur spécifique :
- Tâche 1 : Détection d’objets dans les images.
- Tâche 2 : Détection d’objets dans les vidéos.
- Tâche 3 : Suivi d’objet unique.
- Tâche 4 : Suivi multi-objets.
- Tâche 5 : Comptage de foule.
Ces sous-ensembles sont largement utilisés pour l'entraînement et l'évaluation des modèles de deep learning dans les applications basées sur les drones, telles que la surveillance, la surveillance du trafic et la sécurité publique.
Où puis-je trouver le fichier de configuration de l'ensemble de données VisDrone dans Ultralytics ?
Le fichier de configuration pour le jeu de données VisDrone, VisDrone.yaml
, se trouve dans le dépôt Ultralytics au lien suivant :
VisDrone.yaml.
Comment puis-je citer l'ensemble de données VisDrone si je l'utilise dans mes recherches ?
Si vous utilisez l'ensemble de données VisDrone dans vos travaux de recherche ou de développement, veuillez citer l'article suivant :
@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}
}