İçeriğe geç

Örnek Segmentasyon Veri Kümelerine Genel Bakış

Örnek segmentasyonu, bir görüntüdeki bireysel nesneleri tanımlamayı ve sınırlarını belirlemeyi içeren bir bilgisayar görüşü görevidir. Bu kılavuz, Ultralytics YOLO'nun örnek segmentasyon görevleri için desteklediği veri kümesi formatlarına genel bir bakışın yanı sıra, modellerinizi eğitmek için bu veri kümelerini nasıl hazırlayacağınız, dönüştüreceğiniz ve kullanacağınızla ilgili talimatlar sunar.

Desteklenen Veri Kümesi Formatları

Ultralytics YOLO formatı

YOLO segmentasyon modellerini eğitmek için kullanılan veri kümesi etiket formatı aşağıdaki gibidir:

  1. Resim başına bir metin dosyası: Veri kümesindeki her resim, resim dosyasıyla aynı ada ve ".txt" uzantısına sahip karşılık gelen bir metin dosyasına sahiptir.
  2. Nesne başına bir satır: Metin dosyasındaki her satır, resimdeki 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ı etrafındaki sınırlayıcı koordinatlar, 0 ile 1 arasında olacak şekilde normalleştirilmiştir.

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> , nesnenin sınıfının indeksidir ve <x1> <y1> <x2> <y2> ... <xn> <yn> , nesnenin segmentasyon maskesinin sınırlayıcı koordinatlarıdır. Koordinatlar boşluklarla ayrılır.

İşte 3 noktalı bir segment ve 5 noktalı bir segmentten oluşan iki nesneye sahip tek bir görüntü için YOLO veri kümesi formatının bir örneği.

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 en az 3 xy noktası olmalıdır: <class-index> <x1> <y1> <x2> <y2> <x3> <y3>

Veri Kümesi YAML formatı

Ultralytics çatısı, Bölütleme Modellerini eğitmek için veri seti ve model yapılandırmasını tanımlamak üzere bir YAML dosya biçimi kullanır. İşte bir bölütleme veri setini tanımlamak için kullanılan YAML biçimine bir örnek:

# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/segment/coco8-seg/
# Example usage: yolo train data=coco8-seg.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8-seg ← 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-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
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-seg.zip

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ının bir sözlüğüdür. Adların sırası, YOLO veri kümesi dosyalarındaki nesne sınıfı indekslerinin sırasıyla eşleşmelidir.

Kullanım

Örnek

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-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 segment train data=coco8-seg.yaml model=yolo11n-seg.pt epochs=100 imgsz=640

Desteklenen Veri Kümeleri

Ultralytics YOLO, örnek segmentasyonu görevleri için çeşitli veri kümelerini destekler. İşte en sık kullanılanların bir listesi:

  • COCO: Çok çeşitli kategorilerde 200 binden fazla etiketli görüntü içeren nesne algılama, segmentasyon ve başlık oluşturma 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; Ultralytics deposundaki CI kontrolleri ve iş akışı doğrulaması için idealdir. ultralytics deposu.
  • COCO128-seg: Segmentasyon ek açıklamalarıyla 128 COCO görüntüsünün bir alt kümesini içeren örnek segmentasyonu görevleri için daha küçük bir veri kümesi.
  • Carparts-seg: Otomotiv uygulamaları için ideal olan, araba parçalarının segmentasyonuna odaklanan özel bir veri kümesi. Ayrıntılı araba bileşenleri ek açıklamalarıyla çeşitli araçları içerir.
  • Crack-seg: Çeşitli yüzeylerdeki çatlakların segmentasyonu için uyarlanmış bir veri kümesi. Altyapı bakımı ve kalite kontrolü için gerekli olan bu veri kümesi, yapısal zayıflıkları belirlemek için modelleri eğitmek üzere ayrıntılı görüntüler sağlar.
  • Package-seg: Farklı türde ambalaj malzemelerinin ve şekillerinin segmentasyonuna adanmış bir veri kümesi. Özellikle lojistik ve depo otomasyonu için kullanışlıdır ve paket işleme ve sıralama sistemlerinin geliştirilmesine yardımcı olur.

Kendi veri kümenizi ekleme

Kendi veri kümenize sahipseniz ve bunu Ultralytics YOLO formatıyla segmentasyon modellerini eğitmek için kullanmak istiyorsanız, yukarıda "Ultralytics YOLO formatı" altında belirtilen formata uyduğundan emin olun. Ek açıklamalarınızı 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 formatındaki etiketleri kolayca YOLO formatına 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 kümesini veya COCO formatındaki herhangi bir veri kümesini 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 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.

Otomatik Etiketleme

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

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

Ultralytics çerçevesini kullanarak veri kümenize otomatik olarak ek açıklama eklemek için şunu kullanabilirsiniz: auto_annotate aşağıda gösterildiği gibi işlev görür:

Örnek

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam_b.pt")
Argüman Tür Varsayılan Açıklama
data str gerekli Açıklama veya segmentasyon için hedef resimleri içeren dizine giden yol.
det_model str 'yolo11x.pt' İlk nesne tespiti için YOLO tespit model yolu.
sam_model str 'sam_b.pt' Segmentasyon için SAM model yolu (SAM, SAM2 varyantlarını ve mobile_sam modellerini destekler).
device str '' Hesaplama cihazı (örneğin, 'cuda:0', 'cpu' veya otomatik cihaz algılama için '').
conf float 0.25 Zayıf tespitleri filtrelemek için YOLO tespit güven eşiği.
iou float 0.45 Çakışan kutuları filtrelemek için Non-Maximum Suppression için IoU eşiği.
imgsz int 640 Görüntüleri yeniden boyutlandırmak için giriş boyutu (32'nin katı olmalıdır).
max_det int 300 Bellek verimliliği için görüntü başına maksimum tespit sayısı.
classes list[int] None Algılanacak sınıf indekslerinin listesi (örn., [0, 1] kişi ve bisiklet için).
output_dir str None Açıklamalar için kaydetme dizini (veri yoluna göre varsayılan olarak './labels' olur).

auto_annotate işlevi, resimlerinizin yolunu ve önceden eğitilmiş algılama modellerini belirtmek için isteğe bağlı argümanları alır, örn. YOLO11, YOLOv8 veya diğer modeller ve segmentasyon modelleri, örneğin, SAM, SAM2 veya MobileSAM, modellerin üzerinde çalıştırılacağı cihaz ve açıklamalı sonuçları kaydetmek için çıktı dizini.

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

Veri Kümesi Açıklamalarını Görselleştirin

Modelinizi eğitmeden önce, doğru olduklarından emin olmak için veri kümesi açıklamalarınızı görselleştirmek genellikle yararlıdır. Ultralytics bu amaç için bir yardımcı işlev sağlar:

from ultralytics.data.utils import visualize_image_annotations

label_map = {  # Define the label map with all annotated class labels.
    0: "person",
    1: "car",
}

# Visualize
visualize_image_annotations(
    "path/to/image.jpg",  # Input image path.
    "path/to/annotations.txt",  # Annotation file path for the image.
    label_map,
)

Bu fonksiyon, eğitimden önce herhangi bir açıklama hatasını belirlemenize ve düzeltmenize yardımcı olarak sınıfların adlarıyla nesneleri etiketler, sınırlayıcı kutular çizer ve daha iyi okunabilirlik için metin rengini ayarlar.

Segmentasyon Maskelerini YOLO Biçimine Dönüştürme

İkili biçimde segmentasyon maskeleriniz varsa, bunları şu komutu kullanarak YOLO segmentasyon biçimine dönüştürebilirsiniz:

from ultralytics.data.converter import convert_segment_masks_to_yolo_seg

# For datasets like COCO with 80 classes
convert_segment_masks_to_yolo_seg(masks_dir="path/to/masks_dir", output_dir="path/to/output_dir", classes=80)

Bu araç, ikili maske görüntülerini YOLO segmentasyon biçimine dönüştürür ve belirtilen çıktı dizinine kaydeder.

SSS

Ultralytics YOLO, örnek segmentasyonu için hangi veri kümesi formatlarını destekler?

Ultralytics YOLO, örnek segmentasyonu için çeşitli veri kümesi formatlarını destekler ve birincil format kendi Ultralytics YOLO formatıdır. Veri kümenizdeki her görüntü, sınıf dizinini ve normalleştirilmiş sınırlayıcı koordinatları listeleyen, birden çok satıra (nesne başına bir satır) bölünmüş nesne bilgilerini içeren karşılık gelen bir metin dosyasına ihtiyaç duyar. YOLO veri kümesi formatı hakkında daha ayrıntılı bilgi için Örnek Segmentasyon Veri Kümelerine Genel Bakış bölümünü ziyaret edin.

COCO veri kümesi açıklamalarını YOLO formatına nasıl dönüştürebilirim?

COCO formatındaki açıklamaları YOLO formatına dönüştürmek, Ultralytics araçları kullanılarak basittir. Şunu kullanabilirsiniz: convert_coco işlevini ultralytics.data.converter modülünden:

from ultralytics.data.converter import convert_coco

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

Bu betik, COCO veri kümesi açıklamalarınızı gerekli YOLO formatına dönüştürerek YOLO modellerinizi eğitmek için uygun hale getirir. Daha fazla ayrıntı için Etiket Formatlarını Taşıma veya Dönüştürme bölümüne bakın.

Ultralytics YOLO modellerini eğitmek için nasıl bir YAML dosyası hazırlayabilirim?

Ultralytics ile YOLO modellerini eğitmek için bir YAML dosyası hazırlamak için, veri kümesi yollarını ve sınıf adlarını tanımlamanız gerekir. İşte bir örnek YAML yapılandırması:

# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/segment/coco8-seg/
# Example usage: yolo train data=coco8-seg.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8-seg ← 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-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
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-seg.zip

Yolları ve sınıf adlarını veri kümenize göre güncellediğinizden emin olun. Daha fazla bilgi için Veri Kümesi YAML Formatı bölümüne bakın.

Ultralytics YOLO'daki otomatik etiketleme özelliği nedir?

Ultralytics YOLO'da otomatik açıklama, önceden eğitilmiş bir algılama modeli kullanarak veri kümeniz için segmentasyon açıklamaları oluşturmanıza olanak tanır. Bu, manuel etiketleme ihtiyacını önemli ölçüde azaltır. Şunu kullanabilirsiniz: auto_annotate işlevini aşağıdaki gibi:

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam_b.pt")  # or sam_model="mobile_sam.pt"

Bu fonksiyon, açıklama sürecini otomatikleştirerek daha hızlı ve daha verimli hale getirir. Daha fazla ayrıntı için Otomatik Açıklama Referansı'nı inceleyin.



📅 1 yıl önce oluşturuldu ✏️ 15 gün önce güncellendi

Yorumlar