İçeriğe geç

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

Güçlü 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 biçimlerini tanıtmakta ve bunların yapısı, kullanımı ve farklı biçimler arasında nasıl dönüştürme yapılacağı hakkında bilgiler sağlamaktadır.

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 giden göreli yolları veya *.txt görüntü yollarını içeren dosyalar ve sınıf adlarının bir sözlüğü. İş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, bir adet olacak şekilde YOLO formatına aktarılmalıdır. *.txt görüntü başına dosya. Bir görüntüde nesne yoksa, *.txt dosyası gereklidir. Şuradaki *.txt dosyası içindeki her nesne için bir satırla biçimlendirilmelidir. class x_center y_center width height biçimindedir. Kutu koordinatları normalize edilmiş xywh biçimi (0 ile 1 arasında). Kutularınız piksel cinsindeyse, bölmelisiniz x_center ve width görüntü genişliğine göre ve y_center ve height görüntü yüksekliğine göre. Sınıf numaraları sıfır tabanlı (0 ile başlayarak) olmalıdır.

Örnek etiketli görüntü

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

Örnek etiket dosyası

Ultralytics YOLO formatını kullanırken, eğitim ve doğrulama resimlerinizi ve etiketlerinizi aşağıdaki COCO8 veri kümesi örneğinde gösterildiği gibi düzenleyin.

Örnek veri kümesi dizin yapısı

Kullanım Örneği

Modelinizi eğitmek için YOLO formatındaki veri kümelerini nasıl kullanabileceğiniz aşağıda açıklanmıştır:

Örnek

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640

Ultralytics NDJSON formatı

NDJSON (Yeni Satırla Ayrılmış JSON) formatı, Ultralytics YOLO11 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"
}
{
    "type": "image",
    "file": "image1.jpg",
    "url": "https://www.url.com/path/to/image1.jpg",
    "width": 640,
    "height": 480,
    "split": "train",
    "annotations": {
        "boxes": [
            [0, 0.52481, 0.37629, 0.28394, 0.41832],
            [1, 0.73526, 0.29847, 0.19275, 0.33691]
        ]
    }
}

Göreve göre açıklama formatları:

  • Tespit: "annotations": {"boxes": [[class_id, x_center, y_center, width, height], ...]}
  • Segmentasyon: "annotations": {"segments": [[class_id, x1, y1, x2, y2, ...], ...]}
  • Poz: "annotations": {"pose": [[class_id, x1, y1, v1, x2, y2, v2, ...], ...]}
  • OBB: "annotations": {"obb": [[class_id, x_center, y_center, width, height, angle], ...]}
  • Sınıflandırma: "annotations": {"classification": [class_id]}

Kullanım Örneği

YOLO11 ile bir NDJSON veri kümesi kullanmak için, sadece şuraya giden yolu belirtin: .ndjson dosyası:

Örnek

from ultralytics import YOLO

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

# Train using NDJSON dataset
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)
# Start training with NDJSON dataset
yolo detect train data=path/to/dataset.ndjson model=yolo11n.pt 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 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ının görüntülerini içeren bir veri kümesidir.
  • Argoverse: Zengin açıklamalarla kentsel ortamlardan 3D izleme ve hareket tahmini verileri içeren bir veri kümesi.
  • Brain-tumor: Beyin tümörlerini tespit etmeye yönelik bir veri kümesi, tümör varlığı, konumu ve özellikleri hakkında ayrıntılar içeren MRI veya BT tarama görüntülerini içerir.
  • COCO: Common Objects in Context (COCO), 80 nesne kategorisine sahip geniş ölçekli bir nesne algılama, segmentasyon ve başlıklandırma veri kümesidir.
  • COCO8: COCO train ve COCO val'den ilk 4 görüntünün daha küçük bir alt kümesi olup, hızlı testler için uygundur.
  • COCO8-Grayscale: RGB'nin gri tonlamaya dönüştürülmesiyle oluşturulan COCO8'in gri tonlamalı bir versiyonu olup, tek kanallı model değerlendirmesi için kullanışlıdır.
  • COCO8-Multispectral: RGB dalga boylarını enterpolasyon yaparak oluşturulan COCO8'in 10 kanallı çok spektralli bir versiyonu olup, spektral duyarlı model değerlendirmesi için kullanışlıdır.
  • COCO128: COCO train ve COCO val'den ilk 128 görüntünün daha küçük bir alt kümesi olup, testler için uygundur.
  • İnşaat-KKD: Şantiyelerde çalışan işçilerin kask, yelek, eldiven, bot ve gözlük gibi etiketlenmiş güvenlik ekipmanlarını içeren ve gerçek dünya uyumluluk takibi için no_helmet, no_googles gibi eksik ekipman açıklamalarını da içeren bir veri kümesi.
  • Global Wheat 2020: Global Wheat Challenge 2020 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 düzeni analizindeki uygulamalar için ideal olan yataklar, sandalyeler, TV'ler ve daha fazlasını içeren iç mekan ev eşyalarından oluşan bir veri kümesi.
  • KITTI: Stereo, LiDAR ve GPS/IMU verilerini içeren gerçek dünya sürüş sahnelerini içeren bir veri kümesi. Burada, kentsel, kırsal ve otoyol ortamlarında arabaları, yayaları ve bisikletlileri tanımlamak gibi 2D nesne algılama görevleri için kullanılır.
  • LVIS: 1203 nesne kategorisine sahip, büyük ölçekli bir nesne algılama, segmentasyon ve başlıklandırma veri kümesidir.
  • Medical-pills: İlaç kalite güvencesi, hapların sıralanması ve mevzuata uygunluk gibi uygulamalar için açıklama eklenmiş tıbbi hap görüntüleri içeren bir veri kümesi.
  • Objects365: 365 nesne kategorisi ve 600 binden fazla etiketli görüntü ile nesne algılama için yüksek kaliteli, büyük ölçekli bir veri kümesidir.
  • OpenImagesV7: Google tarafından sağlanan, 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üleme alanına yayılan 100 veri kümesiyle çeşitli bir nesne algılama kıyaslaması.
  • Signature: Belge doğrulama ve sahtecilik tespit araştırmalarını destekleyen, açıklamalı imzalar içeren çeşitli belgelerin görüntülerini içeren 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 algılamaya sahip bir veri kümesi.
  • VisDrone: 10 binden fazla görüntü ve video sekansı ile drone ile çekilmiş görüntülerden elde edilen nesne algılama ve çoklu nesne izleme verilerini içeren bir veri kümesidir.
  • VOC: Nesne algılama ve segmentasyon için 20 nesne sınıfı ve 11 binden fazla görüntü içeren Pascal Görsel Nesne Sınıfları (VOC) veri kümesi.
  • xView: 60 nesne kategorisi ve 1 milyondan fazla etiketli nesne ile havadan çekilmiş görüntülerde nesne algılama için bir veri kümesidir.

Kendi veri kümenizi ekleme

Eğer kendi veri kümeniz varsa ve bunu Ultralytics YOLO formatı ile algılama modellerini eğitmek için kullanmak istiyorsanız, yukarıda "Ultralytics YOLO formatı" altında belirtilen formata uygun olduğundan emin olun. Etiketlemelerinizi gerekli formata dönüştürün ve YAML yapılandırma dosyasında yolları, sınıf sayısını ve sınıf adlarını belirtin.

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

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

Aşağıdaki kod parçacığını kullanarak popüler COCO veri kümesi biçimindeki etiketleri YOLO biçimine kolayca dönüştürebilirsiniz:

Ö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. Bu iş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ğiniz veri kümesinin modelinizle uyumlu olup olmadığını ve gerekli format kurallarına uyup uymadığını iki kez kontrol etmeyi unutmayın. Düzgün biçimlendirilmiş veri kümeleri, başarılı nesne algılama modellerini eğitmek için çok önemlidir.

SSS

Ultralytics YOLO veri seti formatı nedir ve nasıl yapılandırılır?

Ultralytics YOLO formatı, eğitim projelerinizde veri kümelerini tanımlamak için yapılandırılmış bir yapılandırmadır. Eğitim, doğrulama ve test görüntülerinizin ve karşılık gelen etiketlerinizin 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 şuraya kaydedilir: *.txt görüntü başına bir dosya olacak şekilde biçimlendirilmiş dosyalar class x_center y_center width height normalize edilmiş koordinatlarla. Ayrıntılı bir kılavuz için bkz. COCO8 veri kümesi örneği.

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

Ultralytics dönüştürme araçlarını kullanarak bir COCO veri kümesini YOLO biçimine dönüştürebilirsiniz. İş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ızı 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 edin.

Ultralytics YOLO tarafından nesne algılama için hangi veri kümeleri desteklenir?

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

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

Veri kümemi kullanarak bir YOLO11 modelini eğitmeye nasıl başlarım?

Bir YOLO11 modelini eğitmeye başlamak için, veri kümenizin doğru biçimlendirildiğinden ve yolların bir YAML dosyasında tanımlandığından emin olun. Eğitime başlamak için aşağıdaki komut dosyasını kullanın:

Örnek

from ultralytics import YOLO

model = YOLO("yolo11n.pt")  # Load a pretrained model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)
yolo detect train data=path/to/your_dataset.yaml model=yolo11n.pt epochs=100 imgsz=640

CLI komutları da dahil olmak üzere farklı modları kullanma hakkında daha fazla ayrıntı için Kullanım bölümüne bakın.

Ultralytics YOLO'yu nesne algılama için kullanmanın pratik örneklerini nerede bulabilirim?

Ultralytics, YOLO11'i çeşitli uygulamalarda kullanmak için çok sayıda örnek ve pratik kılavuz sunar. Kapsamlı bir genel bakış için, nesne algılama, bölütleme ve daha fazlasını YOLO11 ile sergileyen örnek olay incelemelerini, ayrıntılı eğitimleri ve topluluk hikayelerini bulabileceğiniz Ultralytics Blogunu ziyaret edin. Belirli örnekler için, belgedeki Kullanım bölümüne bakın.



📅 2 yıl önce oluşturuldu ✏️ 1 gün önce güncellendi
glenn-jocherRizwanMunawarLaughing-qY-T-GUltralyticsAssistantMatthewNoycejk4eIvorZhu331

Yorumlar