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