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

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

The VisDrone Dataset is a large-scale benchmark created by the AISKYEYE team at the Lab of Machine Learning and Data Mining, Tianjin University, China. It contains carefully annotated ground truth data for various computer vision tasks related to drone-based image and video analysis.



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

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

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

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

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

التطبيقات

The VisDrone dataset is widely used for training and evaluating deep learning models in drone-based computer vision tasks such as object detection, object tracking, and crowd counting. The dataset's diverse set of sensor data, object annotations, and attributes make it a valuable resource for researchers and practitioners in the field of drone-based computer vision.

مجموعة البيانات 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

استخدام

To train a YOLO11n model on the VisDrone dataset for 100 epochs with an image size of 640, you can use the following code snippets. For a comprehensive list of available arguments, refer to the model Training page.

مثال القطار

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 على مجموعة متنوعة من الصور ومقاطع الفيديو التي تم التقاطها بواسطة كاميرات مثبتة على الطائرات بدون طيار. في ما يلي بعض الأمثلة على البيانات من مجموعة البيانات، إلى جانب التعليقات التوضيحية المقابلة لها:

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

  • Task 1: Object detection in images - This image demonstrates an example of object detection in images, where objects are annotated with bounding boxes. The dataset provides a wide variety of images taken from different locations, environments, and densities to facilitate the development of models for this task.

يعرض المثال تنوع وتعقيد البيانات في مجموعة بيانات 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}}

We would like to acknowledge the AISKYEYE team at the Lab of Machine Learning and Data Mining, Tianjin University, China, for creating and maintaining the VisDrone dataset as a valuable resource for the drone-based computer vision research community. For more information about the VisDrone dataset and its creators, visit the VisDrone Dataset GitHub repository.

الأسئلة المتداولة

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

The VisDrone Dataset is a large-scale benchmark created by the AISKYEYE team at Tianjin University, China. It is designed for various computer vision tasks related to drone-based image and video analysis. Key features include:

  • Composition: 288 video clips with 261,908 frames and 10,209 static images.
  • Annotations: Over 2.6 million bounding boxes for objects like pedestrians, cars, bicycles, and tricycles.
  • Diversity: Collected across 14 cities, in urban and rural settings, under different weather and lighting conditions.
  • Tasks: Split into five main tasks—object detection in images and videos, single-object and multi-object tracking, and crowd counting.

How can I use the VisDrone Dataset to train a YOLO11 model with Ultralytics?

To train a YOLO11 model on the VisDrone dataset for 100 epochs with an image size of 640, you can follow these steps:

مثال القطار

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 وتطبيقاتها؟

The VisDrone dataset is divided into five main subsets, each tailored for a specific computer vision task:

  1. Task 1: Object detection in images.
  2. Task 2: Object detection in videos.
  3. Task 3: Single-object tracking.
  4. Task 4: Multi-object tracking.
  5. Task 5: Crowd counting.

These subsets are widely used for training and evaluating deep learning models in drone-based applications such as surveillance, traffic monitoring, and public safety.

أين يمكنني العثور على ملف التكوين لمجموعة بيانات 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}
}
📅 Created 11 months ago ✏️ Updated 22 days ago

التعليقات