مجموعة بيانات VisDrone
مجموعة بيانات VisDrone هي معيار واسع النطاق تم إنشاؤه بواسطة فريق AISKYEYE في مختبر تعلم الآلة وتنقيب البيانات، في جامعة تيانجين، الصين. وهي تحتوي على بيانات حقيقة أساسية مُصنفة بعناية لمختلف مهام الرؤية الحاسوبية المتعلقة بتحليل الصور ومقاطع الفيديو الملتقطة بالطائرات بدون طيار.
Watch: How to Train Ultralytics YOLO26 on the VisDrone Dataset | Aerial Detection | Complete Tutorial 🚀
تتكون VisDrone من 288 مقطع فيديو تحتوي على 261,908 إطاراً و10,209 صورة ثابتة، تم التقاطها بواسطة كاميرات مثبتة على طائرات بدون طيار. تغطي مجموعة البيانات مجموعة واسعة من الجوانب، بما في ذلك الموقع (14 مدينة مختلفة عبر الصين)، والبيئة (حضرية وريفية)، والكائنات (المشاة، والمركبات، والدراجات، وما إلى ذلك)، والكثافة (المشاهد المتفرقة والمزدحمة). تم جمع مجموعة البيانات باستخدام منصات طائرات بدون طيار مختلفة في ظل سيناريوهات وظروف جوية وإضاءة متنوعة. تم تصنيف هذه الإطارات يدوياً بأكثر من 2.6 مليون مربع إحاطة لأهداف مثل المشاة، والسيارات، والدراجات، والدراجات ثلاثية العجلات. كما يتم توفير سمات مثل رؤية المشهد، وفئة الكائن، وحجب الكائنات لتحسين استخدام البيانات.
هيكل مجموعة البيانات
يتم تنظيم مجموعة بيانات VisDrone في خمس مجموعات فرعية رئيسية، تركز كل منها على مهمة محددة:
- المهمة 1: اكتشاف الكائنات في الصور
- المهمة 2: اكتشاف الكائنات في مقاطع الفيديو
- المهمة 3: تتبع كائن واحد
- المهمة 4: تتبع كائنات متعددة
- المهمة 5: عد الحشود
التطبيقات
تُستخدم مجموعة بيانات VisDrone على نطاق واسع لتدريب وتقييم نماذج التعلم العميق في مهام الرؤية الحاسوبية المستندة إلى الطائرات بدون طيار مثل اكتشاف الكائنات، وتتبع الكائنات، وعد الحشود. إن المجموعة المتنوعة من بيانات الاستشعار، وتصنيفات الكائنات، والسمات تجعل من هذه المجموعة مورداً قيماً للباحثين والممارسين في مجال الرؤية الحاسوبية المستندة إلى الطائرات بدون طيار.
ملف YAML الخاص بمجموعة البيانات
يُستخدم ملف YAML (لغة ترميز أخرى) لتحديد تكوين مجموعة البيانات. وهو يحتوي على معلومات حول مسارات مجموعة البيانات، والفئات، ومعلومات أخرى ذات صلة. في حالة مجموعة بيانات VisDrone، تتم صيانة ملف VisDrone.yaml على https://github.com/ultralytics/ultralytics/blob/main/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
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الاستخدام
لتدريب نموذج YOLO26n على مجموعة بيانات VisDrone لمدة 100 عصر بحجم صورة 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)عينة البيانات والشروحات
تحتوي مجموعة بيانات 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.
الأسئلة الشائعة
ما هي مجموعة بيانات VisDrone وما هي ميزاتها الرئيسية؟
مجموعة بيانات VisDrone هي معيار واسع النطاق تم إنشاؤه بواسطة فريق AISKYEYE في جامعة تيانجين، الصين. وهي مصممة لمختلف مهام الرؤية الحاسوبية المتعلقة بتحليل الصور ومقاطع الفيديو الملتقطة بالطائرات بدون طيار. تشمل الميزات الرئيسية ما يلي:
- التكوين: 288 مقطع فيديو تحتوي على 261,908 إطاراً و10,209 صورة ثابتة.
- التصنيفات: أكثر من 2.6 مليون مربع إحاطة لكائنات مثل المشاة، والسيارات، والدراجات، والدراجات ثلاثية العجلات.
- التنوع: تم جمعها عبر 14 مدينة، في بيئات حضرية وريفية، وفي ظل ظروف جوية وإضاءة مختلفة.
- المهام: مقسمة إلى خمس مهام رئيسية—اكتشاف الكائنات في الصور ومقاطع الفيديو، وتتبع كائن واحد وتتبع كائنات متعددة، وعد الحشود.
كيف يمكنني استخدام مجموعة بيانات VisDrone لتدريب نموذج YOLO26 مع Ultralytics؟
لتدريب نموذج YOLO26 على مجموعة بيانات VisDrone لمدة 100 عصر بحجم صورة 640، يمكنك اتباع الخطوات التالية:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n.pt")
# Train the model
results = model.train(data="VisDrone.yaml", epochs=100, imgsz=640)للحصول على خيارات تكوين إضافية، يرجى الرجوع إلى صفحة التدريب للنموذج.
ما هي المجموعات الفرعية الرئيسية لمجموعة بيانات VisDrone وتطبيقاتها؟
تنقسم مجموعة بيانات VisDrone إلى خمس مجموعات فرعية رئيسية، تم تصميم كل منها لمهمة محددة من مهام الرؤية الحاسوبية:
- المهمة 1: اكتشاف الكائنات في الصور.
- المهمة 2: اكتشاف الكائنات في مقاطع الفيديو.
- المهمة 3: تتبع كائن واحد.
- المهمة 4: تتبع كائنات متعددة.
- المهمة 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}
}