أمن جاهز للمؤسسات: متوافق مع ISO 27001 و SOC 2 Type I.
No license

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,551VOC2007 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/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 format

Link to this sectionالاستخدام#

تنزيل 2.8 جيجابايت

يتم تنزيل 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 للحصول على التفاصيل.

دفعة تدريب الفسيفساء لمجموعة بيانات Pascal VOC

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.

التعليقات