Nesne Algılama Veri Kümelerine Genel Bakış

Sağlam ve doğru bir nesne algılama 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 formatlar arası dönüştürme işlemleri hakkında bilgiler sağlar.

Desteklenen Veri Kümesi Formatları

Ultralytics YOLO formatı

Ultralytics YOLO formatı, veri kümesi kök dizinini, eğitim/doğrulama/test görüntü dizinlerine veya görüntü yollarını içeren *.txt dosyalarına giden göreli yolları ve sınıf adlarından oluşan bir sözlüğü tanımlamanıza olanak tanıyan bir veri kümesi yapılandırma formatıdır. İşte bir örnek:

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

Bu format için etiketler, görüntü başına bir *.txt dosyası olacak şekilde YOLO formatına dışa aktarılmalıdır. Bir görüntüde nesne yoksa, *.txt dosyasına gerek yoktur. *.txt dosyası, nesne başına bir satır olacak şekilde class x_center y_center width height formatında düzenlenmelidir. Kutu koordinatları normalleştirilmiş xywh formatında (0'dan 1'e kadar) olmalıdır. Kutuların piksel cinsindense, 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ı (0 ile başlayan) olmalı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ülerin ile 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 (Newline Delimited 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 açıklamalarını, her satırın ayrı bir JSON nesnesi içerdiği tek bir dosyada saklar.

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 dahil olmak üzere veri kümesi meta verilerini içerir
  2. Görüntü kayıtları (sonraki satırlar): Boyutlar, açıklamalar ve dosya yolları dahil olmak üzere bireysel görüntü verilerini içerir
NDJSON Örneği
{
    "type": "dataset",
    "task": "detect",
    "name": "Example",
    "description": "COCO NDJSON example dataset",
    "url": "https://app.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"
}

Kullanım Örneği

Bir NDJSON veri kümesini YOLO26 ile kullanmak için .ndjson dosyasına giden yolu 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ış: Büyük veri kümelerini her şeyi belleğe yüklemeden 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 kontrolü: Tek dosya formatı, git ve sürüm kontrol 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:

  • African-wildlife: Bufalo, fil, gergedan ve zebralar dahil olmak üzere Afrika yaban hayatı görüntülerinin yer aldığı bir veri kümesi.
  • Argoverse: Kentsel ortamlardan gelen, zengin açıklamalara sahip 3D takip ve hareket tahmin verilerini içeren bir veri kümesi.
  • 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: Common Objects in Context (COCO), 80 nesne kategorisine sahip büyük ölçekli bir nesne algılama, segmentasyon ve altyazı veri kümesidir.
  • COCO8: COCO train ve COCO val içindeki ilk 4 görüntünün, hızlı testler için uygun daha küçük bir alt kümesidir.
  • COCO8-Grayscale: RGB'nin gri tonlamaya dönüştürülmesiyle oluşturulmuş, tek kanallı model değerlendirmesi için yararlı bir COCO8 gri tonlama sürümüdür.
  • COCO8-Multispectral: RGB dalga boylarının enterpolasyonu ile oluşturulmuş, spektral farkındalıklı model değerlendirmesi için yararlı 10 kanallı çok spektrumlu bir COCO8 sürümüdür.
  • COCO12-Formats: Görüntü yükleme hatlarını doğrulamak için tüm desteklenen görüntü formatlarını (AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP) kapsayan 12 görüntülük bir test veri kümesidir.
  • COCO128: COCO train ve COCO val içindeki ilk 128 görüntünün, testler için uygun daha küçük bir alt kümesidir.
  • Construction-PPE: Şantiye çalışanlarının kask, yelek, eldiven, bot ve gözlük gibi güvenlik ekipmanlarıyla etiketlendiği; ayrıca gerçek dünya uyum izleme için no_helmet, no_googles gibi eksik ekipman açıklamalarını da içeren bir veri kümesidir.
  • Global Wheat 2020: Global Wheat Challenge 2020 için buğday başaklarının görüntülerini içeren bir veri kümesi.
  • HomeObjects-3K: Yataklar, sandalyeler, TV'ler ve daha fazlasını içeren ev eşyalarından oluşan; akıllı ev otomasyonu, robotik, artırılmış gerçeklik ve oda düzeni analizi uygulamaları için ideal bir veri kümesi.
  • KITTI: Stereo, LiDAR ve GPS/IMU verileriyle gerçek dünya sürüş sahnelerini içeren, burada kentsel, kırsal ve otoyol ortamlarında araba, yaya ve bisikletlileri tanımlama gibi 2D nesne algılama görevleri için kullanılan bir veri kümesi.
  • LVIS: 1203 nesne kategorisine sahip büyük ölçekli bir nesne algılama, segmentasyon ve altyazı veri kümesidir.
  • Medical-pills: İlaç kalite güvencesi, hap ayırma ve mevzuata uygunluk gibi uygulamalar için açıklanmış, tıbbi hap görüntülerinin yer aldığı bir veri kümesi.
  • Objects365: 365 nesne kategorisi ve 600 binden fazla açıklanmış görüntü ile nesne algılama için yüksek kaliteli, büyük ölçekli bir veri kümesi.
  • OpenImagesV7: Google tarafından hazırlanan, 1.7M eğitim ve 42k doğrulama görüntüsü içeren kapsamlı bir veri kümesi.
  • Roboflow 100: Kapsamlı model değerlendirmesi için yedi görüntüleme alanına yayılan 100 veri kümesi içeren çeşitli bir nesne algılama kıyaslamasıdır.
  • Signature: Çeşitli belgelerin imzalı görüntülerini içeren, belge doğrulama ve sahtecilik tespit araştırmalarını destekleyen bir veri kümesi.
  • SKU-110K: 11 binden fazla görüntü ve 1.7 milyon sınırlayıcı kutu ile perakende ortamlarında yoğun nesne algılamayı içeren bir veri kümesi.
  • TT100K: 100.000 sokak görünümü görüntüsü ve 30.000'den fazla açıklanmış trafik işareti ile sağlam algılama ve sınıflandırma için Tsinghua-Tencent 100K (TT100K) trafik işareti veri kümesini keşfet.
  • VisDrone: İHA'dan çekilmiş görüntülerden elde edilen, 10 binden fazla görüntü ve video dizisi içeren nesne algılama ve çoklu nesne takip verilerini barındıran bir veri kümesi.
  • VOC: 20 nesne sınıfı ve 11 binden fazla görüntü ile nesne algılama ve segmentasyon için Pascal Visual Object Classes (VOC) veri kümesi.
  • xView: 60 nesne kategorisi ve 1 milyondan fazla açıklanmış nesne ile yukarıdan çekilen görüntülerde nesne algılama için bir veri kümesi.

Kendi veri kümeni ekleme

Kendi veri kümen varsa ve bunu Ultralytics YOLO formatıyla nesne algılama modellerini eğitmek için kullanmak istiyorsan, "Ultralytics YOLO formatı" altında belirtilen formata uygun olduğundan emin ol. 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 açıklamalarını daha basit metin tabanlı YOLO formatına dönüştürerek Ultralytics YOLO modelleriyle uyumlu hale getirir.

Kullanmak istediğin veri kümesinin modelinle uyumlu olup olmadığını ve gerekli format kurallarına uyup uymadığını iki kez kontrol etmeyi unutma. Düzgün biçimlendirilmiş veri kümeleri, başarılı nesne algılama modelleri eğitmek için kritiktir.

SSS

Ultralytics YOLO veri kümesi formatı nedir ve nasıl yapılandırılır?

Ultralytics YOLO formatı, eğitim projelerinde veri kümelerini tanımlamak için yapılandırılmış bir konfigürasyondur. Eğitim, doğrulama ve test görüntülerine ve ilgili etiketlere giden yolların ayarlanmasını 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 normalleştirilmiş koordinatlarla class x_center y_center width height şeklinde biçimlendirilir. Detaylı bir kılavuz için COCO8 veri kümesi örneğine bak.

COCO veri kümesini YOLO formatına nasıl dönüştürürüm?

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 açıklamalarını YOLO formatına dönüştürerek Ultralytics YOLO modelleriyle sorunsuz entegrasyon sağlar. Ek ayrıntılar için Etiket Formatlarını Taşıma veya Dönüştürme bölümünü ziyaret et.

Ultralytics YOLO, nesne algılama için hangi veri kümelerini destekler?

Ultralytics YOLO, aşağıdakiler dahil çok çeşitli veri kümelerini destekler:

Her veri kümesi sayfası, verimli YOLO26 eğitimi için özel olarak uyarlanmış yapı ve kullanım hakkında ayrıntılı bilgi sağlar. Desteklenen Veri Kümeleri bölümünde tam listeyi keşfet.

Kendi veri kümemi kullanarak bir YOLO26 modelini eğitmeye nasıl başlarım?

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ı da dahil olmak üzere farklı modların kullanımıyla ilgili daha fazla ayrıntı için Kullanım bölümüne bak.

Ultralytics YOLO'yu nesne algılama için kullanmaya dair pratik örnekleri nerede bulabilirim?

Ultralytics, YOLO26'yı çeşitli uygulamalarda kullanmak için çok sayıda örnek ve pratik kılavuz sunar. Kapsamlı bir genel bakış için, YOLO26 ile nesne algılama, segmentasyon ve daha fazlasını sergileyen vaka analizleri, ayrıntılı öğreticiler ve topluluk hikayeleri bulabileceğin Ultralytics Blog sayfasını ziyaret et. Belirli örnekler için belgelerdeki Kullanım bölümünü incele.

Yorumlar