PASCAL VOC Veri Kümesi#
PASCAL VOC (Görsel Nesne Sınıfları) veri kümesi, 20 günlük nesne sınıfı içeren klasik bir nesne algılama kıyaslamasıdır. Ultralytics VOC.yaml yapılandırması, VOC2007 ve VOC2012 trainval bölümlerini 16.551 görüntülük bir eğitim kümesinde birleştirir, herkese açık şekilde açıklanmış 4.952 VOC2007 test görüntüsüyle doğrulama yapar ve ilk kullanımda her şeyi otomatik olarak indirir (2,8 GB).
Watch: How to Train Ultralytics YOLO on the Pascal VOC Dataset | Object Detection | Computer Vision 🚀
PASCAL VOC yarışmaları 2005-2012 yılları arasında düzenlendi ve nesne algılama modellerinin değerlendirilme biçimini şekillendirdi: kıyaslama; görüntü sınıflandırma, algılama ve segmentasyon görevlerini kapsar ve ortalama kesinlik (mAP) değerini standart algılama metriği olarak yaygınlaştırdı. Ultralytics VOC.yaml yapılandırması algılama açıklamalarını kullanır ve indirme sırasında özgün XML sınırlayıcı kutularını YOLO biçimine 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 taşıt (uçak, bisiklet, tekne, otobüs, araba, motosiklet, tren); ve altı iç mekân nesnesi (şişe, sandalye, yemek masası, saksı bitkisi, kanepe, televizyon monitörü).
- İki yarışma nesli birleştirildi: eğitim, VOC2007 trainval (5.011 görüntü) ile VOC2012 trainval'ı (11.540 görüntü) birleştirir.
- Standartlaştırılmış değerlendirme: Yıllar boyunca yayımlanan VOC temel sonuçları, bunu algılama modellerini karşılaştırmak için kullanışlı bir referans noktası hâline getirir.
- YOLO'ya hazır: indirme betiği arşivleri alır ve açıklamaları otomatik olarak dönüştürür — manuel hazırlık gerekmez.
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 | 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 kümesi |
| Test | 4,952 | Aynı VOC2007 test görüntüleri — yapılandırma ayrı bir elde tutulmuş bölüm tanımlamaz |
VOC2007 test açıklamaları, o yılki yarışmadan sonra herkese açık şekilde yayımlandı; bu sayede bu bölüm etiketli bir doğrulama kümesi olarak kullanılabiliyor. VOC2012 test açıklamaları gizli tutulmaya devam ediyor — bunlar üzerindeki sonuçlar yalnızca resmî PASCAL değerlendirme sunucusu aracılığıyla puanlanabiliyor — bu nedenle bu yapılandırmanın parçası değiller.
Otomatik dönüştürücü, özgün VOC XML açıklamalarında difficult olarak işaretlenen nesneleri atlar; bu nedenle sınıf başına örnek sayıları resmî VOC istatistiklerinden biraz farklıdır.
Görüntülere açıklama katmanlarıyla göz atmak, Charts sekmesinde sınıf dağılımını ve sınırlayıcı kutu ısı haritalarını görüntülemek ve kendi modelini bulutta eğitmek üzere klonlamak için Ultralytics Platform'da VOC'u keşfet.
Uygulamalar#
PASCAL VOC, daha büyük COCO veri kümesinden önceki yıllarda nesne algılama araştırmalarının başlıca kıyaslamasıydı: Faster R-CNN ve SSD gibi algılayıcılar ilk sonuçlarını burada raporladı ve Ultralytics YOLO modelleri doğrudan bu veri kümesiyle eğitilebilir. Günümüzde şu amaçlarla hâlâ popülerdir:
- Yeni algılama mimarilerini, yayımlanmış temel sonuçların uzun geçmişiyle karşılaştırarak kıyaslama
- Hızlı deneyler ve ders çalışmaları — 16.551 eğitim görüntüsüyle COCO'dan çok daha hızlı eğitilir
- Kompakt ve iyi anlaşılmış günlük sınıflar kümesi üzerinde transfer öğrenimi çalışmaları
Veri Kümesi YAML'i#
VOC.yaml dosyası veri kümesi yapılandırmasını — veri kümesi yollarını, 20 sınıf adını ve otomatik indirme ve dönüştürme betiğini — tanımlar. Ultralytics deposunda https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/VOC.yaml adresinde tutulur.
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# PASCAL VOC dataset https://www.robots.ox.ac.uk/~vgg/projects/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, eğitimi ilk kez başlattığında otomatik olarak indirilir — toplam 2,8 GB boyutunda üç arşiv — ve çıkarma ile dönüştürme sırasında yaklaşık 6 GB boş disk alanı gerektirir.
VOC veri kümesi üzerinde 640 görüntü boyutuyla 100 epoch boyunca bir YOLO26n modeli eğitmek için aşağıdaki kod parçacıklarını kullanabilirsin. Kullanılabilir bağımsız değişkenlerin kapsamlı listesi için modelin Training sayfasına bakabilirsin.
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 Açıklamalar#
Aşağıdaki görüntüde VOC veri kümesinden mozaiklenmiş bir eğitim grubu gösterilmektedir. Mozaikleme, birden fazla görüntüyü tek bir eğitim örneğinde birleştirerek modelin her grupta gördüğü nesne, ölçek ve sahne bağlamı çeşitliliğini artırır — ayrıntılar için YOLO veri artırma kılavuzuna bakabilirsin.

Atıflar ve Teşekkürler#
VOC veri kümesini araştırma veya geliştirme çalışmalarında kullanıyorsan 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şturan ve sürdüren PASCAL VOC Konsorsiyumu'na teşekkür etmek isteriz. VOC veri kümesi ve oluşturucuları hakkında daha fazla bilgi için PASCAL VOC veri kümesi web sitesini ziyaret et.
SSS#
PASCAL VOC; kişi, araba, köpek ve sandalye gibi 20 günlük nesne sınıfı üzerinde nesne algılama modellerini eğitmek ve kıyaslamak için kullanılır. Kompakt, tamamen etiketlenmiş ve yıllar boyunca yayımlanmış temel sonuçlarla desteklendiği için yeni mimarileri doğrulamak, ders çalışmaları yürütmek ve hızlı transfer öğrenimi çalışmaları yapmak için yaygın bir tercihtir.
Ultralytics VOC yapılandırması 21.503 görüntü içerir: 16.551 eğitim görüntüsü (VOC2007 trainval + VOC2012 trainval) ve 4.952 doğrulama görüntüsü (VOC2007 test kümesi). Tüm bölümler aynı 20 sınıfı paylaşır. Ayrıntılı döküm için Veri Kümesi Yapısı sayfasına bak.
data="VOC.yaml"ile ilk kez eğitim başlattığında VOC otomatik olarak indirilir — manuel adım gerekmez. Betik, Ultralytics GitHub sürüm varlıklarından üç arşivi (2,8 GB) alır ve XML açıklamalarını YOLO biçimine dönüştürür.VOC üzerinde 640 görüntü boyutuyla 100 epoch boyunca bir YOLO26n modeli eğit:
Eğitim Örneğifrom 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ına bakabilirsin.
Her iki yarışma da aynı 20 sınıfı paylaşır ancak farklı görüntüler sunar. VOC2007, 5.011 trainval görüntüsünün yanı sıra açıklamaları herkese açık olan 4.952 görüntülük bir test kümesi sağlar; VOC2012 ise 11.540 trainval görüntüsü sağlar, ancak test açıklamaları gizli tutulur ve yalnızca resmî değerlendirme sunucusu tarafından puanlanır. Ultralytics
VOC.yaml, eğitim için her iki trainval kümesini birleştirir ve VOC2007 test kümesiyle doğrulama yapar.VOC daha küçük ve basittir: COCO'nun 80 sınıfı 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 raporlanırken COCO, 0,5 ile 0,95 arasındaki IoU eşiklerinde mAP ortalamasını alır. VOC çok daha hızlı eğitilir ve hızlı deneyler için uygundur; COCO veri kümesi üretim ölçeğinde kıyaslama için standarttır.
Hayır —
VOC.yamlyalnızca algılama yapılandırmasıdır: dönüştürücüsü VOC XML açıklamalarından sınırlayıcı kutuları çıkarır ve özgün kıyaslamaya dâhil edilen segmentasyon maskeleri dönüştürülmez. Bir örnek segmentasyonu modeli eğitmek için COCO-Seg gibi poligon etiketlerine sahip bir veri kümesini ve biryolo26n-seg.ptmodeli kullan.



