مجموعة بيانات المركبات العضوية المتطايرة
إن مجموعة بيانات PASCAL VOC (فئات الكائنات المرئية) هي مجموعة بيانات معروفة للكشف عن الكائنات وتجزئتها وتصنيفها. وهي مصممة لتشجيع البحث في مجموعة واسعة من فئات الكائنات وتستخدم عادةً لقياس نماذج الرؤية الحاسوبية. إنها مجموعة بيانات أساسية للباحثين والمطورين الذين يعملون على مهام اكتشاف الكائنات وتجزئتها وتصنيفها.
الميزات الرئيسية
- تتضمن مجموعة بيانات المركبات العضوية المتطايرة تحديين رئيسيين: VOC2007 و VOC2012.
- تضم مجموعة البيانات 20 فئة من الأشياء، بما في ذلك الأشياء الشائعة مثل السيارات والدراجات والحيوانات، بالإضافة إلى فئات أكثر تحديداً مثل القوارب والأرائك وطاولات الطعام.
- تتضمن التعليقات التوضيحية مربعات تحديد الكائنات وتسميات الفئات لمهام اكتشاف الكائنات وتصنيفها، وأقنعة التجزئة لمهام التجزئة.
- توفر VOC مقاييس تقييم موحدة مثل متوسط متوسط الدقة (mAP) لاكتشاف الكائنات وتصنيفها، مما يجعلها مناسبة لمقارنة أداء النموذج.
هيكلية مجموعة البيانات
تنقسم مجموعة بيانات المركبات العضوية المتطايرة إلى ثلاث مجموعات فرعية:
- تدريب: تحتوي هذه المجموعة الفرعية على صور لتدريب نماذج اكتشاف الأجسام وتجزئتها وتصنيفها.
- التحقق من الصحة: تحتوي هذه المجموعة الفرعية على صور مستخدمة لأغراض التحقق من الصحة أثناء تدريب النموذج.
- اختبار: تتكون هذه المجموعة الفرعية من الصور المستخدمة لاختبار النماذج المدرّبة وقياس أدائها. التعليقات التوضيحية الأساسية لهذه المجموعة الفرعية غير متاحة للجمهور، ويتم إرسال النتائج إلى خادم تقييم 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، يمكنك استخدام مقتطفات التعليمات البرمجية التالية. للحصول على قائمة شاملة بالوسائط المتاحة، راجع صفحة تدريب النموذج.
مثال على القطار
عينة من الصور والتعليقات التوضيحية
تحتوي مجموعة بيانات VOC على مجموعة متنوعة من الصور ذات فئات مختلفة من الكائنات والمشاهد المعقدة. فيما يلي بعض الأمثلة لصور من مجموعة البيانات، إلى جانب التعليقات التوضيحية المقابلة لها:
- صورة فسيفساء: توضح هذه الصورة دفعة تدريب مكونة من صور مجموعة بيانات موزاييك. الفسيفساء هي تقنية تُستخدم أثناء التدريب تدمج صورًا متعددة في صورة واحدة لزيادة تنوع الأجسام والمشاهد داخل كل دفعة تدريب. يساعد ذلك في تحسين قدرة النموذج على التعميم على أحجام الأجسام المختلفة ونسب أبعادها وسياقاتها.
يعرض المثال تنوع وتعقيد الصور في مجموعة بيانات المركبات العضوية المتطايرة وفوائد استخدام الفسيفساء أثناء عملية التدريب.
الاستشهادات والشكر والتقدير
إذا كنت تستخدم مجموعة بيانات المركبات العضوية المتطايرة في أعمالك البحثية أو التطويرية، يُرجى الاستشهاد بالورقة التالية:
نودّ أن نعرب عن تقديرنا لاتحاد 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:
مثال على القطار
ما هي التحديات الرئيسية التي تتضمنها مجموعة بيانات المركبات العضوية المتطايرة؟
تتضمن مجموعة بيانات المركبات العضوية المتطايرة تحديين رئيسيين: VOC2007 و VOC2012. تختبر هذه التحديات اكتشاف الكائنات وتجزئتها وتصنيفها عبر 20 فئة متنوعة من الكائنات. كل صورة مشروحة بدقة مع المربعات المحددة وتسميات الفئات وأقنعة التجزئة. توفر هذه التحديات مقاييس موحدة مثل mAP، مما يسهل المقارنة بين نماذج الرؤية الحاسوبية المختلفة وقياسها.
كيف تعزز مجموعة بيانات PASCAL VOC قياس وتقييم النماذج؟
تُحسِّن مجموعة بيانات PASCAL VOC من قياس أداء النماذج وتقييمها من خلال شروحها التفصيلية ومقاييسها الموحدة مثل متوسط الدقة (mAP). تُعد هذه المقاييس ضرورية لتقييم أداء نماذج اكتشاف الأجسام وتصنيفها. تضمن الصور المتنوعة والمعقدة لمجموعة البيانات إجراء تقييم شامل للنموذج عبر سيناريوهات مختلفة في العالم الحقيقي.
كيف يمكنني استخدام مجموعة بيانات المركبات العضوية المتطايرة للتجزئة الدلالية في نماذج YOLO ؟
لاستخدام مجموعة بيانات VOC لمهام التجزئة الدلالية مع نماذج YOLO ، تحتاج إلى تكوين مجموعة البيانات بشكل صحيح في ملف YAML. يحدد ملف YAML المسارات والفئات اللازمة لتدريب نماذج التجزئة. راجع ملف تكوين YAML الخاص بمجموعة بيانات VOC على VOC.yaml للاطلاع على الإعدادات التفصيلية.