Kurumsal kullanıma hazır güvenlik: ISO 27001 + SOC 2 Tip I uyumlu.
No license

Link to this sectionPASCAL VOC Veri Kümesi#

PASCAL VOC (Visual Object Classes) veri kümesi, 20 günlük nesne sınıfına sahip klasik bir nesne algılama kıyaslama ölçütüdür. Ultralytics VOC.yaml yapılandırması, VOC2007 ve VOC2012 trainval bölümlerini birleştirerek 16.551 görüntüden oluşan bir eğitim seti oluşturur, 4.952 halka açık 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 algılama modellerinin nasıl değerlendirileceğini şekillendirmiştir: bu kıyaslama; görüntü sınıflandırma, algılama ve segmentasyon görevlerini kapsar ve standart bir algılama metriği olarak ortalama Hassasiyeti (mAP) popüler hale getirmiştir. Ultralytics VOC.yaml yapılandırması, indirme sırasında orijinal XML sınırlayıcı kutularını YOLO formatına dönüştürerek algılama açıklamalarını kullanır.

Link to this sectionTemel Ö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.

Link to this sectionVeri Kümesi Yapısı#

Ultralytics VOC.yaml yapılandırması aşağıdaki bölümleri tanımlar:

BölümGörüntülerKaynak
Eğit (Train)16.551VOC2007 trainval (5.011) + VOC2012 trainval (11.540)
Doğrulama4.952VOC2007 test, eğitim sırasında değerlendirme için kullanılır
Test4.952Aynı 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.

Zor nesneler hariç tutuldu

Otomatik dönüştürücü, orijinal VOC XML açıklamalarında difficult olarak işaretlenmiş nesneleri atlar, bu nedenle sınıf başına örnek sayıları resmi VOC istatistiklerinden biraz farklılık gösterir.

Görüntüleri açıklama katmanlarıyla incelemek, Grafikler sekmesindeki sınıf dağılımını ve sınırlayıcı kutu ısı haritalarını görüntülemek ve bulutta kendi modelini eğitmek için kopyalamak üzere Ultralytics Platformundaki VOC sayfasını keşfet.

Link to this sectionUygulamalar#

PASCAL VOC, daha büyük olan COCO veri kümesinden önceki yıllarda nesne algılama araştırmaları için birincil kıyaslama ölçütüydü: Faster R-CNN ve SSD gibi dedektörler orijinal sonuçlarını bunun üzerinde raporlamışlardır ve Ultralytics YOLO modelleri kutudan çıktığı gibi bunun üzerinde eğitilir. Günümüzde hala şunlar için popülerdir:

  • 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 nesne kümesi üzerinde Transfer öğrenimi çalışmaları

Link to this sectionVeri Kümesi YAML#

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 şu adreste tutulur: https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/VOC.yaml.

ultralytics/cfg/datasets/VOC.yaml
# 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 format

Link to this sectionKullanım#

2.8 GB indirme

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 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.

Eğitim Örneği
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)

Link to this sectionÖrnek Görüntüler ve Ek Açıklamalar#

Aşağıdaki görüntü, VOC veri kümesinden 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üğü nesne, ölçek ve sahne bağlamı çeşitliliğini artırır — ayrıntılar için YOLO veri artırma kılavuzuna bak.

Pascal VOC veri kümesi mozaik eğitim grubu

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:

Alıntı
@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}}

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 ne için kullanılır?#

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 etiketli ve yıllarca yayınlanmış temel değerlerle desteklendiği için, yeni mimarileri doğrulamak, ders çalışması deneyleri yürütmek ve hızlı transfer öğrenimi çalışmaları yapmak için yaygın bir tercihtir.

Link to this sectionPASCAL VOC veri kümesinde kaç görüntü var?#

Ultralytics VOC yapılandırması 21.503 görüntü içerir: 16.551 eğitim için (VOC2007 trainval + VOC2012 trainval) ve 4.952 doğrulama için (VOC2007 test seti). Tüm bölümler aynı 20 sınıfı paylaşır. Tam döküm için Veri Kümesi Yapısı bölümüne bak.

Link to this sectionPASCAL VOC veri kümesini nasıl indirebilirim?#

VOC, data="VOC.yaml" ile ilk eğittiğinde otomatik olarak indirilir — manuel adımlar gerekmez. Betik, Ultralytics GitHub sürüm varlıklarından üç arşiv (2.8 GB) çeker ve XML açıklamalarını YOLO formatına dönüştürür.

Link to this sectionVOC 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:

Eğitim Örneği
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ına bak.

Link to this sectionVOC2007 ve VOC2012 arasındaki fark nedir?#

Her iki yarışma da aynı 20 sınıfı paylaşır ancak farklı görüntülere katkıda bulunur. VOC2007, 5.011 trainval görüntüsü ve açıklamaları halka açık olan 4.952 görüntülük bir test seti sağlar; VOC2012, 11.540 trainval görüntüsü sağlar, ancak test açıklamaları gizli tutulur ve yalnızca resmi değerlendirme sunucusu tarafından puanlanır. Ultralytics VOC.yaml her iki trainval setini de eğitim için birleştirir ve VOC2007 testi üzerinde doğrulama yapar.

Link to this sectionPASCAL VOC, COCO veri kümesi ile nasıl karşılaştırılır?#

VOC daha küçük ve daha basittir: 20 sınıf ve 21.503 görüntü, COCO'nun 80 sınıfına ve 330K görüntüsüne kıyasla. VOC sonuçları geleneksel olarak 0.5 IoU'da mAP olarak rapor edilirken, COCO mAP'yi 0.5 ile 0.95 arasındaki IoU eşikleri üzerinde ortalar. 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.

Link to this sectionVOC.yaml ile segmentasyon modelleri eğitebilir miyim?#

No — VOC.yaml is a detection-only configuration: its converter extracts bounding boxes from the VOC XML annotations, and the segmentation masks included in the original benchmark are not converted. To train an instance segmentation model, use a dataset with polygon labels such as COCO-Seg with a yolo26n-seg.pt model.

Yorumlar