تخطي إلى المحتوى

مجموعة بيانات المركبات العضوية المتطايرة

إن مجموعة بيانات PASCAL VOC (فئات الكائنات المرئية) هي مجموعة بيانات معروفة للكشف عن الكائنات وتجزئتها وتصنيفها. وهي مصممة لتشجيع البحث في مجموعة واسعة من فئات الكائنات وتستخدم عادةً لقياس نماذج الرؤية الحاسوبية. إنها مجموعة بيانات أساسية للباحثين والمطورين الذين يعملون على مهام اكتشاف الكائنات وتجزئتها وتصنيفها.

الميزات الرئيسية

  • تتضمن مجموعة بيانات المركبات العضوية المتطايرة تحديين رئيسيين: VOC2007 و VOC2012.
  • تضم مجموعة البيانات 20 فئة من الأشياء، بما في ذلك الأشياء الشائعة مثل السيارات والدراجات والحيوانات، بالإضافة إلى فئات أكثر تحديداً مثل القوارب والأرائك وطاولات الطعام.
  • تتضمن التعليقات التوضيحية مربعات تحديد الكائنات وتسميات الفئات لمهام اكتشاف الكائنات وتصنيفها، وأقنعة التجزئة لمهام التجزئة.
  • توفر VOC مقاييس تقييم موحدة مثل متوسط متوسط الدقة (mAP) لاكتشاف الكائنات وتصنيفها، مما يجعلها مناسبة لمقارنة أداء النموذج.

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

تنقسم مجموعة بيانات المركبات العضوية المتطايرة إلى ثلاث مجموعات فرعية:

  1. تدريب: تحتوي هذه المجموعة الفرعية على صور لتدريب نماذج اكتشاف الأجسام وتجزئتها وتصنيفها.
  2. التحقق من الصحة: تحتوي هذه المجموعة الفرعية على صور مستخدمة لأغراض التحقق من الصحة أثناء تدريب النموذج.
  3. اختبار: تتكون هذه المجموعة الفرعية من الصور المستخدمة لاختبار النماذج المدرّبة وقياس أدائها. التعليقات التوضيحية الأساسية لهذه المجموعة الفرعية غير متاحة للجمهور، ويتم إرسال النتائج إلى خادم تقييم PASCAL VOC لتقييم الأداء.

التطبيقات

تُستخدم مجموعة بيانات VOC على نطاق واسع لتدريب وتقييم نماذج التعلّم العميق في اكتشاف الكائنات (مثل YOLO ، وFaster R-CNN، وSSD)، وتجزئة النماذج (مثل Mask R-CNN)، وتصنيف الصور. إن المجموعة المتنوعة من فئات الكائنات في مجموعة البيانات، والعدد الكبير من الصور المشروحة، ومقاييس التقييم الموحدة تجعلها موردًا أساسيًا للباحثين والممارسين في مجال الرؤية الحاسوبية.

مجموعة البيانات YAML

يُستخدم ملف YAML (لغة ترميز أخرى) لتحديد تكوين مجموعة البيانات. وهو يحتوي على معلومات حول مسارات مجموعة البيانات وفئاتها والمعلومات الأخرى ذات الصلة. في حالة مجموعة بيانات المركبات العضوية المتطايرة، فإن ملف VOC.yaml يتم الاحتفاظ بالملف في https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/VOC.yaml.

ultralytics/cfg/datasets/VOC.yaml

# Ultralytics YOLO 🚀, AGPL-3.0 license
# PASCAL VOC dataset http://host.robots.ox.ac.uk/pascal/VOC by University of Oxford
# Documentation: # 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: ../datasets/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 tqdm import tqdm
  from ultralytics.utils.downloads import download
  from pathlib import Path

  def convert_label(path, lb_path, year, image_id):
      def convert_box(size, box):
          dw, dh = 1. / size[0], 1. / 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

      in_file = open(path / f'VOC{year}/Annotations/{image_id}.xml')
      out_file = open(lb_path, 'w')
      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
  url = 'https://github.com/ultralytics/assets/releases/download/v0.0.0/'
  urls = [f'{url}VOCtrainval_06-Nov-2007.zip',  # 446MB, 5012 images
          f'{url}VOCtest_06-Nov-2007.zip',  # 438MB, 4953 images
          f'{url}VOCtrainval_11-May-2012.zip']  # 1.95GB, 17126 images
  download(urls, dir=dir / 'images', curl=True, threads=3, exist_ok=True)  # download and unzip over existing paths (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

الاستخدام

لتدريب نموذج YOLO11n على مجموعة بيانات المركبات العضوية المتطايرة لـ 100 حلقة تدريبية بحجم صورة 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="VOC.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=VOC.yaml model=yolo11n.pt epochs=100 imgsz=640

عينة من الصور والتعليقات التوضيحية

تحتوي مجموعة بيانات VOC على مجموعة متنوعة من الصور ذات فئات مختلفة من الكائنات والمشاهد المعقدة. فيما يلي بعض الأمثلة لصور من مجموعة البيانات، إلى جانب التعليقات التوضيحية المقابلة لها:

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

  • صورة فسيفساء: توضح هذه الصورة دفعة تدريب مكونة من صور مجموعة بيانات موزاييك. الفسيفساء هي تقنية تُستخدم أثناء التدريب تدمج صورًا متعددة في صورة واحدة لزيادة تنوع الأجسام والمشاهد داخل كل دفعة تدريب. يساعد ذلك في تحسين قدرة النموذج على التعميم على أحجام الأجسام المختلفة ونسب أبعادها وسياقاتها.

يعرض المثال تنوع وتعقيد الصور في مجموعة بيانات المركبات العضوية المتطايرة وفوائد استخدام الفسيفساء أثناء عملية التدريب.

الاستشهادات والشكر والتقدير

إذا كنت تستخدم مجموعة بيانات المركبات العضوية المتطايرة في أعمالك البحثية أو التطويرية، يُرجى الاستشهاد بالورقة التالية:

@misc{everingham2010pascal,
      title={The PASCAL Visual Object Classes (VOC) Challenge},
      author={Mark Everingham and Luc Van Gool and Christopher K. I. Williams and John Winn and Andrew Zisserman},
      year={2010},
      eprint={0909.5206},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

نودّ أن نعرب عن تقديرنا لاتحاد PASCAL VOC لإنشاء هذا المورد القيّم لمجتمع الرؤية الحاسوبية والحفاظ عليه. لمزيد من المعلومات حول مجموعة بيانات VOC ومنشئيها، يرجى زيارة الموقع الإلكتروني لمجموعة بيانات PASCAL VOC.

الأسئلة الشائعة

ما هي مجموعة بيانات PASCAL VOC ولماذا هي مهمة لمهام الرؤية الحاسوبية؟

تُعد مجموعة بيانات PASCAL VOC (فئات الكائنات المرئية) معيارًا مشهورًا لاكتشاف الكائنات وتجزئتها وتصنيفها في مجال الرؤية الحاسوبية. وهي تتضمن شروحًا شاملة مثل المربعات المحيطة، وتسميات الفئات، وأقنعة التجزئة عبر 20 فئة مختلفة من فئات الكائنات. ويستخدمها الباحثون على نطاق واسع لتقييم أداء نماذج مثل Faster R-CNN و YOLO و Mask R-CNN نظرًا لمقاييس التقييم الموحدة الخاصة بها مثل متوسط متوسط الدقة (mAP).

كيف يمكنني تدريب نموذج YOLO11 باستخدام مجموعة بيانات المركبات العضوية المتطايرة؟

لتدريب نموذج YOLO11 باستخدام مجموعة بيانات VOC، تحتاج إلى تكوين مجموعة البيانات في ملف YAML. فيما يلي مثال لبدء تدريب نموذج YOLO11n لـ 100 حقبة زمنية بحجم صورة 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="VOC.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=VOC.yaml model=yolo11n.pt epochs=100 imgsz=640

ما هي التحديات الرئيسية التي تتضمنها مجموعة بيانات المركبات العضوية المتطايرة؟

تتضمن مجموعة بيانات المركبات العضوية المتطايرة تحديين رئيسيين: VOC2007 و VOC2012. تختبر هذه التحديات اكتشاف الكائنات وتجزئتها وتصنيفها عبر 20 فئة متنوعة من الكائنات. كل صورة مشروحة بدقة مع المربعات المحددة وتسميات الفئات وأقنعة التجزئة. توفر هذه التحديات مقاييس موحدة مثل mAP، مما يسهل المقارنة بين نماذج الرؤية الحاسوبية المختلفة وقياسها.

كيف تعزز مجموعة بيانات PASCAL VOC قياس وتقييم النماذج؟

تُحسِّن مجموعة بيانات PASCAL VOC من قياس أداء النماذج وتقييمها من خلال شروحها التفصيلية ومقاييسها الموحدة مثل متوسط الدقة (mAP). تُعد هذه المقاييس ضرورية لتقييم أداء نماذج اكتشاف الأجسام وتصنيفها. تضمن الصور المتنوعة والمعقدة لمجموعة البيانات إجراء تقييم شامل للنموذج عبر سيناريوهات مختلفة في العالم الحقيقي.

كيف يمكنني استخدام مجموعة بيانات المركبات العضوية المتطايرة للتجزئة الدلالية في نماذج YOLO ؟

لاستخدام مجموعة بيانات VOC لمهام التجزئة الدلالية مع نماذج YOLO ، تحتاج إلى تكوين مجموعة البيانات بشكل صحيح في ملف YAML. يحدد ملف YAML المسارات والفئات اللازمة لتدريب نماذج التجزئة. راجع ملف تكوين YAML الخاص بمجموعة بيانات VOC على VOC.yaml للاطلاع على الإعدادات التفصيلية.

📅 تم إنشاؤها منذ 1 سنة مضت ✏️ تم التحديث منذ 2 شهر

التعليقات