Ultralytics YOLO27:
Get Started

Her Şeyi Segmentleme Modeli (SAM)#

SAM'in Evrimi

Bu, Meta'nın orijinal SAM modelidir. Gelişmiş özellikler için video segmentasyonu için SAM 2 veya metin ve görsel örnek istemleriyle İstemlenebilir Kavram Segmentasyonu için SAM 3 sayfalarına göz at.

How to use Segment Anything In Colab

Her Şeyi Segmentleme Modeli veya SAM ile görüntü segmentasyonunun sınırlarına hoş geldin. Bu devrim niteliğindeki model, gerçek zamanlı performansla istemlenebilir görüntü segmentasyonunu kullanıma sunarak oyunun kurallarını değiştirdi ve alanda yeni standartlar belirledi.

SAM'a Giriş: Her Şeyi Segmentleme Modeli#

Her Şeyi Segmentleme Modeli veya SAM, görüntü analizi görevlerinde eşsiz bir çok yönlülük sunan ve istemlerle yönlendirilebilen, son teknoloji ürünü bir görüntü segmentasyonu modelidir. SAM, görüntü segmentasyonu için yeni bir model, görev ve veri kümesi sunan çığır açıcı Her Şeyi Segmentleme girişiminin merkezinde yer alır.

SAM'ın gelişmiş tasarımı, önceden bilgi sahibi olmadan yeni görüntü dağılımlarına ve görevlere uyum sağlamasına olanak tanır; bu özellik sıfır atışlı aktarım olarak bilinir. 11 milyon özenle seçilmiş görüntüye dağıtılmış 1 milyardan fazla maske içeren kapsamlı SA-1B veri kümesi üzerinde eğitilen SAM, birçok durumda önceki tam denetimli sonuçları geride bırakarak etkileyici bir sıfır atışlı performans sergiledi.

Otomatik segmentasyon maskeleri içeren SA-1B veri kümesi örneği SA-1B örnek görüntüleri. Yeni kullanıma sunulan SA-1B veri kümesindeki görüntülerin üzerine bindirilmiş maskeler. SA-1B; çeşitli, yüksek çözünürlüklü, lisanslı ve gizliliği koruyan 11 milyon görüntü ile 1,1 milyar yüksek kaliteli segmentasyon maskesi içerir. Bu maskeler SAM tarafından tamamen otomatik olarak etiketlendi ve insan değerlendirmeleri ile çok sayıda deneyde doğrulandığı üzere yüksek kaliteli ve çeşitlidir. Görselleştirme amacıyla görüntüler, görüntü başına maske sayısına göre gruplandırılmıştır (görüntü başına ortalama ∼100 maske vardır).

Her Şeyi Segmentleme Modelinin (SAM) Temel Özellikleri#

  • İstemlenebilir Segmentasyon Görevi: SAM, istemlenebilir bir segmentasyon görevi için tasarlandı ve nesneyi belirten uzamsal veya metinsel ipuçları gibi verilen herhangi bir istemden geçerli segmentasyon maskeleri oluşturabilir.
  • Gelişmiş Mimari: Her Şeyi Segmentleme Modeli; güçlü bir görüntü kodlayıcı, bir istem kodlayıcı ve hafif bir maske kod çözücü kullanır. Bu benzersiz mimari, segmentasyon görevlerinde esnek istemleri, gerçek zamanlı maske hesaplamasını ve belirsizlik farkındalığını mümkün kılar.
  • SA-1B Veri Kümesi: Her Şeyi Segmentleme projesi tarafından tanıtılan SA-1B veri kümesi, 11 milyon görüntüde 1 milyardan fazla maske içerir. Bugüne kadarki en büyük segmentasyon veri kümesi olan SA-1B, SAM'e çeşitli ve büyük ölçekli bir eğitim verisi kaynağı sağlar.
  • Sıfır Atışlı Performans: SAM, çeşitli segmentasyon görevlerinde üstün sıfır atışlı performans sergiler ve istem mühendisliğine çok az ihtiyaç duyarak çeşitli uygulamalarda hemen kullanılabilir.

Her Şeyi Segmentleme Modeli ve SA-1B veri kümesi hakkında ayrıntılı bilgi için Segment Anything GitHub sayfasını ziyaret et ve Segment Anything araştırma makalesine göz at.

Ultralytics Platform'da SAM

SAM, Ultralytics Platform üzerindeki akıllı etiketleme özelliğine güç vererek hızlı veri kümesi etiketleme için tıklamayla çalışan akıllı maskeleme sağlar. Ayrıntılar için etiketleme kılavuzuna göz at.

Kullanılabilir Modeller, Desteklenen Görevler ve Çalışma Modları#

Bu tabloda, kullanılabilir modeller ve ilgili önceden eğitilmiş ağırlıklar, destekledikleri görevler ve Çıkarım, Doğrulama, Eğitim ve Dışa Aktarma gibi farklı çalışma modlarıyla uyumlulukları gösterilir; desteklenen modlar ✅, desteklenmeyen modlar ise ❌ emojileriyle belirtilir.

Model TürüÖnceden Eğitilmiş AğırlıklarDesteklenen GörevlerEğitimDoğrulamaÇıkarımDışa aktar
SAM temelsam_b.ptÖrnek Segmentasyonu❌❌✅❌
SAM büyüksam_l.ptÖrnek Segmentasyonu❌❌✅❌

SAM Nasıl Kullanılır: Görüntü Segmentasyonunda Çok Yönlülük ve Güç#

Her Şeyi Segmentleme Modeli, eğitim verilerinin ötesine geçen çok sayıda aşağı akış görevinde kullanılabilir. Bu görevler arasında kenar algılama, nesne önerisi oluşturma, örnek segmentasyonu ve ön metinden maskeye tahmini yer alır. İstem mühendisliği sayesinde SAM, yeni görevlere ve veri dağılımlarına sıfır atışlı biçimde hızla uyum sağlayabilir ve böylece tüm görüntü segmentasyonu ihtiyaçların için çok yönlü ve güçlü bir araç hâline gelir.

SAM tahmin örneği#

İstemlerle segmentasyon

Verilen istemlerle görüntüyü segmentlere ayır.

from ultralytics import SAM

# Bir model yükle
model = SAM("sam_b.pt")

# Model bilgilerini görüntüle (isteğe bağlı)
model.info()

# bbox istemiyle çıkarım çalıştır
results = model("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# tek noktayla çıkarım çalıştır
results = model(points=[900, 370], labels=[1])

# birden çok noktayla çıkarım çalıştır
results = model(points=[[400, 370], [900, 370]], labels=[1, 1])

# her nesne için birden çok nokta istemiyle çıkarım çalıştır
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# negatif nokta istemiyle çıkarım çalıştır
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])
Her şeyi segmentlere ayır

Görüntünün tamamını segmentlere ayır.

from ultralytics import SAM

# Bir model yükle
model = SAM("sam_b.pt")

# Model bilgilerini görüntüle (isteğe bağlı)
model.info()

# Çıkarımı çalıştır
model("path/to/image.jpg")
  • Buradaki mantık, herhangi bir istem (bboxes/points/masks) iletmediğinde görüntünün tamamını segmentlere ayırmaktır.
SAMPredictor örneği

Bu yöntemle görüntüyü bir kez ayarlayabilir ve görüntü kodlayıcısını tekrar tekrar çalıştırmadan istemlerle birden fazla çıkarım yapabilirsin.

import cv2

from ultralytics.models.sam import Predictor as SAMPredictor

# SAMPredictor oluştur
overrides = {"conf": 0.25, "task": "segment", "mode": "predict", "imgsz": 1024, "model": "mobile_sam.pt"}
predictor = SAMPredictor(overrides=overrides)

# Görüntüyü ayarla
predictor.set_image("ultralytics/assets/zidane.jpg")  # Görüntü dosyasıyla ayarla
predictor.set_image(cv2.imread("ultralytics/assets/zidane.jpg"))  # np.ndarray ile ayarla
results = predictor(bboxes=[439, 437, 524, 709])

# Tek nokta istemiyle çıkarım yap
results = predictor(points=[900, 370], labels=[1])

# Birden fazla nokta istemiyle çıkarım yap
results = predictor(points=[[400, 370], [900, 370]], labels=[1, 1])

# negatif nokta istemiyle çıkarım çalıştır
results = predictor(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

# Görüntüyü sıfırla
predictor.reset_image()

Ek bağımsız değişkenlerle her şeyi segmentlere ayır.

from ultralytics.models.sam import Predictor as SAMPredictor

# SAMPredictor oluştur
overrides = {"conf": 0.25, "task": "segment", "mode": "predict", "imgsz": 1024, "model": "mobile_sam.pt"}
predictor = SAMPredictor(overrides=overrides)

# Ek bağımsız değişkenlerle segmentlere ayır
results = predictor(source="ultralytics/assets/zidane.jpg", crop_n_layers=1, points_stride=64, min_mask_region_area=100)
Not

Yukarıdaki örneklerde döndürülen tüm results öğeleri, tahmin edilen maskelere ve kaynak görüntüye kolayca erişmeni sağlayan Results nesneleridir.

SAM ve YOLO Karşılaştırması#

Burada Meta'nın SAM-b modelini, YOLO26n-seg dâhil Ultralytics segmentasyon modelleriyle karşılaştırıyoruz:

ModelBoyut
(MB)
Parametreler
(M)
Hız (CPU)
(ms/görüntü)
Meta SAM-b37593.741703
MobileSAM40.710.123802
FastSAM-s ve YOLOv8 omurgası23.911.858.0
Ultralytics YOLOv8n-seg7.1 (52.8 kat daha küçük)3.4 (27.6 kat daha az)24.8 (1682 kat daha hızlı)
Ultralytics YOLO11n-seg6.2 (60.5 kat daha küçük)2.9 (32.3 kat daha az)24.3 (1716 kat daha hızlı)
Ultralytics YOLO26n-seg6.7 (56.0 kat daha küçük)2.7 (34.7 kat daha az)25.2 (1655 kat daha hızlı)

Bu karşılaştırma, SAM varyantları ile YOLO segmentasyon modelleri arasındaki model boyutu ve hız farklarının ne kadar büyük olduğunu gösteriyor. SAM, kendine özgü otomatik segmentasyon yetenekleri sunarken YOLO modelleri, özellikle YOLOv8n-seg, YOLO11n-seg ve YOLO26n-seg, önemli ölçüde daha küçük, daha hızlı ve hesaplama açısından daha verimlidir.

SAM hızları PyTorch, YOLO hızları ise ONNX Runtime kullanılarak ölçülmüştür. Testler, 16 GB RAM'e sahip 2025 Apple M4 Air üzerinde torch==2.10.0, ultralytics==8.4.31 ve onnxruntime==1.24.4 kullanılarak gerçekleştirilmiştir. Bu testi tekrarlamak için:

Örnek
from ultralytics import ASSETS, SAM, YOLO, FastSAM

# SAM-b, MobileSAM profillerini çıkar
for file in ["sam_b.pt", "mobile_sam.pt"]:
    model = SAM(file)
    model.info()
    model(ASSETS)

# FastSAM-s profili oluştur
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)

# YOLO modellerinin profilini çıkar (ONNX)
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt", "yolo26n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    onnx_path = model.export(format="onnx", dynamic=True, nms=False)  # YOLO26 NMS içermeyen başlık; YOLOv8/YOLO11 için işlem yapmaz
    model = YOLO(onnx_path)
    model(ASSETS)

Otomatik Etiketleme: Segmentasyon Veri Kümelerine Hızlı Bir Yol#

Otomatik etiketleme, kullanıcıların önceden eğitilmiş bir algılama modeliyle segmentasyon veri kümesi oluşturmasını sağlayan, SAM'in temel bir özelliğidir. Bu özellik, zaman alan manuel etiketleme ihtiyacını ortadan kaldırarak çok sayıda görüntünün hızlı ve doğru biçimde etiketlenmesini sağlar.

Algılama Modeliyle Segmentasyon Veri Kümeni Oluştur#

Veri kümeni Ultralytics çerçevesiyle otomatik olarak etiketlemek için aşağıda gösterildiği gibi auto_annotate işlevini kullan:

Örnek
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şkenTürVarsayılanAçıklama
datastrgerekliEtiketleme veya bölümleme için hedef görüntüleri içeren dizinin yolu.
det_modelstr'yolo26x.pt'İlk nesne algılama için YOLO algılama modelinin yolu.
sam_modelstr'sam_b.pt'Bölümleme için SAM modelinin yolu (SAM, SAM 2, MobileSAM ve SAM 3 ağırlıklarını destekler).
devicestr''Hesaplama aygıtı (ör. 'cuda:0', 'cpu' veya aygıtın otomatik algılanması için '').
conffloat0.25Zayıf algılamaları filtrelemek için YOLO algılama güven eşiği.
ioufloat0.45Çakışan kutuları filtrelemek için Maksimum Olmayan Bastırma IoU eşiği.
imgszint640Görüntüleri yeniden boyutlandırmak için giriş boyutu (gerekirse 32'nin bir üst katına yuvarlanır).
max_detint300Bellek verimliliği için görüntü başına maksimum algılama sayısı.
classeslist[int]NoneAlgılanacak sınıf indekslerinin listesi (ör. kişi ve bisiklet için [0, 1]).
output_dirstrNoneEtiketler için kayıt dizini (varsayılan: kardeş dizin <data>_auto_annotate_labels).

auto_annotate işlevi, görüntülerinin yolunu alır. Ayrıca önceden eğitilmiş algılama ve SAM segmentasyon modellerini, modellerin çalıştırılacağı cihazı ve etiketlenmiş sonuçların kaydedileceği çıktı dizinini belirten isteğe bağlı bağımsız değişkenler de alır.

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

Atıflar ve Teşekkürler#

SAM'i araştırma veya geliştirme çalışmalarında yararlı buluyorsan makaleye atıfta bulunmanı öneririz:

Alıntı
@misc{kirillov2023segment,
      title={Segment Anything},
      author={Alexander Kirillov and Eric Mintun and Nikhila Ravi and Hanzi Mao and Chloe Rolland and Laura Gustafson and Tete Xiao and Spencer Whitehead and Alexander C. Berg and Wan-Yen Lo and Piotr Dollár and Ross Girshick},
      year={2023},
      eprint={2304.02643},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

Bilgisayarlı görü topluluğu için bu değerli kaynağı oluşturup sürdürdükleri için Meta AI'a teşekkür ederiz.

Sık Sorulan Sorular#

  • Meta'nın Her Şeyi Segmentleme Modeli (SAM), istemlenebilir segmentasyon görevleri için tasarlanmış, devrim niteliğinde bir görüntü segmentasyonu modelidir. Görüntü ve istem kodlayıcılarını hafif bir maske kod çözücüyle birleştiren gelişmiş mimarisi sayesinde uzamsal veya metinsel ipuçları gibi çeşitli istemlerden yüksek kaliteli segmentasyon maskeleri oluşturur. Kapsamlı SA-1B veri kümesi üzerinde eğitilen SAM, önceden bilgi sahibi olmadan yeni görüntü dağılımlarına ve görevlere uyum sağlayarak sıfır atışlı performansta öne çıkar.

  • Her Şeyi Segmentleme Modeli (SAM) ile sınırlayıcı kutular veya noktalar gibi çeşitli istemleri kullanarak çıkarım yapabilir ve görüntü segmentasyonu gerçekleştirebilirsin. Python kullanarak bir örnek:

    from ultralytics import SAM
    
    # Bir model yükle
    model = SAM("sam_b.pt")
    
    # Sınırlayıcı kutu istemiyle bölümle
    model("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])
    
    # Nokta istemiyle segmentlere ayır
    model("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])
    
    # Birden fazla nokta istemiyle segmentlere ayır
    model("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])
    
    # Nesne başına birden fazla nokta istemiyle segmentlere ayır
    model("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])
    
    # Negatif nokta istemiyle segmentlere ayır.
    model("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

    Alternatif olarak SAM ile komut satırı arayüzünde (CLI) çıkarım yapabilirsin:

    yolo predict model=sam_b.pt source=path/to/image.jpg

    Ayrıntılı kullanım talimatları için Segmentasyon bölümünü ziyaret et.

  • YOLO modelleriyle karşılaştırıldığında SAM-b, MobileSAM ve FastSAM-s gibi SAM çeşitleri genellikle daha büyük ve yavaştır; ancak benzersiz sıfır atışlı segmentasyon özellikleri sunar. Örneğin YOLO26n-seg, CPU üzerinde Meta'nın orijinal SAM-b modelinden 56 kat daha küçüktür ve 1650 kattan fazla daha hızlıdır. Bu nedenle YOLO modelleri hızlı, hafif ve hesaplama açısından verimli segmentasyon gerektiren uygulamalar için idealdir; SAM modelleri ise esnek, istemlenebilir ve sıfır atışlı segmentasyon görevlerinde öne çıkar.

  • Ultralytics SAM, önceden eğitilmiş bir algılama modeliyle segmentasyon veri kümeleri oluşturmanı sağlayan bir otomatik etiketleme özelliği sunar. Python ile bir örnek:

    from ultralytics.data.annotator import auto_annotate
    
    auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")

    Bu işlev, görüntülerinin yolunu ve önceden eğitilmiş algılama ile SAM segmentasyon modelleri için isteğe bağlı bağımsız değişkenleri; ayrıca cihaz ve çıktı dizini ayarlarını alır. Eksiksiz bir kılavuz için Otomatik Etiketleme sayfasına göz at.

  • SAM, 11 milyon görüntüde 1 milyardan fazla maske içeren kapsamlı SA-1B veri kümesi üzerinde eğitilir. Bugüne kadarki en büyük segmentasyon veri kümesi olan SA-1B, yüksek kaliteli ve çeşitli eğitim verileri sunarak farklı segmentasyon görevlerinde etkileyici sıfır atışlı performans sağlar. Daha fazla bilgi için Veri Kümesi bölümünü ziyaret et.

Yorumlar