Ultralytics YOLO27:

Nesne Tespiti Veri Kümelerine Genel Bakış#

Sağlam ve doğru bir nesne tespiti modeli eğitmek kapsamlı bir veri kümesi gerektirir. Bu kılavuz, Ultralytics YOLO modeliyle uyumlu çeşitli veri kümesi formatlarını tanıtır ve bunların yapısı, kullanımı ve farklı formatlar arasında nasıl dönüştürüleceği hakkında bilgiler sunar.

Desteklenen Veri Kümesi Formatları#

Ultralytics YOLO formatı#

Ultralytics YOLO formatı; veri kümesinin kök dizinini, eğitim/doğrulama/test görüntü dizinlerine veya görüntü yollarını içeren *.txt dosyalarına ait göreli yolları ve sınıf adlarından oluşan bir sözlüğü tanımlamanı sağlayan bir veri kümesi yapılandırma formatıdır. Aşağıda bir örnek verilmiştir:

ultralytics/cfg/datasets/coco8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8
# Example usage: yolo train data=coco8.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8 ← downloads here (1 MB)

# 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: coco8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip

train, val ve test öğelerinin her biri bir dizini, dizin listesini veya satır başına bir görüntü yolu listeleyen bir *.txt dosyasını kabul eder (./ ile başlayan yollar, *.txt dosyasına göre çözümlenir). *.txt dosyası; bir dizinin alt kümesiyle eğitim yapmak, etiketlenmemiş görüntüleri atlamak veya birden fazla kaynaktaki görüntüleri tek bir bölüme birleştirmek için kullanışlıdır.

`*.txt` dosyası olarak görüntü yolları
path: datasets/coco8 # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: person

Bu formattaki etiketler, görüntü başına bir *.txt dosyası olacak şekilde YOLO formatına aktarılmalıdır. Bir görüntüde hiç nesne yoksa *.txt dosyası gerekmez. *.txt dosyası, class x_center y_center width height formatında nesne başına bir satır olacak şekilde biçimlendirilmelidir. Kutu koordinatları normalize edilmiş xywh formatında (0 ile 1 arasında) olmalıdır. Kutuların piksel cinsindeyse x_center ve width değerlerini görüntü genişliğine, y_center ve height değerlerini ise görüntü yüksekliğine bölmelisin. Sınıf numaraları sıfır tabanlı olmalıdır (0'dan başlamalıdır).

YOLO labeled image with bounding boxes on persons and tie

Yukarıdaki görüntüye karşılık gelen etiket dosyası 2 kişi (sınıf 0) ve bir kravat (sınıf 27) içerir:

YOLO format label file with normalized coordinates

Ultralytics YOLO formatını kullanırken eğitim ve doğrulama görüntülerini ve etiketlerini aşağıdaki COCO8 veri kümesi örneğinde gösterildiği gibi düzenle.

YOLO dataset directory structure with train and val folders

Kullanım Örneği#

Modelini eğitmek için YOLO formatındaki veri kümelerini şu şekilde kullanabilirsin:

Ö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="coco8.yaml", epochs=100, imgsz=640)

Ultralytics NDJSON formatı#

NDJSON (Yeni Satırla Sınırlandırılmış JSON) formatı, Ultralytics YOLO modelleri için veri kümelerini tanımlamanın alternatif bir yolunu sunar. Bu format, veri kümesi meta verilerini ve ek açıklamaları, her satırda ayrı bir JSON nesnesi bulunacak şekilde tek bir dosyada depolar.

Bir NDJSON veri kümesi dosyası şunları içerir:

  1. Veri kümesi kaydı (ilk satır): Görev türü, sınıf adları ve genel bilgiler dâhil olmak üzere veri kümesi meta verilerini içerir
  2. Görüntü kayıtları (sonraki satırlar): Boyutlar, ek açıklamalar ve dosya yolları dâhil olmak üzere tek tek görüntü verilerini içerir
NDJSON Örneği
{
    "type": "dataset",
    "task": "detect",
    "name": "Example",
    "description": "COCO NDJSON example dataset",
    "url": "https://platform.ultralytics.com/user/datasets/example",
    "class_names": { "0": "person", "1": "bicycle", "2": "car" },
    "bytes": 426342,
    "version": 0,
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2025-01-01T00:00:00Z"
}

Özel görüntü meta verileri#

Her görüntü kaydı; çekim koşulları, ekipman tanımlayıcıları veya inceleme durumu gibi uygulamaya özgü bağlamlar için bir metadata JSON nesnesi içerebilir. İç içe değerler desteklenir. Ultralytics Platform'a aktarıldığında meta veriler görüntüyle birlikte depolanır ve tam ekran bilgi panelinden görüntülenebilir veya düzenlenebilir.

{
    "type": "image",
    "file": "airbus-wing.jpg",
    "url": "https://example.com/airbus-wing.jpg",
    "split": "train",
    "metadata": {
        "aircraft": { "family": "A350", "section": "wing" },
        "inspectionStatus": "reviewed"
    }
}

Platform, üst düzey meta veri anahtarlarını 128 karakterle, her görüntünün serileştirilmiş meta veri nesnesini 500.000 karakterle ve tek bir NDJSON içe aktarmasındaki birleşik etkin meta verileri 500.000 karakterle sınırlar.

Kullanım Örneği#

Bir NDJSON veri kümesini YOLO26 ile kullanmak için .ndjson dosyasının yolunu belirtmen yeterlidir:

Örnek
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Train using NDJSON dataset
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)

NDJSON formatının avantajları#

  • Tek dosya: Tüm veri kümesi bilgileri tek bir dosyada bulunur
  • Akış: Her şeyi belleğe yüklemeden büyük veri kümelerini satır satır işleyebilir
  • Bulut entegrasyonu: Bulut tabanlı eğitim için uzak görüntü URL'lerini destekler
  • Genişletilebilir: Özel meta veri alanları eklemek kolaydır
  • Sürüm denetimi: Tek dosyalı format, git ve sürüm denetimi sistemleriyle iyi çalışır

Desteklenen Veri Kümeleri#

İşte desteklenen veri kümelerinin bir listesi ve her biri için kısa bir açıklama. Bu veri kümelerinin çoğu, görselleri ve etiketleri inceleyebileceğin, veri kümesi istatistiklerini görüntüleyebileceğin ve bulutta eğitim için bunları klonlayabileceğin Ultralytics Platform üzerinde de barındırılmaktadır.

  • African-wildlife: Bufalo, fil, gergedan ve zebralar dâhil olmak üzere Afrika yaban hayatına ait görüntüler içeren bir veri kümesi.
  • Argoverse: Zengin açıklamalara sahip kentsel ortamlardan 3B takip ve hareket tahmini verileri içeren bir veri kümesidir.
  • Brain-tumor: Beyin tümörlerini tespit etmeye yönelik bu veri kümesi, tümör varlığı, konumu ve özellikleri hakkında ayrıntılar içeren MRI veya CT tarama görüntülerini kapsar.
  • COCO: Bağlam İçindeki Yaygın Nesneler (COCO), 80 nesne kategorisine sahip büyük ölçekli bir nesne tespiti, segmentasyon ve açıklama veri kümesidir.
  • COCO8: COCO train2017 veri kümesinden ilk 8 görselin yer aldığı daha küçük bir alt küme (4 görsel eğitim, 4 görsel doğrulama için), hızlı testler için uygundur.
  • COCO8-Grayscale: RGB'nin gri tonlamaya dönüştürülmesiyle oluşturulan COCO8'in gri tonlamalı sürümüdür ve tek kanallı model değerlendirmesi için kullanışlıdır.
  • COCO8-Multispectral: RGB dalga boylarının enterpolasyonuyla oluşturulan, 10 kanallı multispektral COCO8 sürümüdür ve spektral farkındalığa sahip model değerlendirmesi için kullanışlıdır.
  • COCO12-Formats: Görüntü yükleme işlem hatlarını doğrulamak için desteklenen 12 görüntü formatını (AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP) kapsayan 12 görüntülü bir test veri kümesi.
  • COCO16: COCO train2017'deki ilk 16 görüntünün (8 eğitim + 8 doğrulama) hızlı testlere uygun bir alt kümesi.
  • COCO32: COCO train2017'deki ilk 32 görüntünün (16 eğitim + 16 doğrulama) hızlı testlere uygun bir alt kümesi.
  • COCO64: COCO train2017'deki ilk 64 görüntünün (32 eğitim + 32 doğrulama) hızlı testlere uygun bir alt kümesi.
  • COCO128: COCO train2017'deki ilk 128 görüntünün daha küçük bir alt kümesidir ve testler için uygundur.
  • Construction-PPE: Kask, yelek, eldiven, bot ve gözlük gibi etiketlenmiş güvenlik ekipmanlarına sahip inşaat sahası çalışanlarını içeren ve gerçek dünyadaki uygunluk izleme için no_helmet, no_goggle gibi eksik ekipman ek açıklamalarını kapsayan bir veri kümesi.
  • Global Wheat 2020: 2020 Global Wheat Challenge için buğday başaklarının görüntülerini içeren bir veri kümesidir.
  • HomeObjects-3K: Akıllı ev otomasyonu, robotik, artırılmış gerçeklik ve oda yerleşimi analizi uygulamaları için ideal; yatak, sandalye, TV ve daha fazlası dâhil olmak üzere iç mekân ev eşyalarından oluşan bir veri kümesi.
  • KITTI: Stereo, LiDAR ve GPS/IMU verileri içeren gerçek dünya sürüş sahnelerinden oluşan ve burada kentsel, kırsal ve otoyol ortamlarında otomobilleri, yayaları ve bisikletlileri belirleme gibi 2B nesne tespiti görevleri için kullanılan bir veri kümesi.
  • LVIS: 1203 nesne kategorisine sahip, geniş ölçekli bir nesne tespiti, segmentasyon ve açıklama veri kümesidir.
  • Medical-pills: İlaç kalite güvencesi, hap sınıflandırma ve mevzuata uygunluk gibi uygulamalar için açıklanmış tıbbi hap görüntülerinden oluşan bir veri kümesi.
  • Objects365: 365 nesne kategorisine ve 600 binden fazla açıklamalı görüntüye sahip, nesne tespiti için yüksek kaliteli ve geniş ölçekli bir veri kümesidir.
  • OpenImagesV7: Google tarafından oluşturulmuş; 1,7 milyon eğitim görüntüsü ve 42 bin doğrulama görüntüsü içeren kapsamlı bir veri kümesidir.
  • Roboflow 100: Kapsamlı model değerlendirmesi için yedi görüntü alanına yayılan 100 veri kümesini içeren çeşitli bir nesne tespiti kıyaslama veri kümesi.
  • Signature: Belge doğrulama ve sahtecilik tespiti araştırmalarını destekleyen, açıklamalı imzalar içeren çeşitli belge görüntülerinden oluşan bir veri kümesidir.
  • SKU-110K: 11 binden fazla görüntü ve 1,7 milyon sınırlayıcı kutu ile perakende ortamlarında yoğun nesne tespitini içeren bir veri kümesi.
  • TT100K: Sağlam tespit ve sınıflandırma için 221 işaret kategorisinde 16.817 sokak görünümü görüntüsü içeren Tsinghua-Tencent 100K (TT100K) trafik işareti veri kümesini keşfet.
  • VisDrone: 10 binden fazla görüntü ve video dizisiyle, dronlarla çekilmiş görüntülerden nesne tespiti ve çoklu nesne takip verileri içeren bir veri kümesidir.
  • VOC: 20 nesne sınıfı ve 11 binden fazla görüntü içeren, nesne tespiti ve segmentasyonu için Pascal Görsel Nesne Sınıfları (VOC) veri kümesidir.
  • xView: 60 nesne kategorisine ve 1 milyondan fazla açıklamalı nesneye sahip, havadan çekilmiş görüntülerde nesne tespiti için kullanılan bir veri kümesidir.

Kendi veri kümeni ekleme#

Kendi veri kümen varsa ve bunu Ultralytics YOLO formatıyla tespit modellerini eğitmek için kullanmak istiyorsan "Ultralytics YOLO formatı" bölümünde yukarıda belirtilen formata uygun olduğundan emin ol. Ek açıklamalarını gerekli formata dönüştür ve YAML yapılandırma dosyasında yolları, sınıf sayısını ve sınıf adlarını belirt.

Etiket Formatlarını Taşıma veya Dönüştürme#

COCO Veri Kümesi Formatından YOLO Formatına#

Popüler COCO veri kümesi formatındaki etiketleri aşağıdaki kod parçacığını kullanarak kolayca YOLO formatına dönüştürebilirsin:

Örnek
from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/")

Bu dönüştürme aracı, COCO veri kümesini veya COCO formatındaki herhangi bir veri kümesini Ultralytics YOLO formatına dönüştürmek için kullanılabilir. İşlem, JSON tabanlı COCO ek açıklamalarını daha basit metin tabanlı YOLO formatına dönüştürerek bunları Ultralytics YOLO modelleri ile uyumlu hâle getirir. Sınıf kimliği eşlemesi, dizin düzeni ve segmentasyon veya poz ek açıklamaları dâhil olmak üzere eksiksiz iş akışı için COCO Ek Açıklamalarını YOLO'ya Dönüştürme bölümüne bakabilirsin.

Kullanmak istediğin veri kümesinin modelinle uyumlu olup olmadığını ve gerekli format kurallarına uyup uymadığını tekrar kontrol etmeyi unutma. Doğru biçimlendirilmiş veri kümeleri, başarılı nesne tespiti modelleri eğitmek için kritik öneme sahiptir.

Sırada Ne Var?#

Veri kümen biçimlendirildiğinde modelini eğitmeye başla. Hangi önceden eğitilmiş modelle başlayacağından emin değil misin? Seçenekleri YOLO26 model ailesinde karşılaştır.

SSS#

  • Ultralytics YOLO formatı, eğitim projelerinde veri kümelerini tanımlamaya yönelik yapılandırılmış bir yapılandırmadır. Eğitim, doğrulama ve test görüntülerinin yanı sıra bunlara karşılık gelen etiketlerin yollarını ayarlamayı içerir. Örneğin:

    # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
    
    # COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
    # Documentation: https://docs.ultralytics.com/datasets/detect/coco8
    # Example usage: yolo train data=coco8.yaml
    # parent
    # ├── ultralytics
    # └── datasets
    #     └── coco8 ← downloads here (1 MB)
    
    # 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: coco8 # dataset root dir
    train: images/train # train images (relative to 'path') 4 images
    val: images/val # val images (relative to 'path') 4 images
    test: # test images (optional)
    
    # Classes
    names:
      0: person
      1: bicycle
      2: car
      3: motorcycle
      4: airplane
      5: bus
      6: train
      7: truck
      8: boat
      9: traffic light
      10: fire hydrant
      11: stop sign
      12: parking meter
      13: bench
      14: bird
      15: cat
      16: dog
      17: horse
      18: sheep
      19: cow
      20: elephant
      21: bear
      22: zebra
      23: giraffe
      24: backpack
      25: umbrella
      26: handbag
      27: tie
      28: suitcase
      29: frisbee
      30: skis
      31: snowboard
      32: sports ball
      33: kite
      34: baseball bat
      35: baseball glove
      36: skateboard
      37: surfboard
      38: tennis racket
      39: bottle
      40: wine glass
      41: cup
      42: fork
      43: knife
      44: spoon
      45: bowl
      46: banana
      47: apple
      48: sandwich
      49: orange
      50: broccoli
      51: carrot
      52: hot dog
      53: pizza
      54: donut
      55: cake
      56: chair
      57: couch
      58: potted plant
      59: bed
      60: dining table
      61: toilet
      62: tv
      63: laptop
      64: mouse
      65: remote
      66: keyboard
      67: cell phone
      68: microwave
      69: oven
      70: toaster
      71: sink
      72: refrigerator
      73: book
      74: clock
      75: vase
      76: scissors
      77: teddy bear
      78: hair drier
      79: toothbrush
    
    # Download script/URL (optional)
    download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip

    Etiketler, görüntü başına bir dosya olacak şekilde *.txt dosyalarına kaydedilir ve normalize edilmiş koordinatlarla class x_center y_center width height olarak biçimlendirilir. Ayrıntılı bir kılavuz için COCO8 veri kümesi örneğine bakabilirsin.

  • Bir COCO veri kümesini Ultralytics dönüştürme araçlarını kullanarak YOLO formatına dönüştürebilirsin. İşte hızlı bir yöntem:

    from ultralytics.data.converter import convert_coco
    
    convert_coco(labels_dir="path/to/coco/annotations/")

    Bu kod, COCO ek açıklamalarını YOLO formatına dönüştürerek Ultralytics YOLO modelleriyle sorunsuz entegrasyon sağlar. Ek ayrıntılar için belgelerdeki Etiket Formatlarını Taşıma veya Dönüştürme bölümünü ziyaret et.

  • Ultralytics YOLO, aşağıdakiler dâhil olmak üzere çok çeşitli veri kümelerini destekler:

    Her veri kümesi sayfası, verimli YOLO26 eğitimi için uyarlanmış yapı ve kullanıma ilişkin ayrıntılı bilgiler sunar. Listenin tamamını Desteklenen Veri Kümeleri bölümünde keşfet.

  • YOLO26 modelini eğitmeye başlamak için veri kümenin doğru biçimlendirildiğinden ve yolların bir YAML dosyasında tanımlandığından emin ol. Eğitimi başlatmak için aşağıdaki betiği kullan:

    Örnek
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")  # Load a pretrained model
    results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)

    CLI komutları dâhil olmak üzere farklı modların kullanımı hakkında daha fazla bilgi için Kullanım bölümüne bakabilirsin.

  • Ultralytics, YOLO26'nın çeşitli uygulamalarda kullanımına yönelik çok sayıda örnek ve pratik kılavuz sunar. Kapsamlı bir genel bakış için YOLO26 ile nesne tespiti, segmentasyon ve daha fazlasını gösteren örnek olayları, ayrıntılı eğitimleri ve topluluk hikâyelerini bulabileceğin Ultralytics Blog sayfasını ziyaret et. Belirli örnekler için belgelerdeki Kullanım bölümüne bak.

Yorumlar