مجموعة بيانات VisDrone#
تُعد مجموعة بيانات VisDrone معيارًا واسع النطاق لصور الطائرات المسيّرة، وتوفر مجموعة الكشف الفرعية فيها (VisDrone2019-DET) عدد 8,629 صورة جوية — 6,471 للتدريب، و548 للتحقق، و1,610 للاختبار التطويري — مشروحة بعشر فئات من الأجسام من أجل الكشف عن الأجسام. أنشأها فريق AISKYEYE في مختبر التعلم الآلي وتنقيب البيانات بجامعة تيانجين في الصين.
شاهد: كيفية تدريب Ultralytics YOLO على مجموعة بيانات VisDrone | الاكتشاف الجوي | شرح تعليمي كامل 🚀
تتألف مجموعة VisDrone المعيارية الكاملة من 288 مقطع فيديو (261,908 إطارًا) و10,209 صور ثابتة التُقطت بكاميرات مثبتة على طائرات مسيّرة في 14 مدينة مختلفة في أنحاء الصين، وتغطي بيئات حضرية وريفية، ومشاهد قليلة الأجسام أو مزدحمة، وظروفًا متنوعة من الطقس والإضاءة. وتضم إطاراتها أكثر من 2.6 مليون صندوق إحاطة مشروح يدويًا، إلى جانب سمات إضافية مثل مدى وضوح المشهد وفئة الجسم ودرجة الاحتجاب. يستخدم إعداد Ultralytics VisDrone.yaml المجموعة الفرعية للصور الثابتة VisDrone2019-DET من هذا المعيار.
الميزات الرئيسية#
- أجسام صغيرة وكثيفة: تجعل المناظير الجوية الأهداف صغيرة ومزدحمة؛ إذ تحتوي صور التحقق البالغ عددها 548 وحدها على 38,759 صندوقًا موسومًا، بمتوسط يقارب 70 جسمًا في الصورة.
- تنوع المشاهد: صور من 14 مدينة صينية تغطي مواقع حضرية وريفية، والنهار والليل، وظروفًا جوية مختلفة.
- تعليقات توضيحية غنية: أكثر من 2.6 مليون صندوق في المعيار الكامل، مع سمات للاحتجاب والوضوح.
- تقسيمات محددة مسبقًا: تقسيمات ثابتة إلى تدريب / تحقق / اختبار تطويري (6,471 / 548 / 1,610 صورة) لضمان اتساق التقييم.
بنية مجموعة البيانات#
يشمل إعداد Ultralytics لـVisDrone مجموعة الصور الفرعية VisDrone2019-DET، المقسمة إلى ثلاثة أجزاء:
| المجموعة الفرعية | الصور | الوصف |
|---|---|---|
| التدريب | 6,471 | صور جوية موسومة تُستخدم لتدريب الكاشف |
| التحقق | 548 | صور تُستخدم للتقييم أثناء التطوير |
| الاختبار التطويري | 1,610 | صور محجوبة من التدريب للتقييم النهائي للنموذج المدرّب |
هناك تقسيم رابع هو test-challenge (1,580 صورة)، تحتفظ به مسابقة VisDrone ولا يُنزّل؛ لذلك يبلغ إجمالي مجموعة DET الكاملة 10,209 صور.
تتضمن مجموعة البيانات تعليقات توضيحية لعشر فئات من الأجسام: مشاة، أشخاص، دراجة، سيارة، شاحنة صغيرة، شاحنة، دراجة ثلاثية العجلات، دراجة ثلاثية العجلات ذات مظلة، حافلة، ودراجة نارية. تميّز VisDrone بين المشاة (شخص واقف أو يمشي) والأشخاص (شخص في أي وضعية أخرى).
عند الاستخدام الأول، يحوّل برنامج التنزيل التعليقات التوضيحية الأصلية في VisDrone إلى تنسيق YOLO، متجاوزًا المناطق المصنفة على أنها متجاهلة (ويستبعد بذلك أيضًا فئة «أخرى» غير المستخدمة).
التطبيقات#
تجعل مشاهد VisDrone الكثيفة وأهدافها الصغيرة منها معيارًا شائعًا لـالكشف عن الأجسام الصغيرة من المناظير الجوية. وتشمل التطبيقات الشائعة ما يلي:
- مراقبة حركة المرور وإحصاء المركبات باستخدام UAVs
- تحليل الحشود ومراقبة السلامة العامة
- فحص البنية التحتية ومواقع البناء
- أبحاث الرؤية الحاسوبية حول اكتشاف الأجسام الصغيرة في المشاهد المزدحمة
للاطلاع على معايير أخرى للصور الجوية، راجع مجموعة بيانات xView المخصصة للأقمار الصناعية أو مجموعة بيانات DOTA-v2 ذات الصناديق الموجّهة.
ملف 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 GB — وتحتاج إلى نحو 4 GB من المساحة الحرة على القرص أثناء فك الضغط والتحويل.
لتدريب نموذج YOLO26n على مجموعة بيانات VisDrone لمدة 100 حقبة وبحجم صورة 640، يمكنك استخدام مقتطفات الشيفرة التالية. وللاطلاع على قائمة شاملة بالوسائط المتاحة، راجع صفحة تدريب النموذج.
from ultralytics import YOLO
# تحميل نموذج
model = YOLO("yolo26n.pt") # تحميل نموذج مدرّب مسبقًا (موصى به للتدريب)
# درّب النموذج - ستُنزل مجموعة البيانات تلقائيًا عند التشغيل الأول
results = model.train(data="VisDrone.yaml", epochs=100, imgsz=640)لتوسيم صور جوية إضافية وإدارة عمليات تدريب VisDrone في متصفحك، استخدم منصة Ultralytics.
البيانات النموذجية والتعليقات التوضيحية#
تُظهر العينة أدناه مشهدًا نموذجيًا من 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 في مختبر التعلم الآلي وتنقيب البيانات بجامعة تيانجين في الصين، لإنشاء مجموعة بيانات VisDrone وصيانتها. لمزيد من المعلومات، تفضّل بزيارة مستودع VisDrone Dataset على GitHub.
الأسئلة الشائعة#
تُستخدم VisDrone لتدريب الكواشف وتقييمها على الصور الملتقطة بالطائرات المسيّرة، حيث تكون الأجسام صغيرة وكثيفة وتُرى من الأعلى. ويجعل الجمع بين المناظير الجوية والمشاهد المزدحمة والظروف المتنوعة منها بيئة اختبار معيارية لمراقبة حركة المرور باستخدام UAVs، وتحليل الحشود، وأبحاث الكشف عن الأجسام الصغيرة.
يتضمن إعداد Ultralytics لـVisDrone عدد 8,629 صورة: 6,471 للتدريب، و548 للتحقق، و1,610 للاختبار (test-dev). وتشترك جميع التقسيمات في الفئات العشر نفسها: مشاة، أشخاص، دراجة، سيارة، شاحنة صغيرة، شاحنة، دراجة ثلاثية العجلات، دراجة ثلاثية العجلات ذات مظلة، حافلة، ودراجة نارية. راجع بنية مجموعة البيانات للاطلاع على التفاصيل الكاملة.
تُنزّل VisDrone تلقائيًا عند التدريب لأول مرة باستخدام
data="VisDrone.yaml"، ولا تتطلب أي خطوات يدوية. يجلب البرنامج النصي ثلاثة أرشيفات (نحو 2 GB) من أصول إصدارات Ultralytics على GitHub، ثم يحوّل التعليقات التوضيحية إلى تنسيق YOLO. ولا يتضمن التنزيل تقسيم test-challenge المحجوب الخاص بالمسابقة.درّب نموذج YOLO26n على VisDrone لمدة 100 حقبة وبحجم صورة 640:
مثال على التدريبfrom ultralytics import YOLO # تحميل نموذج model = YOLO("yolo26n.pt") # تحميل نموذج مدرّب مسبقًا (موصى به للتدريب) # تدريب النموذج results = model.train(data="VisDrone.yaml", epochs=100, imgsz=640)للاطلاع على الإعدادات التفصيلية، راجع صفحة التدريب ونصائح تدريب النماذج.
الأجسام في VisDrone صغيرة جدًا مقارنة بالإطار — إذ لا يتجاوز حجمها غالبًا بضع عشرات من البكسلات — وتظهر في مجموعات كثيفة يحجب بعضها بعضًا بدرجة كبيرة، ما يشكل تحديًا للكواشف المضبوطة على صور ملتقطة من مستوى الأرض. يساعد التدريب والاستدلال بدقة أعلى (مثل
imgsz=1280مع حجم دفعة أصغر) على استعادة الأهداف الصغيرة، كما يقسم الاستدلال المرقّع باستخدام SAHI الصور الكبيرة إلى أجزاء، بحيث تشغل الأجسام الصغيرة مساحة أكبر في كل نافذة استدلال.يغطي معيار VisDrone الكامل خمس مهام — كشف الأجسام في الصور، وكشف الأجسام في مقاطع الفيديو، وتتبع جسم واحد، وتتبع أجسام متعددة، وإحصاء الحشود — عبر 288 مقطع فيديو و10,209 صور ثابتة. ولا يغطي إعداد Ultralytics
VisDrone.yamlسوى مهمة كشف الأجسام في الصور (VisDrone2019-DET)، إذ ينزّل 6,471 صورة تدريب و548 صورة تحقق و1,610 صور اختبار تطويري.استشهد بالورقة البحثية «التحدي الذي يجمع بين الكشف والتتبع والطائرات المسيّرة» (IEEE TPAMI، المجلد 44، العدد 11، 2022، DOI 10.1109/TPAMI.2021.3119563)؛ يتوفر إدخال BibTeX الكامل في قسم الاستشهادات والشكر والتقدير أعلاه.



