Ö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:
- 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.
- Nesne başına bir satır: Metin dosyasındaki her satır, resimdeki bir nesne örneğine karşılık gelir.
- 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.