تخطي إلى المحتوى

مجموعة بيانات VisDrone Dataset

مجموعة بيانات VisDrone Dataset هي معيار واسع النطاق أنشأه فريق AISKYEYE في مختبر التعلم الآلي واستخراج البيانات في جامعة تيانجين بالصين. وهي تحتوي على بيانات الحقيقة الأرضية المشروحة بعناية لمختلف مهام الرؤية الحاسوبية المتعلقة بتحليل الصور والفيديو المستندة إلى الطائرات بدون طيار.



شاهد: كيفية تدريب النماذج Ultralytics YOLO على مجموعة بيانات VisDrone لتحليل صور الطائرات بدون طيار

تتألف مجموعة بيانات VisDrone من 288 مقطع فيديو تحتوي على 261,908 إطارًا و10,209 صور ثابتة، تم التقاطها بواسطة كاميرات مختلفة مثبتة على طائرات بدون طيار. وتغطي مجموعة البيانات مجموعة واسعة من الجوانب، بما في ذلك الموقع (14 مدينة مختلفة في جميع أنحاء الصين)، والبيئة (حضرية وريفية)، والأشياء (المشاة والمركبات والدراجات الهوائية وغيرها)، والكثافة (مشاهد متفرقة ومزدحمة). تم جمع مجموعة البيانات باستخدام منصات مختلفة للطائرات بدون طيار في ظل سيناريوهات مختلفة وظروف الطقس والإضاءة. تم تذييل هذه الإطارات يدويًا بأكثر من 2.6 مليون مربع محدد للأهداف مثل المشاة والسيارات والدراجات والدراجات الهوائية والدراجات ثلاثية العجلات. كما يتم توفير سمات مثل رؤية المشهد وفئة الكائن وانسداده للاستفادة من البيانات بشكل أفضل.

هيكلية مجموعة البيانات

تنقسم مجموعة بيانات VisDrone إلى خمس مجموعات فرعية رئيسية، تركز كل منها على مهمة محددة:

  1. المهمة 1: اكتشاف الأجسام في الصور
  2. المهمة 2: اكتشاف الأجسام في مقاطع الفيديو
  3. المهمة 3: تتبع كائن واحد
  4. المهمة 4: تتبع الأجسام المتعددة
  5. المهمة 5: عدّ الحشود

التطبيقات

تُستخدم مجموعة بيانات VisDrone على نطاق واسع لتدريب وتقييم نماذج التعلم العميق في مهام الرؤية الحاسوبية القائمة على الطائرات بدون طيار مثل اكتشاف الأجسام وتتبع الأجسام وعدّ الحشود. تجعل مجموعة البيانات المتنوعة من بيانات المستشعرات والشروح التوضيحية للأشياء والسمات من مجموعة البيانات مورداً قيماً للباحثين والممارسين في مجال الرؤية الحاسوبية القائمة على الطائرات بدون طيار.

مجموعة البيانات YAML

يُستخدم ملف YAML (لغة ترميز أخرى) لتحديد تكوين مجموعة البيانات. وهو يحتوي على معلومات حول مسارات مجموعة البيانات وفئاتها والمعلومات الأخرى ذات الصلة. في حالة مجموعة بيانات Visdrone، فإن ملف VisDrone.yaml يتم الاحتفاظ بالملف في https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/VisDrone.yaml.

ultralytics/cfg/datasets/VisDrone.yaml

# Ultralytics YOLO 🚀, AGPL-3.0 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: ../datasets/VisDrone # dataset root dir
train: VisDrone2019-DET-train/images # train images (relative to 'path')  6471 images
val: VisDrone2019-DET-val/images # val images (relative to 'path')  548 images
test: VisDrone2019-DET-test-dev/images # test 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

  from ultralytics.utils.downloads import download

  def visdrone2yolo(dir):
      from PIL import Image
      from tqdm import tqdm

      def convert_box(size, box):
          # Convert VisDrone box to YOLO xywh box
          dw = 1. / size[0]
          dh = 1. / size[1]
          return (box[0] + box[2] / 2) * dw, (box[1] + box[3] / 2) * dh, box[2] * dw, box[3] * dh

      (dir / 'labels').mkdir(parents=True, exist_ok=True)  # make labels directory
      pbar = tqdm((dir / 'annotations').glob('*.txt'), desc=f'Converting {dir}')
      for f in pbar:
          img_size = Image.open((dir / 'images' / f.name).with_suffix('.jpg')).size
          lines = []
          with open(f, 'r') as file:  # read annotation.txt
              for row in [x.split(',') for x in file.read().strip().splitlines()]:
                  if row[4] == '0':  # VisDrone 'ignored regions' class 0
                      continue
                  cls = int(row[5]) - 1
                  box = convert_box(img_size, tuple(map(int, row[:4])))
                  lines.append(f"{cls} {' '.join(f'{x:.6f}' for x in box)}\n")
                  with open(str(f).replace(f'{os.sep}annotations{os.sep}', f'{os.sep}labels{os.sep}'), 'w') as fl:
                      fl.writelines(lines)  # write label.txt


  # Download
  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
  for d in 'VisDrone2019-DET-train', 'VisDrone2019-DET-val', 'VisDrone2019-DET-test-dev':
      visdrone2yolo(dir / d)  # convert VisDrone annotations to YOLO labels

الاستخدام

لتدريب نموذج YOLO11n على مجموعة بيانات VisDrone لـ 100 حقبة زمنية بحجم صورة 640، يمكنك استخدام مقتطفات التعليمات البرمجية التالية. للحصول على قائمة شاملة بالوسائط المتاحة، راجع صفحة تدريب النموذج.

مثال على القطار

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

عينة من البيانات والشروح

تحتوي مجموعة بيانات VisDrone على مجموعة متنوعة من الصور ومقاطع الفيديو التي التقطتها كاميرات محمولة على طائرات بدون طيار. فيما يلي بعض الأمثلة على البيانات من مجموعة البيانات، إلى جانب التعليقات التوضيحية المقابلة لها:

صورة عينة مجموعة البيانات

  • المهمة 1: اكتشاف الأجسام في الصور - توضّح هذه الصورة مثالاً على اكتشاف الأجسام في الصور، حيث يتم وضع شروح للأجسام مع مربعات محدّدة. توفر مجموعة البيانات مجموعة متنوعة من الصور المأخوذة من مواقع وبيئات وكثافات مختلفة لتسهيل تطوير نماذج لهذه المهمة.

يعرض المثال تنوع البيانات وتعقيدها في مجموعة بيانات 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={2021},
  volume={},
  number={},
  pages={1-1},
  doi={10.1109/TPAMI.2021.3119563}}

نود أن نعرب عن تقديرنا لفريق AISKYEYEE في مختبر التعلم الآلي واستخراج البيانات في جامعة تيانجين بالصين لإنشاء مجموعة بيانات VisDrone وصيانتها كمصدر قيم لمجتمع أبحاث الرؤية الحاسوبية القائمة على الطائرات بدون طيار. للمزيد من المعلومات حول مجموعة بيانات VisDrone ومنشئيها، يرجى زيارة مستودع بيانات VisDrone Dataset GitHub.

الأسئلة الشائعة

ما هي مجموعة بيانات VisDrone وما هي ميزاتها الرئيسية؟

مجموعة بيانات VisDrone Dataset هي معيار واسع النطاق أنشأه فريق AISKYEYE في جامعة تيانجين بالصين. وهو مصمم لمختلف مهام الرؤية الحاسوبية المتعلقة بتحليل الصور والفيديو القائم على الطائرات بدون طيار. تشمل الميزات الرئيسية ما يلي:

  • التركيب: 288 مقطع فيديو يحتوي على 261,908 إطارات و10,209 صور ثابتة.
  • التعليقات التوضيحية: أكثر من 2.6 مليون مربع محدد للأجسام مثل المشاة والسيارات والدراجات والدراجات الهوائية والدراجات ثلاثية العجلات.
  • التنوع: تم جمعها في 14 مدينة، في المناطق الحضرية والريفية، في ظل ظروف مناخية وظروف إضاءة مختلفة.
  • المهام: تنقسم إلى خمس مهام رئيسية - الكشف عن الأجسام في الصور ومقاطع الفيديو، وتتبع جسم واحد ومتعدد الأجسام، وعدّ الحشود.

كيف يمكنني استخدام مجموعة بيانات VisDrone Dataset لتدريب نموذج YOLO11 باستخدام Ultralytics ؟

لتدريب نموذج YOLO11 على مجموعة بيانات VisDrone لـ 100 حلقة تدريبية بحجم صورة 640، يمكنك اتباع الخطوات التالية:

مثال على القطار

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

للحصول على خيارات تهيئة إضافية، يُرجى الرجوع إلى صفحة تدريب الطراز.

ما هي المجموعات الفرعية الرئيسية لمجموعة بيانات VisDrone وتطبيقاتها؟

تنقسم مجموعة بيانات VisDrone إلى خمس مجموعات فرعية رئيسية، كل منها مصممة خصيصاً لمهمة رؤية حاسوبية محددة:

  1. المهمة 1: اكتشاف الأجسام في الصور.
  2. المهمة 2: اكتشاف الأجسام في مقاطع الفيديو.
  3. المهمة 3: تتبع كائن واحد.
  4. المهمة 4: تتبع الأجسام المتعددة.
  5. المهمة 5: عدّ الحشود.

تُستخدم هذه المجموعات الفرعية على نطاق واسع لتدريب وتقييم نماذج التعلم العميق في التطبيقات القائمة على الطائرات بدون طيار مثل المراقبة ومراقبة حركة المرور والسلامة العامة.

أين يمكنني العثور على ملف التكوين لمجموعة بيانات VisDrone في Ultralytics ؟

ملف التكوين لمجموعة بيانات VisDrone, VisDrone.yaml، يمكن العثور عليها في مستودع Ultralytics على الرابط التالي: VisDrone.yaml.

كيف يمكنني الاستشهاد بمجموعة بيانات 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={2021},
  volume={},
  number={},
  pages={1-1},
  doi={10.1109/TPAMI.2021.3119563}
}
📅 تم إنشاؤها منذ 1 سنة مضت ✏️ تم التحديث منذ 2 شهر

التعليقات