Instance Segmentation Veri Kümelerine Genel Bakış#
Instance segmentation, bir görüntüdeki nesneleri tek tek tanımlamayı ve sınırlarını belirlemeyi içeren bir bilgisayarlı görü görevidir. Bu kılavuz, Ultralytics YOLO tarafından instance segmentation görevleri için desteklenen veri kümesi biçimlerine genel bir bakışın yanı sıra bu veri kümelerini modellerini eğitmek üzere hazırlama, dönüştürme ve kullanma talimatlarını sunar.
Desteklenen Veri Kümesi Formatları#
Ultralytics YOLO formatı#
YOLO segmentation modellerini eğitmek için kullanılan veri kümesi etiket biçimi aşağıdaki gibidir:
- 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.
- Nesne başına bir satır: Metin dosyasındaki her satır, görüntüdeki bir nesne örneğine karşılık gelir.
- Satır başına nesne bilgileri: Her satır, nesne örneği hakkında aşağıdaki bilgileri içerir:
- Nesne sınıfı dizini: Nesnenin sınıfını temsil eden bir tam sayıdır (ör. kişi için 0, araba için 1 vb.).
- Nesne poligon koordinatları: Nesnenin maskesini çizen ve 0 ile 1 arasında normalize edilmiş
(x, y)noktaları.
Segmentasyon veri kümesi dosyasındaki tek bir satırın biçimi aşağıdaki gibidir:
<class-index> <x1> <y1> <x2> <y2> ... <xn> <yn>Bu biçimde <class-index>, nesnenin sınıfının dizinidir ve <x1> <y1> <x2> <y2> ... <xn> <yn>, nesnenin segmentation maskesine ait normalize edilmiş çokgen koordinatlarıdır (değerler, görüntünün genişliği ve yüksekliğine göre [0, 1] içindedir). Koordinatlar boşluklarla ayrılır.
Burada, 3 noktalı bir segment ve 5 noktalı bir segmentten oluşan iki nesne içeren tek bir görüntü için YOLO veri kümesi biçimine bir örnek verilmiştir.
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- Her satırın uzunluğunun eşit olması gerekmez.
- Her segmentasyon etiketi en az 3
(x, y)noktası içermelidir:<class-index> <x1> <y1> <x2> <y2> <x3> <y3> - Her nesnenin bir polygona ihtiyacı vardır. Detect formatındaki satırlar (
<class-index> <x_center> <y_center> <width> <height>) poligon taşımaz ve kutu ile poligon sayıları farklı olan bir segment veri kümesi, etiketleri yüklendiğinde birValueErrorile reddedilir.
Veri Kümesi YAML Biçimi#
Ultralytics framework'ü, segmentation modellerini eğitmek için veri kümesini ve model yapılandırmasını tanımlamak üzere YAML dosya biçimini kullanır. Segmentasyon veri kümesini tanımlamak için kullanılan YAML biçimine bir örnek aşağıda verilmiştir:
# 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.ziptrain, val ve test alanları eğitim, doğrulama ve test görüntülerinin yollarını belirtir. Her biri bir dizini, dizinler 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). Bir *.txt dosyası, bir dizinin alt kümesiyle eğitim yapmak, etiketsiz görüntüleri atlamak veya birden çok kaynaktaki görüntüleri tek bir bölüme birleştirmek için kullanışlıdır.
path: datasets/coco8-seg # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
0: personnames, sınıf adlarından oluşan bir sözlüktür. Adların sırası, YOLO veri kümesi dosyalarındaki nesne sınıfı dizinlerinin sırasıyla eşleşmelidir.
Kullanım#
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-seg.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)Desteklenen Veri Kümeleri#
Ultralytics YOLO, örnek bölütleme görevleri için çeşitli veri kümelerini destekler. İşte en yaygın kullanılanların bir listesi. Bu veri kümelerinin çoğu, görselleri ve etiketlemeleri inceleyebileceğin, veri kümesi istatistiklerini görüntüleyebileceğin ve bulut tabanlı eğitim için bunları kopyalayabileceğin Ultralytics Platform üzerinde de barındırılmaktadır.
- Carparts-seg: Otomotiv uygulamaları için ideal olan, otomobil parçalarının segmentasyonuna odaklanmış özel bir veri kümesidir. Tek tek otomobil bileşenlerine ilişkin ayrıntılı anotasyonlara sahip çeşitli araçlar içerir.
- COCO: nesne algılama, segmentasyon ve görüntü açıklaması için kapsamlı bir veri kümesidir; çok çeşitli kategorilere yayılmış 200 binden fazla etiketli görüntü içerir.
- COCO8-seg: Segmentasyon modeli eğitimini hızlıca test etmek için tasarlanmış, COCO'nun 8 görüntülük kompakt bir alt kümesidir;
ultralyticsdeposundaki CI kontrolleri ve iş akışı doğrulaması için idealdir. - COCO128-seg: instance segmentation görevleri için daha küçük bir veri kümesidir ve segmentasyon anotasyonlarına sahip 128 COCO görüntüsünden oluşan bir alt küme içerir.
- Crack-seg: Çeşitli yüzeylerdeki çatlakların segmentasyonu için hazırlanmış bir veri kümesidir. Altyapı bakımı ve kalite kontrolü için gerekli olan bu veri kümesi, yapısal zayıflıkları tespit etmek üzere modelleri eğitmek için ayrıntılı görüntüler sağlar.
- Package-seg: Farklı tür ve şekillerdeki ambalaj malzemelerinin segmentasyonuna adanmış bir veri kümesidir. Lojistik ve depo otomasyonu için özellikle kullanışlıdır; paket taşıma ve ayırma sistemlerinin geliştirilmesine yardımcı olur.
Kendi veri kümeni ekleme#
Kendi veri kümen varsa ve bunu Ultralytics YOLO biçimiyle segmentation modellerini eğitmek için kullanmak istiyorsan "Ultralytics YOLO format" bölümünde yukarıda belirtilen biçime uyduğundan emin ol. Anotasyonlarını gerekli biçime dönüştür ve yolları, sınıf sayısını ve sınıf adlarını YAML yapılandırma dosyasında belirt. images/ ile labels/ klasörlerini aynı düzeyde, eşleşen alt klasör yapısıyla ayrı tut; etiket .txt dosyalarını görüntü klasörüne yerleştirmek modelin etiketleri gözden kaçırmasına neden olabilir.
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ürebilirsin:
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 biçimindeki herhangi bir veri kümesini Ultralytics YOLO biçimine dönüştürmek için kullanılabilir.
Kullanmak istediğin veri kümesinin modelinle uyumlu olup olmadığını ve gerekli biçim kurallarına uyup uymadığını tekrar kontrol etmeyi unutma. Doğru biçimlendirilmiş veri kümeleri, başarılı segmentation modelleri eğitmek için kritik öneme sahiptir.
Otomatik Anotasyon#
Otomatik anotasyon, önceden eğitilmiş bir algılama modeli kullanarak segmentation veri kümesi oluşturmanı sağlayan temel bir özelliktir. Manuel etiketlemeye gerek kalmadan çok sayıda görüntüyü hızlı ve doğru bir şekilde anotasyonlamana olanak tanıyarak zamandan ve emekten tasarruf sağlar.
Algılama Modeli Kullanarak Segmentasyon Veri Kümesi Oluşturma#
Veri kümeni Ultralytics framework'ünü kullanarak otomatik olarak anotasyonlamak için aşağıda gösterildiği gibi auto_annotate işlevini kullanabilirsin:
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")| Bağımsız değişken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
data | str | gerekli | Açıklama veya segmentasyon için hedef görüntüleri içeren dizinin yolu. |
det_model | str | 'yolo26x.pt' | İlk nesne algılama için YOLO algılama modeli yolu. |
sam_model | str | 'sam_b.pt' | Segmentasyon için SAM modelinin yolu (SAM, SAM 2, MobileSAM ve SAM 3 ağırlıklarını destekler). |
device | str | '' | Hesaplama cihazı (ör. 'cuda:0', 'cpu' veya otomatik cihaz algılama için ''). |
conf | float | 0.25 | Zayıf algılamaları filtrelemek için YOLO algılama güven eşiği. |
iou | float | 0.45 | Örtüşen kutuları filtrelemek için Maksimum Olmayan Bastırma işlemine yönelik 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 algılama sayısı. |
classes | list[int] | None | Algılanacak sınıf dizinlerinin listesi (ör. kişi ve bisiklet için [0, 1]). |
output_dir | str | None | Açıklamalar için kayıt dizini (varsayılan: <data>_auto_annotate_labels ile aynı üst dizindeki kardeş dizin). |
auto_annotate işlevi, görüntülerinin yolunu ve önceden eğitilmiş algılama modellerini (ör. YOLO26, YOLO11 veya diğer modeller), segmentation modellerini (ör. SAM, SAM 2, MobileSAM veya SAM 3), modellerin çalıştırılacağı cihazı ve anotasyonlu sonuçların kaydedileceği çıktı dizinini belirtmek için isteğe bağlı bağımsız değişkenleri alır.
Önceden eğitilmiş modellerin gücünden yararlanan otomatik anotasyon, yüksek kaliteli segmentation veri kümeleri oluşturmak için gereken zamanı ve emeği ö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 kullanışlıdır; manuel anotasyon yerine model geliştirme ve değerlendirmeye odaklanmalarını sağlar.
Veri Kümesi Anotasyonlarını Görselleştirme#
Modelini eğitmeden önce, doğru olduklarından emin olmak için veri kümesi anotasyonlarını görselleştirmek çoğu zaman yararlıdır. Ultralytics bu amaçla 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 işlev sınırlayıcı kutular çizer, nesneleri sınıf adlarıyla etiketler ve daha iyi okunabilirlik için metin rengini ayarlar; böylece eğitimden önce anotasyon hatalarını belirleyip düzeltmene yardımcı olur.
Segmentasyon Maskelerini YOLO Biçimine Dönüştürme#
Segmentasyon maskelerin ikili biçimdeyse bunları aşağıdaki yöntemi kullanarak YOLO segmentasyon biçimine dönüştürebilirsin:
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 yardımcı program, ikili maske görüntülerini YOLO segmentasyon biçimine dönüştürür ve belirtilen çıktı dizinine kaydeder.
SSS#
Ultralytics YOLO, instance segmentation için çeşitli veri kümesi biçimlerini destekler; temel biçim, kendi Ultralytics YOLO biçimidir. Veri kümenizdeki her görüntünün, nesne bilgilerini birden çok satıra bölünmüş şekilde (nesne başına bir satır) içeren ve sınıf dizini ile normalize edilmiş sınırlayıcı koordinatları listeleyen karşılık gelen bir metin dosyası olmalıdır. YOLO veri kümesi biçimiyle ilgili daha ayrıntılı talimatlar için Instance Segmentation Datasets Overview sayfasını ziyaret et.
COCO biçimindeki anotasyonları YOLO biçimine dönüştürmek, Ultralytics araçlarıyla kolaydır.
ultralytics.data.convertermodülündekiconvert_cocoişlevini kullanabilirsin:from ultralytics.data.converter import convert_coco convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)Bu betik, COCO veri kümesi anotasyonlarını gerekli YOLO biçimine dönüştürerek YOLO modellerini eğitmeye uygun hale getirir. Daha fazla bilgi için Port or Convert Label Formats sayfasına başvur.
Ultralytics ile YOLO modellerini eğitmek üzere bir YAML dosyası hazırlamak için veri kümesi yollarını ve sınıf adlarını tanımlaman gerekir. Örnek bir YAML yapılandırması aşağıda verilmiştir:
# 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.zipYolları ve sınıf adlarını veri kümenize göre güncellediğinden emin ol. Daha fazla bilgi için Dataset YAML Format bölümüne bak.
Ultralytics YOLO'daki otomatik anotasyon, önceden eğitilmiş bir algılama modeli kullanarak veri kümen için segmentasyon anotasyonları oluşturmanı sağlar. Bu, manuel etiketleme ihtiyacını önemli ölçüde azaltır.
auto_annotateişlevini aşağıdaki gibi kullanabilirsin:from ultralytics.data.annotator import auto_annotate auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt") # or sam_model="mobile_sam.pt"Bu işlev anotasyon sürecini otomatikleştirerek daha hızlı ve verimli hale getirir. Daha fazla bilgi için Auto-Annotate Reference sayfasını incele.