انتقل إلى المحتوى

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

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

يتكون 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/yolov5/releases/download/v1.0/VisDrone2019-DET-train.zip',
          'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-val.zip',
          'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-test-dev.zip',
          'https://github.com/ultralytics/yolov5/releases/download/v1.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

استخدام

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

مثال القطار

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.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=yolov8n.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}}

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



تم إنشاء 2023-11-12, اخر تحديث 2023-11-22
المؤلفون: جلين جوشر (3) ، يضحك س (1)

التعليقات