رؤية YOLO 2026:
No license

مجموعة بيانات 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-dev1,610صور محجوزة للتقييم النهائي للنموذج المدرب

يتم حجب تقسيم رابع، وهو test-challenge (1,580 صورة)، لمسابقة VisDrone ولا يتم تنزيله، وهذا هو السبب في أن مجموعة DET الكاملة يبلغ مجموعها 10,209 صورة.

تتضمن مجموعة البيانات 10 فئات كائنات: المشاة (pedestrian)، الأشخاص (people)، الدراجات الهوائية (bicycle)، السيارات (car)، الشاحنات الصغيرة (van)، الشاحنات (truck)، الدراجات ثلاثية العجلات (tricycle)، الدراجات ثلاثية العجلات المغطاة (awning-tricycle)، الحافلات (bus)، والدراجات النارية (motor). تميز VisDrone بين المشاة (شخص يقف أو يمشي) و الأشخاص (شخص في أي وضعية أخرى).

التحويل التلقائي إلى YOLO

عند الاستخدام الأول، يقوم برنامج التنزيل بتحويل تعليقات 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/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

الاستخدام#

~2 جيجابايت للتنزيل

يتم تنزيل 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 dataset aerial drone imagery with object detection

الاقتباسات والشكر#

إذا كنت تستخدم مجموعة بيانات 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 أعلاه.

التعليقات