Link to this sectionمجموعة بيانات PASCAL VOC#
تعد مجموعة بيانات PASCAL VOC (فئات الكائنات المرئية) معياراً كلاسيكياً لـ اكتشاف الكائنات يحتوي على 20 فئة من الكائنات اليومية. يدمج ملف إعدادات Ultralytics VOC.yaml مجموعات التدريب والتحقق من VOC2007 و VOC2012 في مجموعة تدريب تضم 16,551 صورة، ويتم التحقق من صحتها على 4,952 صورة اختبار من VOC2007 متاحة للجمهور، ويقوم بتنزيل كل شيء تلقائياً (2.8 جيجابايت) عند الاستخدام الأول.
Watch: How to Train Ultralytics YOLO on the Pascal VOC Dataset | Object Detection | Computer Vision 🚀
أقيمت تحديات PASCAL VOC من عام 2005 إلى 2012 وشكلت الطريقة التي يتم بها تقييم نماذج اكتشاف الكائنات: يغطي المعيار مهام تصنيف الصور، والاكتشاف، والتقسيم، وقد جعل من متوسط دقة متوسط (mAP) مقياس الاكتشاف القياسي. يستخدم ملف إعدادات Ultralytics VOC.yaml تعليقات الاكتشاف التوضيحية، ويحول مربعات الإحاطة الأصلية بصيغة XML إلى تنسيق YOLO أثناء التنزيل.
Link to this sectionالميزات الرئيسية#
- 20 فئة من الكائنات اليومية: شخص؛ ستة حيوانات (طائر، قطة، بقرة، كلب، حصان، خروف)؛ سبع مركبات (طائرة، دراجة، قارب، حافلة، سيارة، دراجة نارية، قطار)؛ وستة كائنات داخلية (زجاجة، كرسي، طاولة طعام، نبات محفوظ في أصيص، أريكة، شاشة تلفاز).
- دمج جيلين من التحديات: يدمج التدريب مجموعة تدريب وتحقق VOC2007 (5,011 صورة) مع مجموعة تدريب وتحقق VOC2012 (11,540 صورة).
- التقييم الموحد: تجعل عقود من خطوط الأساس VOC المنشورة منها نقطة مرجعية مريحة لمقارنة نماذج الاكتشاف.
- جاهزة لـ YOLO: يقوم برنامج نصي للتنزيل بجلب الأرشيفات وتحويل التعليقات التوضيحية تلقائياً — دون الحاجة إلى تحضير يدوي.
Link to this sectionهيكل مجموعة البيانات#
يعرف ملف إعدادات Ultralytics VOC.yaml التقسيمات التالية:
| التقسيم (Split) | الصور | المصدر |
|---|---|---|
| التدريب | 16,551 | VOC2007 trainval (5,011) + VOC2012 trainval (11,540) |
| التحقق | 4,952 | اختبار VOC2007، يستخدم لـ التقييم أثناء التدريب |
| الاختبار (Test) | 4,952 | نفس صور اختبار VOC2007 — لا يحدد التكوين أي تقسيم منفصل للمصادقة |
تم إصدار تعليقات اختبار VOC2007 التوضيحية علناً بعد تحدي ذلك العام، وهو ما يسمح لهذا التقسيم بالعمل كمجموعة تحقق مصنفة. تظل تعليقات اختبار VOC2012 التوضيحية محجوبة — لا يمكن تسجيل النتائج عليها إلا من خلال خادم تقييم PASCAL الرسمي — لذا فهي ليست جزءاً من هذا التكوين.
يقوم المحول التلقائي بتخطي الكائنات التي تم وضع علامة difficult عليها في ملفات تعليقات VOC XML الأصلية، لذا تختلف أعداد النسخ لكل فئة قليلاً عن إحصائيات VOC الرسمية.
استكشف VOC على منصة Ultralytics لتصفح الصور مع تراكبات تعليقاتها التوضيحية، وعرض توزيع الفئات والخرائط الحرارية لمربعات الإحاطة في علامة التبويب Charts، ونسخها لتدريب نموذجك الخاص في السحابة.
Link to this sectionالتطبيقات#
كان PASCAL VOC المعيار الرئيسي لأبحاث اكتشاف الكائنات في السنوات التي سبقت مجموعة بيانات COCO الأكبر: حيث أبلغت كواشف مثل Faster R-CNN و SSD عن نتائجها الأصلية عليها، وتتدرب نماذج Ultralytics YOLO عليها مباشرة. لا تزال اليوم شائعة من أجل:
- قياس أداء بنيات الاكتشاف الجديدة مقابل تاريخ طويل من خطوط الأساس المنشورة
- التجارب السريعة والدورات الدراسية — مع 16,551 صورة تدريب، فإن التدريب أسرع بكثير من COCO
- دراسات التعلم بنقل المعرفة على مجموعة مدمجة ومفهومة جيداً من الكائنات اليومية
Link to this sectionYAML مجموعة البيانات#
يحدد ملف VOC.yaml إعدادات مجموعة البيانات — مسارات مجموعة البيانات، وأسماء الفئات العشرين، وبرنامج التنزيل والتحويل التلقائي. تتم صيانته في مستودع Ultralytics على https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/VOC.yaml.
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# PASCAL VOC dataset http://host.robots.ox.ac.uk/pascal/VOC by University of Oxford
# Documentation: https://docs.ultralytics.com/datasets/detect/voc
# Example usage: yolo train data=VOC.yaml
# parent
# ├── ultralytics
# └── datasets
# └── VOC ← downloads here (2.8 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: VOC
train: # train images (relative to 'path') 16551 images
- images/train2012
- images/train2007
- images/val2012
- images/val2007
val: # val images (relative to 'path') 4952 images
- images/test2007
test: # test images (optional)
- images/test2007
# Classes
names:
0: aeroplane
1: bicycle
2: bird
3: boat
4: bottle
5: bus
6: car
7: cat
8: chair
9: cow
10: diningtable
11: dog
12: horse
13: motorbike
14: person
15: pottedplant
16: sheep
17: sofa
18: train
19: tvmonitor
# Download script/URL (optional) ---------------------------------------------------------------------------------------
download: |
import xml.etree.ElementTree as ET
from pathlib import Path
from ultralytics.utils.downloads import download
from ultralytics.utils import ASSETS_URL, TQDM
def convert_label(path, lb_path, year, image_id):
"""Converts XML annotations from VOC format to YOLO format by extracting bounding boxes and class IDs."""
def convert_box(size, box):
dw, dh = 1.0 / size[0], 1.0 / size[1]
x, y, w, h = (box[0] + box[1]) / 2.0 - 1, (box[2] + box[3]) / 2.0 - 1, box[1] - box[0], box[3] - box[2]
return x * dw, y * dh, w * dw, h * dh
with open(path / f"VOC{year}/Annotations/{image_id}.xml") as in_file, open(lb_path, "w", encoding="utf-8") as out_file:
tree = ET.parse(in_file)
root = tree.getroot()
size = root.find("size")
w = int(size.find("width").text)
h = int(size.find("height").text)
names = list(yaml["names"].values()) # names list
for obj in root.iter("object"):
cls = obj.find("name").text
if cls in names and int(obj.find("difficult").text) != 1:
xmlbox = obj.find("bndbox")
bb = convert_box((w, h), [float(xmlbox.find(x).text) for x in ("xmin", "xmax", "ymin", "ymax")])
cls_id = names.index(cls) # class id
out_file.write(" ".join(str(a) for a in (cls_id, *bb)) + "\n")
# Download
dir = Path(yaml["path"]) # dataset root dir
urls = [
f"{ASSETS_URL}/VOCtrainval_06-Nov-2007.zip", # 446MB, 5011 images
f"{ASSETS_URL}/VOCtest_06-Nov-2007.zip", # 438MB, 4952 images
f"{ASSETS_URL}/VOCtrainval_11-May-2012.zip", # 1.95GB, 17125 images
]
download(urls, dir=dir / "images", threads=3, exist_ok=True) # download and unzip over existing (required)
# Convert
path = dir / "images/VOCdevkit"
for year, image_set in ("2012", "train"), ("2012", "val"), ("2007", "train"), ("2007", "val"), ("2007", "test"):
imgs_path = dir / "images" / f"{image_set}{year}"
lbs_path = dir / "labels" / f"{image_set}{year}"
imgs_path.mkdir(exist_ok=True, parents=True)
lbs_path.mkdir(exist_ok=True, parents=True)
with open(path / f"VOC{year}/ImageSets/Main/{image_set}.txt") as f:
image_ids = f.read().strip().split()
for id in TQDM(image_ids, desc=f"{image_set}{year}"):
f = path / f"VOC{year}/JPEGImages/{id}.jpg" # old img path
lb_path = (lbs_path / f.name).with_suffix(".txt") # new label path
f.rename(imgs_path / f.name) # move image
convert_label(path, lb_path, year, id) # convert labels to YOLO formatLink to this sectionالاستخدام#
يتم تنزيل VOC تلقائياً في المرة الأولى التي تقوم فيها بالتدريب — ثلاثة أرشيفات بإجمالي 2.8 جيجابايت — ويحتاج إلى حوالي 6 جيجابايت من مساحة القرص الفارغة أثناء الاستخراج والتحويل.
لتدريب نموذج YOLO26n على مجموعة بيانات VOC لمدة 100 عصر بحجم صورة 640، يمكنك استخدام مقتطفات التعليمات البرمجية التالية. للحصول على قائمة شاملة بالوسائط المتاحة، راجع صفحة التدريب الخاصة بالنموذج.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model - dataset will auto-download on first run
results = model.train(data="VOC.yaml", epochs=100, imgsz=640)Link to this sectionصور وشروحات توضيحية عينة#
تظهر الصورة أدناه دفعة تدريب مجمعة من مجموعة بيانات VOC. يجمع التجميع بين صور متعددة في عينة تدريب واحدة، مما يزيد من تنوع الكائنات والمقاييس وسياقات المشهد التي يراها النموذج في كل دفعة — راجع دليل تعزيز بيانات YOLO للحصول على التفاصيل.

Link to this sectionالاقتباسات والشكر#
إذا كنت تستخدم مجموعة بيانات VOC في أبحاثك أو عملك التطويري، فيرجى الاستشهاد بالورقة البحثية التالية:
@article{everingham2010pascal,
author={Everingham, Mark and Van Gool, Luc and Williams, Christopher K. I. and Winn, John and Zisserman, Andrew},
journal={International Journal of Computer Vision},
title={The Pascal Visual Object Classes (VOC) Challenge},
year={2010},
volume={88},
number={2},
pages={303-338},
doi={10.1007/s11263-009-0275-4}}نود أن نشكر اتحاد PASCAL VOC على إنشاء هذا المورد القيم لمجتمع رؤية الكمبيوتر والحفاظ عليه. لمزيد من المعلومات حول مجموعة بيانات VOC ومبتكريها، تفضل بزيارة موقع مجموعة بيانات PASCAL VOC.
Link to this sectionالأسئلة الشائعة#
Link to this sectionما هو استخدام مجموعة بيانات PASCAL VOC؟#
يُستخدم PASCAL VOC لتدريب وقياس نماذج اكتشاف الكائنات على 20 فئة من الكائنات اليومية مثل الشخص، والسيارة، والكلب، والكرسي. ولأنه مدمج، ومصنف بالكامل، ومدعوم بسنوات من خطوط الأساس المنشورة، فهو خيار شائع للتحقق من البنيات الجديدة، وإجراء تجارب الدورات الدراسية، ودراسات التعلم بنقل المعرفة السريعة.
Link to this sectionكم عدد الصور الموجودة في مجموعة بيانات PASCAL VOC؟#
يحتوي إعداد Ultralytics VOC على 21,503 صورة: 16,551 للتدريب (VOC2007 trainval + VOC2012 trainval) و 4,952 للتحقق (مجموعة اختبار VOC2007). تشترك جميع التقسيمات في نفس الفئات العشرين. انظر هيكل مجموعة البيانات للحصول على التفاصيل الكاملة.
Link to this sectionكيف أقوم بتنزيل مجموعة بيانات PASCAL VOC؟#
يتم تنزيل VOC تلقائياً في المرة الأولى التي تقوم فيها بالتدريب باستخدام data="VOC.yaml" — لا تتطلب خطوات يدوية. يجلب البرنامج النصي ثلاثة أرشيفات (2.8 جيجابايت) من أصول إصدار Ultralytics GitHub ويحول تعليقات XML التوضيحية إلى تنسيق YOLO.
Link to this sectionكيف أقوم بتدريب نموذج YOLO26 على مجموعة بيانات VOC؟#
تدريب نموذج YOLO26n على VOC لمدة 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="VOC.yaml", epochs=100, imgsz=640)للحصول على إعدادات مفصلة، راجع صفحة Training وmodel training tips.
Link to this sectionما الفرق بين VOC2007 و VOC2012؟#
يشترك كلا التحديين في نفس الفئات العشرين ولكنهما يساهمان بصور مختلفة. يوفر VOC2007 عدد 5,011 صورة trainval بالإضافة إلى مجموعة اختبار من 4,952 صورة تعليقاتها التوضيحية عامة؛ يوفر VOC2012 عدد 11,540 صورة trainval، بينما تظل تعليقات اختباره التوضيحية محجوبة ولا يتم تسجيلها إلا من خلال خادم التقييم الرسمي. يدمج ملف Ultralytics VOC.yaml كلتا مجموعتي trainval للتدريب ويتحقق من صحتها في اختبار VOC2007.
Link to this sectionكيف يقارن PASCAL VOC بمجموعة بيانات COCO؟#
VOC أصغر وأبسط: 20 فئة و 21,503 صورة مقابل 80 فئة و 330 ألف صورة لـ COCO. يتم الإبلاغ عن نتائج VOC تقليدياً كـ mAP عند 0.5 IoU، بينما تحسب COCO متوسط mAP عبر عتبات IoU من 0.5 إلى 0.95. يتدرب VOC بشكل أسرع بكثير ويناسب التجارب السريعة؛ وتعد مجموعة بيانات COCO هي المعيار لقياس الأداء على نطاق الإنتاج.
Link to this sectionهل يمكنني تدريب نماذج التقسيم باستخدام VOC.yaml؟#
لا — VOC.yaml هو تكوين للاكتشاف فقط: يقوم محوله باستخراج مربعات الإحاطة من تعليقات VOC XML التوضيحية، ولا يتم تحويل أقنعة التقسيم المضمنة في المعيار الأصلي. لتدريب نموذج تقسيم المثيلات، استخدم مجموعة بيانات ذات تسميات مضلعة مثل COCO-Seg مع نموذج yolo26n-seg.pt.