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

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

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



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

تتكون VisDrone من 288 مقطع فيديو مع 261908 إطارًا و 10209 صور ثابتة، تم التقاطها بواسطة كاميرات مختلفة مثبتة على طائرات بدون طيار. تغطي مجموعة البيانات نطاقًا واسعًا من الجوانب، بما في ذلك الموقع (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 🚀 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.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: 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


  def visdrone2yolo(dir, split, source_name=None):
      """Convert VisDrone annotations to YOLO format with images/{split} and labels/{split} structure."""
      from PIL import Image
      from tqdm import tqdm

      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 = [
      "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
  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

الاستخدام

لتدريب نموذج YOLO11n على مجموعة بيانات VisDrone لعدد 100 حقبة (epoch) بحجم صورة 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}}

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

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

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

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

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

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

لتدريب نموذج YOLO11 على مجموعة بيانات VisDrone لعدد 100 حقبة (epoch) بحجم صورة 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}
}


📅 تم الإنشاء منذ سنة واحدة ✏️ تم التحديث منذ 4 أشهر

تعليقات