مجموعة بيانات VisDrone#
يُعد VisDrone Dataset معياراً واسع النطاق لصور الطائرات بدون طيار، حيث توفر مجموعة فرعية للكشف (VisDrone2019-DET) 8,629 صورة جوية — منها 6,471 للتدريب، و548 للتحقق، و1,610 للاختبار والتطوير — مع تعليقات توضيحية لـ 10 فئات كائنات لـ object detection. وقد تم إنشاؤه بواسطة فريق AISKYEYE في مختبر Machine Learning والتعدين البيانات في جامعة تيانجين بالصين.
Watch: How to Train Ultralytics YOLO on the VisDrone Dataset | Aerial Detection | Complete Tutorial 🚀
يضم معيار VisDrone الكامل 288 مقطع فيديو (261,908 إطاراً) و10,209 صورة ثابتة التقطتها كاميرات مثبتة على طائرات بدون طيار في 14 مدينة مختلفة عبر الصين، وتغطي بيئات حضرية وريفية، ومشاهد متفرقة ومزدحمة، وظروف طقس وإضاءة متنوعة. تحسّن إطاراتها أكثر من 2.6 مليون bounding boxes معلّقة يدوياً، مع سمات إضافية مثل رؤية المشهد، وفئة الكائنات، والاحتجاب. يستخدم تكوين Ultralytics VisDrone.yaml مجموعة الصور الثابتة الفرعية VisDrone2019-DET من هذا المعيار.
الميزات الرئيسية#
- كائنات صغيرة ومزدحمة: تجعل وجهات النظر الجوية الأهداف صغيرة ومزدحمة — إذ تحتوي صور التحقق الـ 548 وحدها على 38,759 صندوقاً مصنفاً، بمتوسط حوالي 70 كائناً لكل صورة.
- تنوع المشاهد: صور من 14 مدينة صينية تغطي مواقع حضرية وريفية، ليلاً ونهاراً، وظروف جوية مختلفة.
- تعليقات توضيحية غنية: أكثر من 2.6 مليون صندوق عبر المعيار الكامل، مع سمات الحجب والرؤية.
- تقسيمات محددة مسبقاً: تقسيمات ثابتة للتدريب / التحقق / الاختبار (6,471 / 548 / 1,610 صورة) لتقييم متسق.
هيكل مجموعة البيانات#
يغطي تكوين VisDrone في Ultralytics مجموعة صور VisDrone2019-DET الفرعية، مقسمة إلى ثلاثة أجزاء:
| التقسيم (Split) | الصور | الوصف |
|---|---|---|
| التدريب | 6,471 | صور جوية مصنفة تستخدم لتدريب كاشف الكائنات |
| التحقق | 548 | الصور المستخدمة لـ evaluation أثناء التطوير |
| Test-dev | 1,610 | صور محجوزة للتقييم النهائي للنموذج المدرب |
يتم حجب تقسيم رابع، وهو test-challenge (1,580 صورة)، لمسابقة VisDrone ولا يتم تنزيله، وهذا هو السبب في أن مجموعة DET الكاملة يبلغ مجموعها 10,209 صورة.
تتضمن مجموعة البيانات 10 فئات كائنات: المشاة (pedestrian)، الأشخاص (people)، الدراجات الهوائية (bicycle)، السيارات (car)، الشاحنات الصغيرة (van)، الشاحنات (truck)، الدراجات ثلاثية العجلات (tricycle)، الدراجات ثلاثية العجلات المغطاة (awning-tricycle)، الحافلات (bus)، والدراجات النارية (motor). تميز VisDrone بين المشاة (شخص يقف أو يمشي) و الأشخاص (شخص في أي وضعية أخرى).
عند الاستخدام الأول، يقوم برنامج التنزيل بتحويل تعليقات VisDrone الأصلية إلى تنسيق YOLO، متجاهلاً المناطق المميزة كغير ضرورية (والتي تستبعد أيضاً فئة "الأخرى" غير المستخدمة).
التطبيقات#
تجعل المشاهد الكثيفة والأهداف الدقيقة لـ VisDrone منها معياراً قياسياً لـ small-object detection من وجهات النظر الجوية. تشمل التطبيقات الشائعة ما يلي:
- مراقبة حركة المرور وعد المركبات من الطائرات بدون طيار (UAVs)
- تحليل الحشود ومراقبة السلامة العامة
- تفتيش البنية التحتية ومواقع البناء
- بحوث Computer vision حول اكتشاف الكائنات الصغيرة في المشاهد المزدحمة
للحصول على معايير صور جوية أخرى، راجع xView dataset الذي يركز على الأقمار الصناعية أو DOTA-v2 dataset الموجه للصناديق.
YAML مجموعة البيانات#
يحدد ملف VisDrone.yaml تكوين مجموعة البيانات — مسارات مجموعة البيانات، وأسماء الفئات، وبرنامج نصي تلقائي للتنزيل والتحويل. تتم صيانته في مستودع Ultralytics على https://github.com/ultralytics/ultralytics/blob/main/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 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الاستخدام#
يتم تنزيل VisDrone تلقائياً في المرة الأولى التي تقوم فيها بالتدريب — ثلاث أرشيفات يبلغ مجموعها حوالي 2 جيجابايت — وتحتاج إلى حوالي 4 جيجابايت من مساحة القرص الفارغة أثناء الاستخراج والتحويل.
لتدريب نموذج YOLO26n على مجموعة بيانات VisDrone لمدة 100 epochs بحجم صورة يبلغ 640، يمكنك استخدام مقتطفات التعليمات البرمجية التالية. للحصول على قائمة شاملة بالوسائط المتاحة، راجع صفحة نموذج Training.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model - dataset will auto-download on first run
results = model.train(data="VisDrone.yaml", epochs=100, imgsz=640)لتسمية صور جوية إضافية وإدارة عمليات تشغيل تدريب VisDrone في متصفحك، استخدم Ultralytics Platform.
عينة من البيانات والتعليقات#
تُظهر العينة أدناه مشهداً نموذجياً لـ VisDrone: وجهة نظر جوية فوق طريق مزدحم حيث يظهر المشاة والمركبات كأهداف صغيرة ومزدحمة، والعديد منها محجوب جزئياً بواسطة بعضها البعض.

الاقتباسات والشكر#
إذا كنت تستخدم مجموعة بيانات VisDrone في أبحاثك أو عملك التطويري، يرجى الاستشهاد بالورقة البحثية التالية:
@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={2022},
volume={44},
number={11},
pages={7380-7399},
doi={10.1109/TPAMI.2021.3119563}}نود أن نشكر فريق AISKYEYE في مختبر التعلم الآلي وData Mining، جامعة تيانجين، الصين، لإنشاء وصيانة مجموعة بيانات VisDrone. لمزيد من المعلومات، تفضل بزيارة VisDrone Dataset GitHub repository.
الأسئلة الشائعة#
تُستخدم VisDrone لتدريب وتقييم أداء كاشفات الكائنات على الصور الملتقطة بالطائرات بدون طيار، حيث تكون الكائنات صغيرة ومزدحمة وتظهر من الأعلى. إن دمجها بين وجهات النظر الجوية، والمشاهد المزدحمة، والظروف المتنوعة يجعلها منصة اختبار قياسية لمراقبة حركة المرور عبر الطائرات بدون طيار (UAV)، وتحليل الحشود، وأبحاث اكتشاف الكائنات الصغيرة.
يحتوي تكوين Ultralytics VisDrone على 8,629 صورة: 6,471 للتدريب، و548 للتحقق، و1,610 للاختبار (test-dev). تشترك جميع التقسيمات في نفس الـ 10 فئات: المشاة، الأشخاص، الدراجات الهوائية، السيارات، الشاحنات الصغيرة، الشاحنات، الدراجات ثلاثية العجلات، الدراجات ثلاثية العجلات المزودة بمظلات، الحافلات، والدراجات النارية. راجع Dataset Structure للحصول على التفاصيل الكاملة.
يتم تنزيل VisDrone تلقائياً في المرة الأولى التي تتدرب فيها باستخدام
data="VisDrone.yaml"— ولا تتطلب أي خطوات يدوية. يجلب البرنامج النصي ثلاثة أرشيفات (حوالي 2 جيجابايت) من أصول إصدار Ultralytics GitHub ويحول التعليقات التوضيحية إلى تنسيق YOLO. ولا يتم تضمين تقسيم تحدي الاختبار المحتجز للمسابقة.قم بتدريب نموذج YOLO26n على VisDrone لمدة 100 حقبة (epochs) بحجم صورة 640:
مثال على التدريب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)للحصول على تكوينات مفصلة، راجع صفحة Training و model training tips.
تعتبر الكائنات في VisDrone صغيرة جداً بالنسبة للإطار — وغالباً ما تكون عبارة عن بضع عشرات من البكسل فقط — وتظهر في مجموعات كثيفة ومحجوبة بشدة، مما يشكل عبئاً على الكاشفات المضبوطة على صور على مستوى الأرض. يؤدي التدريب والتنبؤ بدقة أعلى (على سبيل المثال
imgsz=1280مع دفعة أصغر) إلى استعادة الأهداف الصغيرة، ويقوم SAHI tiled inference بتقسيم الصور الكبيرة بحيث تشغل الكائنات الصغيرة مساحة أكبر من كل نافذة استدلال.يمتد معيار VisDrone الكامل إلى خمس مهام — اكتشاف الكائنات في الصور، واكتشاف الكائنات في مقاطع الفيديو، وتتبع الكائنات المفردة، وmulti-object tracking، وعد الحشود — عبر 288 مقطع فيديو و10,209 صورة ثابتة. يغطي تكوين Ultralytics
VisDrone.yamlمهمة اكتشاف الصور فقط (VisDrone2019-DET)، حيث يقوم بتنزيل صور التدريب البالغ عددها 6,471، و548 للتحقق، و1,610 للاختبار والتطوير.قم للاستشهاد بالورقة البحثية "Detection and Tracking Meet Drones Challenge" (IEEE TPAMI، المجلد 44، العدد 11، 2022، DOI 10.1109/TPAMI.2021.3119563)؛ إدخال BibTeX الكامل موجود في قسم Citations and Acknowledgments أعلاه.



