İçeriğe geç

Örnek Segmentasyon Veri Kümelerine Genel Bakış

Desteklenen Veri Kümesi Formatları

Ultralytics YOLO Biçim

YOLO segmentasyon modellerinin eğitimi için kullanılan veri seti etiket formatı aşağıdaki gibidir:

  1. Görüntü başına bir metin dosyası: Veri kümesindeki her görüntünün, görüntü dosyasıyla aynı ada ve ".txt" uzantısına sahip karşılık gelen bir metin dosyası vardır.
  2. Nesne başına bir satır: Metin dosyasındaki her satır görüntüdeki bir nesne örneğine karşılık gelir.
  3. Satır başına nesne bilgisi: Her satır, nesne örneği hakkında aşağıdaki bilgileri içerir:
    • Nesne sınıfı indeksi: Nesnenin sınıfını temsil eden bir tamsayı (örneğin, kişi için 0, araba için 1, vb.).
    • Nesne sınırlayıcı koordinatları: Maske alanının etrafındaki sınırlayıcı koordinatlar, 0 ile 1 arasında olacak şekilde normalleştirilir.

Segmentasyon veri kümesi dosyasındaki tek bir satırın formatı aşağıdaki gibidir:

<class-index> <x1> <y1> <x2> <y2> ... <xn> <yn>

Bu formatta, <class-index> nesne için sınıfın indeksidir ve <x1> <y1> <x2> <y2> ... <xn> <yn> nesnenin segmentasyon maskesinin sınırlayıcı koordinatlarıdır. Koordinatlar boşluklarla ayrılmıştır.

Aşağıda, 3 noktalı segment ve 5 noktalı segmentten oluşan iki nesne içeren tek bir görüntü için YOLO veri kümesi formatının bir örneği yer almaktadır.

0 0.681 0.485 0.670 0.487 0.676 0.487
1 0.504 0.000 0.501 0.004 0.498 0.004 0.493 0.010 0.492 0.0104

İpucu

  • Her satırın uzunluğu eşit olmak zorunda değildir.
  • Her segmentasyon etiketinin bir en az 3 xy noktası: <class-index> <x1> <y1> <x2> <y2> <x3> <y3>

Veri kümesi YAML biçimi

Ultralytics çerçevesi, Tespit Modellerinin eğitimi için veri kümesini ve model yapılandırmasını tanımlamak üzere bir YAML dosya biçimi kullanır. Burada bir algılama veri kümesini tanımlamak için kullanılan YAML formatının bir örneği yer almaktadır:

# 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: ../datasets/coco8-seg  # 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 (80 COCO classes)
names:
  0: person
  1: bicycle
  2: car
  # ...
  77: teddy bear
  78: hair drier
  79: toothbrush

Bu train ve val alanları sırasıyla eğitim ve doğrulama görüntülerini içeren dizinlerin yollarını belirtir.

names sınıf adlarından oluşan bir sözlüktür. İsimlerin sırası, YOLO veri kümesi dosyalarındaki nesne sınıfı indekslerinin sırası ile eşleşmelidir.

Kullanım

Örnek

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n-seg.pt')  # load a pretrained model (recommended for training)

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

Desteklenen Veri Setleri

Desteklenen Veri Setleri

  • COCO: Çok çeşitli kategorilerde 200 binden fazla etiketli görüntü içeren nesne algılama, segmentasyon ve başlıklandırma için kapsamlı bir veri kümesi.

  • COCO8-seg: COCO'nun segmentasyon modeli eğitiminin hızlı bir şekilde test edilmesi için tasarlanmış kompakt, 8 görüntülük bir alt kümesi, CI kontrolleri ve iş akışı doğrulaması için ideal ultralytics Depo.

  • Carparts-seg: Otomotiv uygulamaları için ideal olan, araba parçalarının segmentasyonuna odaklanan özel bir veri kümesi. Bireysel araba bileşenlerinin ayrıntılı açıklamalarını içeren çeşitli araçlar içerir.

  • Crack-seg: Çeşitli yüzeylerdeki çatlakların segmentasyonu için özel olarak tasarlanmış bir veri kümesi. Altyapı bakımı ve kalite kontrolü için gerekli olan bu veri seti, yapısal zayıflıkları belirlemeye yönelik eğitim modelleri için ayrıntılı görüntüler sağlar.

  • Package-seg: Farklı ambalaj malzemelerinin ve şekillerinin segmentasyonuna adanmış bir veri kümesi. Özellikle lojistik ve depo otomasyonu için kullanışlıdır ve paket taşıma ve ayırma sistemlerinin geliştirilmesine yardımcı olur.

Kendi veri setinizi ekleme

Kendi veri kümeniz varsa ve bunu Ultralytics YOLO biçimiyle segmentasyon modellerini eğitmek için kullanmak istiyorsanız, yukarıda "Ultralytics YOLO biçimi" altında belirtilen biçime uygun olduğundan emin olun. Ek açıklamalarınızı gerekli biçime 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şıyın veya Dönüştürün

COCO Veri Seti Formatından YOLO Formatına

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

Örnek

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir='path/to/coco/annotations/', use_segments=True)

Bu dönüştürme aracı COCO veri setini veya COCO formatındaki herhangi bir veri setini Ultralytics YOLO formatına dönüştürmek için kullanılabilir.

Kullanmak istediğiniz veri kümesinin modelinizle uyumlu olup olmadığını ve gerekli biçim 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 modellerinin eğitimi için çok önemlidir.

Otomatik Notlandırma

Otomatik açıklama, önceden eğitilmiş bir algılama modeli kullanarak bir segmentasyon veri kümesi oluşturmanıza olanak tanıyan önemli bir özelliktir. Manuel etiketlemeye gerek kalmadan çok sayıda görüntüye hızlı ve doğru bir şekilde açıklama eklemenizi sağlayarak zamandan ve emekten tasarruf etmenizi sağlar.

Algılama Modeli Kullanarak Segmentasyon Veri Kümesi Oluşturma

Veri kümenize Ultralytics çerçevesini kullanarak otomatik açıklama eklemek için auto_annotate fonksiyonu aşağıda gösterildiği gibi:

Örnek

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model='sam_b.pt')

Elbette, işte kod parçacıklarıyla güncellenmiş tablo:

Tartışma Tip Açıklama Varsayılan
data str Açıklama eklenecek görüntüleri içeren bir klasörün yolu. None
det_model str, optional Önceden eğitilmiş YOLO algılama modeli. Varsayılan değer 'yolov8x.pt'. 'yolov8x.pt'
sam_model str, optional Önceden eğitilmiş SAM segmentasyon modeli. Varsayılan değer 'sam_b.pt'. 'sam_b.pt'
device str, optional Modellerin çalıştırılacağı cihaz. Varsayılan olarak boş bir dizedir (varsa CPU veya GPU). ''
output_dir str or None, optional Açıklamalı sonuçların kaydedileceği dizin. Varsayılan olarak 'labels' klasörü ile aynı dizinde 'data'. None

Bu auto_annotate işlevi, resimlerinizin yolunu ve önceden eğitilmiş algılamayı belirtmek için isteğe bağlı bağımsız değişkenleri alır ve SAM segmentasyon modelleri, modellerin çalıştırılacağı cihaz ve açıklamalı sonuçların kaydedileceği çıktı dizini.

Otomatik açıklama, önceden eğitilmiş modellerin gücünden yararlanarak, yüksek kaliteli segmentasyon veri kümeleri oluşturmak için gereken zamanı ve çabayı önemli ölçüde azaltabilir. Bu özellik, büyük görüntü koleksiyonlarıyla çalışan araştırmacılar ve geliştiriciler için özellikle yararlıdır, çünkü manuel açıklama yerine model geliştirme ve değerlendirmeye odaklanmalarını sağlar.



Oluşturma 2023-11-12, Güncelleme 2024-04-18
Yazarlar: glenn-jocher (8)

Yorumlar