PASCAL VOC Veri Kümesi#
PASCAL VOC (Visual Object Classes) veri seti, 20 günlük nesne sınıfıyla klasik bir nesne tespiti kıyaslama testidir. Ultralytics VOC.yaml yapılandırması, VOC2007 ve VOC2012 trainval bölümlerini 16.551 görüntülük bir eğitim setinde birleştirir, genel olarak etiketlenmiş 4.952 VOC2007 test görüntüsü üzerinde doğrulama yapar ve ilk kullanımda her şeyi otomatik olarak (2.8 GB) indirir.
Watch: How to Train Ultralytics YOLO on the Pascal VOC Dataset | Object Detection | Computer Vision 🚀
PASCAL VOC yarışmaları 2005'ten 2012'ye kadar düzenlenmiş ve nesne tespiti modellerinin nasıl değerlendirildiğini şekillendirmiştir: kıyaslama testi görüntü sınıflandırma, tespit ve segmentasyon görevlerini kapsar ve standart tespit metriği olarak ortalama Ortalama Kesinlik (mAP) değerini popüler hale getirmiştir. Ultralytics VOC.yaml yapılandırması tespit etiketlemelerini kullanır ve indirme sırasında orijinal XML sınırlayıcı kutularını YOLO formatına dönüştürür.
Temel Özellikler#
- 20 günlük nesne sınıfı: kişi; altı hayvan (kuş, kedi, inek, köpek, at, koyun); yedi araç (uçak, bisiklet, tekne, otobüs, araba, motosiklet, tren); ve altı iç mekan nesnesi (şişe, sandalye, yemek masası, saksı bitkisi, kanepe, televizyon).
- İki yarışma nesli birleştirildi: eğitim, VOC2007 trainval (5.011 görüntü) ile VOC2012 trainval (11.540 görüntü) kümesini birleştirir.
- Standartlaştırılmış değerlendirme: onlarca yıllık yayınlanmış VOC temel değerleri, algılama modellerini karşılaştırmak için onu uygun bir referans noktası haline getirir.
- YOLO'ya hazır: indirme betiği arşivleri çeker ve açıklamaları otomatik olarak dönüştürür — manuel hazırlık gerektirmez.
Veri Kümesi Yapısı#
Ultralytics VOC.yaml yapılandırması aşağıdaki bölümleri tanımlar:
| Bölüm | Görüntüler | Kaynak |
|---|---|---|
| Eğit (Train) | 16.551 | VOC2007 trainval (5.011) + VOC2012 trainval (11.540) |
| Doğrulama | 4.952 | Eğitim sırasında değerlendirme için kullanılan VOC2007 test seti |
| Test | 4.952 | Aynı VOC2007 test görüntüleri — yapılandırma ayrı bir ayrılmış bölüm tanımlamaz |
VOC2007 test açıklamaları, o yılın yarışmasından sonra halka açık olarak yayınlanmıştır ve bu durum bu bölümün etiketli bir doğrulama seti olarak işlev görmesine olanak tanır. VOC2012 test açıklamaları gizli tutulmaktadır — sonuçlar yalnızca resmi PASCAL değerlendirme sunucusu aracılığıyla puanlanabilir — bu nedenle bu yapılandırmanın bir parçası değillerdir.
Otomatik dönüştürücü, orijinal VOC XML etiketlerinde difficult olarak işaretlenen nesneleri atlar, bu nedenle sınıfa göre örnek sayıları resmi VOC istatistiklerinden biraz farklılık gösterir.
Görüntüleri etiket katmanlarıyla incelemek, Charts (Grafikler) sekmesinde sınıf dağılımını ve sınırlayıcı kutu ısı haritalarını görmek ve bulutta kendi modelini eğitmek için kopyalamak üzere Ultralytics Platform üzerinde VOC seçeneğini keşfet.
Uygulamalar#
PASCAL VOC, daha büyük olan COCO veri seti ortaya çıkmadan önceki yıllarda nesne tespiti araştırmaları için birincil kıyaslama testiydi: Faster R-CNN ve SSD gibi dedektörler orijinal sonuçlarını bu veri seti üzerinde raporlamıştır ve Ultralytics YOLO modelleri bu veri seti üzerinde kutudan çıktığı gibi eğitilebilir. Günümüzde şu alanlarda popülerliğini korumaktadır:
- Yeni algılama mimarilerini uzun bir yayınlanmış temel değerler geçmişiyle kıyaslamak
- Hızlı deneyler ve ders çalışmaları — 16.551 eğitim görüntüsü ile COCO'dan çok daha hızlı eğitilir
- Kompakt, iyi anlaşılmış bir günlük sınıf kümesi üzerinde aktarımlı öğrenme çalışmaları
Veri Kümesi YAML#
VOC.yaml dosyası veri seti yapılandırmasını tanımlar; veri seti yolları, 20 sınıf adı ve otomatik indirme ve dönüştürme betiği. Bu dosya https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/VOC.yaml adresindeki Ultralytics deposunda barındırılmaktadır.
# 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 formatKullanım#
VOC, ilk eğitiminde otomatik olarak indirilir — toplam 2.8 GB olan üç arşiv — ve çıkarma ve dönüştürme sırasında yaklaşık 6 GB boş disk alanına ihtiyaç duyar.
VOC veri seti üzerinde 640 görüntü boyutuyla 100 dönem (epoch) boyunca bir YOLO26n modeli eğitmek için aşağıdaki kod parçacıklarını kullanabilirsin. Mevcut argümanların kapsamlı bir listesi için model Eğitimi sayfasına göz at.
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)Örnek Görüntüler ve Ek Açıklamalar#
Aşağıdaki görüntü, VOC veri setinden mozaiklenmiş bir eğitim grubunu göstermektedir. Mozaikleme, birden fazla görüntüyü tek bir eğitim örneğinde birleştirerek modelin her grupta gördüğü nesnelerin, ölçeklerin ve sahne bağlamlarının çeşitliliğini artırır; ayrıntılar için YOLO veri artırma kılavuzu sayfasına bak.

Alıntılar ve Teşekkür#
VOC veri kümesini araştırma veya geliştirme çalışmalarında kullanırsan, lütfen aşağıdaki makaleye atıfta bulun:
@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}}bilgisayarlı görü topluluğu için bu değerli kaynağı oluşturdukları ve sürdürdükleri için PASCAL VOC Konsorsiyumu'na teşekkür ederiz. VOC veri seti ve yaratıcıları hakkında daha fazla bilgi edinmek için PASCAL VOC veri seti web sitesi adresini ziyaret et.
SSS#
PASCAL VOC veri kümesi ne için kullanılır?#
PASCAL VOC; insan, araba, köpek ve sandalye gibi 20 günlük nesne sınıfı üzerinde nesne tespiti modellerini eğitmek ve kıyaslamak için kullanılır. Kompakt, tamamen etiketlenmiş ve yıllara dayanan yayınlanmış taban çizgileriyle desteklenmiş olduğundan yeni mimarileri doğrulamak, ders ödevi deneyleri çalıştırmak ve hızlı aktarımlı öğrenme çalışmaları yapmak için yaygın bir tercihtir.
PASCAL VOC veri kümesinde kaç görüntü var?#
Ultralytics VOC yapılandırması 21.503 görüntü içerir: eğitim için 16.551 (VOC2007 trainval + VOC2012 trainval) ve doğrulama için 4.952 (VOC2007 test seti). Tüm bölümler aynı 20 sınıfı paylaşır. Tam döküm için Veri Seti Yapısı sayfasına bak.
PASCAL VOC veri kümesini nasıl indirebilirim?#
data="VOC.yaml" kullanarak ilk defa eğitim yaptığında VOC otomatik olarak indirilir, manuel bir adım gerekmez. Betik, Ultralytics GitHub sürüm varlıklarından üç arşivi (2.8 GB) alır ve XML etiketlerini YOLO formatına dönüştürür.
VOC veri kümesinde bir YOLO26 modelini nasıl eğitebilirim?#
VOC üzerinde 640 görüntü boyutunda 100 epoch boyunca bir YOLO26n modeli eğit:
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)Ayrıntılı yapılandırmalar için Eğitim sayfasına ve model eğitimi ipuçları bölümüne göz at.
VOC2007 ve VOC2012 arasındaki fark nedir?#
Her iki yarışma da aynı 20 sınıfı paylaşır ancak farklı görüntüler sağlar. VOC2007, 5.011 trainval görüntüsü ve etiketleri halka açık olan 4.952 görüntülük bir test seti sunar; VOC2012 ise 11.540 trainval görüntüsü sağlar, test etiketleri ise gizli tutulur ve yalnızca resmi değerlendirme sunucusu tarafından puanlanır. Ultralytics VOC.yaml her iki trainval setini eğitim için birleştirir ve VOC2007 test seti üzerinde doğrulama yapar.
PASCAL VOC, COCO veri kümesi ile nasıl karşılaştırılır?#
VOC daha küçük ve daha basittir: COCO'nun 80 sınıfına ve 330 bin görüntüsüne karşılık 20 sınıf ve 21.503 görüntü içerir. VOC sonuçları geleneksel olarak 0.5 IoU değerinde mAP olarak rapor edilirken, COCO 0.5 ile 0.95 arasındaki IoU eşikleri üzerinden mAP ortalamasını alır. VOC çok daha hızlı eğitilir ve hızlı deneyler için uygundur; COCO veri seti ise üretim ölçeğinde kıyaslama testi için standarttır.
VOC.yaml ile segmentasyon modelleri eğitebilir miyim?#
Hayır — VOC.yaml yalnızca algılama yapılandırmasıdır: dönüştürücüsü VOC XML ek açıklamalarından sınırlayıcı kutuları çıkarır ve orijinal kıyaslamada yer alan segmentasyon maskeleri dönüştürülmez. Bir instance segmentation modeli eğitmek için, COCO-Seg gibi çokgen etiketlerine sahip bir veri setini bir yolo26n-seg.pt modeliyle birlikte kullan.