Link to this sectionVOC Veri Kümesi#
PASCAL VOC (Visual Object Classes) veri kümesi, iyi bilinen bir nesne algılama, bölütleme ve sınıflandırma veri kümesidir. Çok çeşitli nesne kategorileri üzerinde araştırmayı teşvik etmek için tasarlanmıştır ve yaygın olarak bilgisayarlı görü modellerini kıyaslamak için kullanılır. Nesne algılama, bölütleme ve sınıflandırma görevleri üzerinde çalışan araştırmacılar ve geliştiriciler için temel bir veri kümesidir.
Watch: How to Train Ultralytics YOLO26 on the Pascal VOC Dataset | Object Detection 🚀
Link to this sectionTemel Özellikler#
- VOC veri kümesi iki ana zorluğu içerir: VOC2007 ve VOC2012.
- Veri kümesi, arabalar, bisikletler ve hayvanlar gibi yaygın nesnelerin yanı sıra tekneler, kanepeler ve yemek masaları gibi daha özel kategoriler de dahil olmak üzere 20 nesne kategorisinden oluşur.
- Açıklamalar, nesne algılama ve sınıflandırma görevleri için nesne sınırlayıcı kutularını ve sınıf etiketlerini, bölütleme görevleri içinse bölütleme maskelerini içerir.
- VOC, nesne algılama ve sınıflandırma için mean Average Precision (mAP) gibi standartlaştırılmış değerlendirme metrikleri sağlar, bu da onu model performansını karşılaştırmak için uygun hale getirir.
Link to this sectionVeri Kümesi Yapısı#
VOC veri kümesi üç alt kümeye ayrılmıştır:
- Eğitim: Bu alt küme, nesne algılama, bölütleme ve sınıflandırma modellerini eğitmek için görüntüler içerir.
- Doğrulama: Bu alt küme, model eğitimi sırasında doğrulama amacıyla kullanılan görüntüleri içerir.
- Test: Bu alt küme, eğitilmiş modelleri test etmek ve kıyaslamak için kullanılan görüntülerden oluşur. Bu alt küme için temel gerçeklik açıklamaları halka açık değildir ve sonuçlar geçmişte performans değerlendirmesi için PASCAL VOC değerlendirme sunucusuna gönderilmiştir.
Link to this sectionUygulamalar#
The VOC dataset is widely used for training and evaluating deep learning models in object detection (such as Ultralytics YOLO, Faster R-CNN, and SSD), instance segmentation (such as Mask R-CNN), and image classification. The dataset's diverse set of object categories, large number of annotated images, and standardized evaluation metrics make it an essential resource for computer vision researchers and practitioners.
Link to this sectionVeri Kümesi YAML#
Veri kümesi yapılandırmasını tanımlamak için bir YAML (Yet Another Markup Language) dosyası kullanılır. Bu dosya, veri kümesinin yolları, sınıfları ve diğer ilgili bilgileri hakkında bilgiler içerir. VOC veri kümesi durumunda, VOC.yaml dosyası https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/VOC.yaml adresinde tutulmaktadı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, 5012 images
f"{ASSETS_URL}/VOCtest_06-Nov-2007.zip", # 438MB, 4953 images
f"{ASSETS_URL}/VOCtrainval_11-May-2012.zip", # 1.95GB, 17126 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 formatLink to this sectionKullanım#
VOC veri kümesi üzerinde 100 epochs boyunca 640 görüntü boyutu ile bir YOLO26n modeli eğitmek için aşağıdaki kod parçalarını kullanabilirsin. Kullanılabilir bağımsız değişkenlerin kapsamlı bir listesi için model Eğitim sayfasına başvur.
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)Link to this sectionÖrnek Görüntüler ve Ek Açıklamalar#
VOC veri kümesi, çeşitli nesne kategorileri ve karmaşık sahneler içeren çok çeşitli görüntüler içerir. İşte veri kümesinden görüntü örnekleri ve bunlara karşılık gelen açıklamalar:

- Mozaiklenmiş Görüntü: Bu görüntü, mozaiklenmiş veri kümesi görüntülerinden oluşan bir eğitim grubunu göstermektedir. Mozaikleme, eğitim sırasında her eğitim grubundaki nesne ve sahne çeşitliliğini artırmak için birden fazla görüntüyü tek bir görüntüde birleştiren bir tekniktir. Bu, modelin farklı nesne boyutlarına, en-boy oranlarına ve bağlamlara genelleme yapma yeteneğini geliştirmeye yardımcı olur.
Bu örnek, VOC veri kümesindeki görüntülerin çeşitliliğini ve karmaşıklığını ve eğitim sürecinde mozaikleme kullanmanın faydalarını sergilemektedir.
Link to this sectionAlı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:
@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}
}computer vision 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 kümesi ve yaratıcıları hakkında daha fazla bilgi için PASCAL VOC veri kümesi web sitesini ziyaret et.
Link to this sectionSSS#
Link to this sectionPASCAL VOC veri kümesi nedir ve bilgisayarlı görü görevleri için neden önemlidir?#
PASCAL VOC (Visual Object Classes) veri kümesi, bilgisayarlı görüde object detection, bölütleme ve sınıflandırma için ünlü bir kıyaslamadır. 20 farklı nesne kategorisi genelinde sınırlayıcı kutular, sınıf etiketleri ve bölütleme maskeleri gibi kapsamlı açıklamalar içerir. Araştırmacılar, mean Average Precision (mAP) gibi standartlaştırılmış değerlendirme metrikleri nedeniyle Faster R-CNN, YOLO ve Mask R-CNN gibi modellerin performansını değerlendirmek için bunu yaygın olarak kullanırlar.
Link to this sectionVOC veri kümesini kullanarak bir YOLO26 modelini nasıl eğitirim?#
VOC veri kümesi ile bir YOLO26 modeli eğitmek için bir YAML dosyasındaki veri kümesi yapılandırmasına ihtiyacın var. İşte 640 görüntü boyutu ile 100 epoch boyunca bir YOLO26n modelini eğitmeye başlamak için bir örnek:
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)Link to this sectionVOC veri kümesinde yer alan temel zorluklar nelerdir?#
VOC veri kümesi iki ana zorluğu içerir: VOC2007 ve VOC2012. Bu zorluklar, 20 farklı nesne kategorisi genelinde nesne algılama, bölütleme ve sınıflandırmayı test eder. Her görüntü, sınırlayıcı kutular, sınıf etiketleri ve bölütleme maskeleri ile titizlikle açıklanmıştır. Zorluklar, farklı bilgisayarlı görü modellerinin karşılaştırılmasını ve kıyaslanmasını kolaylaştıran mAP gibi standartlaştırılmış metrikler sağlar.
Link to this sectionPASCAL VOC veri kümesi model kıyaslamayı ve değerlendirmeyi nasıl geliştirir?#
PASCAL VOC veri kümesi, ayrıntılı açıklamaları ve mean Average Precision (mAP) gibi standartlaştırılmış metrikleri sayesinde model kıyaslamasını ve değerlendirmesini geliştirir. Bu metrikler, nesne algılama ve sınıflandırma modellerinin performansını değerlendirmek için çok önemlidir. Veri kümesinin çeşitli ve karmaşık görüntüleri, çeşitli gerçek dünya senaryolarında kapsamlı model değerlendirmesi sağlar.
Link to this sectionYOLO modellerinde semantic segmentation için VOC veri kümesini nasıl kullanırım?#
VOC veri kümesini YOLO modelleri ile anlamsal bölütleme görevleri için kullanmak istiyorsan, veri kümesini bir YAML dosyasında düzgün bir şekilde yapılandırman gerekir. YAML dosyası, bölütleme modellerini eğitmek için gereken yolları ve sınıfları tanımlar. Ayrıntılı kurulumlar için VOC.yaml adresindeki VOC veri kümesi YAML yapılandırma dosyasına göz at. Bölütleme görevleri için, algılama modeli yerine yolo26n-seg.pt gibi bölütlemeye özgü bir model kullanırsın.