YOLO Vision 2026:

Segment Anything Model (SAM)#

SAM Evrimi

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

How to use Segment Anything In Colab

Segment Anything Model veya kısaca SAM ile görüntü segmentasyonu dünyasının sınırlarına hoş geldin. Bu devrim niteliğindeki model, gerçek zamanlı performansla istem tabanlı görüntü segmentasyonunu sunarak ezber bozmuş ve alanda yeni standartlar belirlemiştir.

SAM'e Giriş: Segment Anything Model#

Segment Anything Model veya kısa adıyla SAM, görüntü analizi görevlerinde eşsiz bir esneklik sağlayan, istemli segmentasyona izin veren en gelişmiş görüntü segmentasyon modelidir. SAM, görüntü segmentasyonu için yeni bir model, görev ve veri kümesi sunan çığır açıcı bir proje olan Segment Anything girişiminin kalbini oluşturur.

SAM'in gelişmiş tasarımı, sıfır vuruşlu aktarım (zero-shot transfer) olarak bilinen bir özellik sayesinde önceden bilgi sahibi olmadan yeni görüntü dağılımlarına ve görevlerine uyum sağlamasına olanak tanır. 11 milyon özenle seçilmiş görüntüye yayı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 vuruş performansı sergilemiştir.

Otomatik segmentasyon maskelerine sahip SA-1B veri kümesi örneği SA-1B Örnek Görüntüleri. Yeni tanıtılan SA-1B veri kümesinden maskelerin üzerine bindirildiği veri kümesi görüntüleri. SA-1B, 11 milyon farklı, yüksek çözünürlüklü, lisanslı ve gizliliği koruyan görüntü ile 1,1 milyar yüksek kaliteli segmentasyon maskesi içerir. Bu maskeler SAM tarafından tamamen otomatik olarak açıklanmış olup insan puanlamaları ve numerosos deneylerle doğrulandığı üzere yüksek kalite ve çeşitliliğe sahiptir. Görselleştirme için 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 yaklaşık 100 maske düşmektedir).

Segment Anything Model'in (SAM) Temel Özellikleri#

  • İstemli Segmentasyon Görevi: SAM, belirli bir nesneyi tanımlayan uzamsal veya metinsel ipuçları gibi herhangi bir istemden geçerli segmentasyon maskeleri oluşturmasına olanak tanıyan, istemli segmentasyon görevi düşünülerek tasarlanmıştır.
  • Gelişmiş Mimari: Segment Anything Model; 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 istem oluşturmaya, gerçek zamanlı maske hesaplamasına ve belirsizlik farkındalığına olanak tanır.
  • SA-1B Veri Kümesi: Segment Anything projesi tarafından tanıtılan SA-1B veri kümesi, 11 milyon görüntü üzerinde 1 milyardan fazla maske içerir. Bugüne kadarki en büyük segmentasyon veri kümesi olarak, SAM'e çeşitli ve büyük ölçekli bir eğitim verisi kaynağı sağlar.
  • Sıfır Vuruş Performansı: SAM, çeşitli segmentasyon görevlerinde olağanüstü bir sıfır vuruş performansı sergileyerek istem mühendisliğine çok az ihtiyaç duyulmasını sağlar ve farklı uygulamalar için hemen kullanılabilen bir araç haline gelir.

Segment Anything Model ve SA-1B veri kümesi hakkında derinlemesine bir inceleme için lütfen Segment Anything GitHub sayfasını ziyaret et ve Segment Anything araştırma makalesine göz at.

Ultralytics Platform üzerinde SAM

SAM, Ultralytics Platform üzerindeki akıllı etiketleme özelliğine güç verir ve hızlı veri seti etiketleme için tıklama tabanlı akıllı maskelemeyi mümkün kılar. Ayrıntılar için etiketleme kılavuzuna bakın.

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

Bu tablo, desteklenen modlar için ✅ emojileri ve desteklenmeyen modlar için ❌ emojileriyle belirtilen şekilde, mevcut modelleri özel ön 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ıyla birlikte sunar.

Model TipiÖnceden Eğitilmiş AğırlıklarDesteklenen GörevlerEğitimDoğrulamaÇıkarımDışa Aktar (Export)
SAM basesam_b.ptÖrnek Bölütleme
SAM largesam_l.ptÖrnek Bölütleme

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

Segment Anything Model, eğitim verilerinin ötesine geçen çok sayıda alt görev için kullanılabilir. Bunlar arasında kenar algılama, nesne önerisi üretimi, örnek segmentasyonu ve ön metinden maskeye tahmin yer alır. İstem mühendisliği ile SAM, sıfır vuruşlu bir şekilde yeni görevlere ve veri dağılımlarına hızla uyum sağlayarak tüm görüntü segmentasyonu ihtiyaçların için çok yönlü ve güçlü bir araç haline gelir.

SAM tahmin örneği#

İstemlerle segmentasyon

Verilen istemlerle görüntüyü segmente et.

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Display model information (optional)
model.info()

# Run inference with bboxes prompt
results = model("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Run inference with single point
results = model(points=[900, 370], labels=[1])

# Run inference with multiple points
results = model(points=[[400, 370], [900, 370]], labels=[1, 1])

# Run inference with multiple points prompt per object
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Run inference with negative points prompt
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])
Her şeyi segmente et

Tüm görüntüyü segmente et.

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Display model information (optional)
model.info()

# Run inference
model("path/to/image.jpg")
  • Buradaki mantık, herhangi bir istem (bbox'lar/noktalar/maskeler) girmediğin takdirde tüm görüntüyü segmente etmektir.
SAMPredictor örneği

Bu şekilde görüntüyü bir kez ayarlayabilir ve görüntü kodlayıcıyı defalarca çalıştırmadan istem çıkarımını birden çok kez yapabilirsin.

import cv2

from ultralytics.models.sam import Predictor as SAMPredictor

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

# Set image
predictor.set_image("ultralytics/assets/zidane.jpg")  # set with image file
predictor.set_image(cv2.imread("ultralytics/assets/zidane.jpg"))  # set with np.ndarray
results = predictor(bboxes=[439, 437, 524, 709])

# Run inference with single point prompt
results = predictor(points=[900, 370], labels=[1])

# Run inference with multiple points prompt
results = predictor(points=[[400, 370], [900, 370]], labels=[1, 1])

# Run inference with negative points prompt
results = predictor(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

# Reset image
predictor.reset_image()

Ek argümanlarla her şeyi segmente et.

from ultralytics.models.sam import Predictor as SAMPredictor

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

# Segment with additional args
results = predictor(source="ultralytics/assets/zidane.jpg", crop_n_layers=1, points_stride=64)
Not

Yukarıdaki örneklerde döndürülen tüm results nesneleri, 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 dahil olmak üzere Ultralytics segmentasyon modelleriyle karşılaştırıyoruz:

ModelBoyut
(MB)
Parametreler
(M)
Hız (CPU)
(ms/im)
Meta SAM-b37593.741703
MobileSAM40.710.123802
YOLOv8 omurgasına sahip FastSAM-s23.911.858.0
Ultralytics YOLOv8n-seg7.1 (52.8x daha küçük)3.4 (27.6x daha az)24.8 (1682x daha hızlı)
Ultralytics YOLO11n-seg6.2 (60.5x daha küçük)2.9 (32.3x daha az)24.3 (1716x daha hızlı)
Ultralytics YOLO26n-seg6.7 (56.0x daha küçük)2.7 (34.7x daha az)25.2 (1655x daha hızlı)

Bu karşılaştırma, SAM varyantları ile YOLO segmentasyon modelleri arasındaki model boyutları ve hızlarındaki önemli farkları göstermektedir. SAM benzersiz 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 ile, YOLO hızları ise ONNX Runtime ile ölçülmüştür. Testler, torch==2.10.0, ultralytics==8.4.31 ve onnxruntime==1.24.4 kullanılarak 16 GB RAM'e sahip 2025 Apple M4 Air üzerinde çalıştırılmıştır. Bu testi yeniden üretmek için:

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

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

# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)

# Profile YOLO models (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)
    model = YOLO(onnx_path)
    model(ASSETS)

Otomatik Açıklama (Auto-Annotation): Segmentasyon Veri Kümelerine Hızlı Bir Yol#

Otomatik açıklama (auto-annotation), SAM'in temel bir özelliğidir ve kullanıcıların ön eğitilmiş bir algılama modeli kullanarak bir segmentasyon veri kümesi oluşturmasına olanak tanır. Bu özellik, zaman alıcı manuel etiketleme ihtiyacını ortadan kaldırarak çok sayıda görüntünün hızlı ve doğru bir şekilde açıklanmasını sağlar.

Bir Tespit Modeli Kullanarak Segmentasyon Veri Kümeni Oluştur#

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

Örnek
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")
ArgümanTipVarsayılanAçıklama
datastrgerekliAçıklama veya segmentasyon için hedef görüntüleri içeren dizinin yolu.
det_modelstr'yolo26x.pt'İlk nesne tespiti için YOLO tespit modeli yolu.
sam_modelstr'sam_b.pt'Segmentasyon için SAM model yolu (SAM, SAM 2, MobileSAM ve SAM 3 ağırlıklarını destekler).
devicestr''Hesaplama cihazı (örneğin, 'cuda:0', 'cpu' veya otomatik cihaz tespiti için boş bırak).
conffloat0.25Zayıf algılamaları filtrelemek için YOLO algılama güven eşiği.
ioufloat0.45Çakışan kutuları filtrelemek için Non-Maximum Suppression (NMS) IoU eşiği.
imgszint640Görüntüleri yeniden boyutlandırmak için giriş boyutu (32'nin katı olmalıdı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 (örn. insan ve bisiklet için [0, 1]).
output_dirstrNoneAçıklamalar için kaydetme dizini (varsayılan: <data>_auto_annotate_labels kardeşi).

auto_annotate fonksiyonu, ön eğitilmiş algılama ve SAM segmentasyon modellerini belirtmek için isteğe bağlı argümanlar, modellerin çalıştırılacağı cihaz ve açıklanan sonuçların kaydedileceği çıktı dizini ile birlikte görüntülerinin yolunu alır.

Önceden eğitilmiş modellerle 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 resim koleksiyonlarıyla uğraşan araştırmacılar ve geliştiriciler için faydalıdır, çünkü manuel açıklama yerine model geliştirme ve değerlendirmeye odaklanmalarını sağlar.

Alıntılar ve Teşekkür#

SAM'i araştırma veya geliştirme çalışmalarında faydalı buluyorsan, lütfen makalemize atıfta bulunmayı düşün:

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}
}

Bilgisayarla görü topluluğu için bu değerli kaynağı oluşturduğu ve sürdürdüğü için Meta AI'a teşekkürlerimizi sunarız.

SSS#

Ultralytics tarafından sunulan Segment Anything Model (SAM) nedir?#

Ultralytics tarafından geliştirilen Segment Anything Model (SAM), istem tabanlı segmentasyon görevleri için tasarlanmış devrim niteliğinde bir görüntü segmentasyon modelidir. Konumsal veya metin ipuçları gibi çeşitli ipuçlarından yüksek kaliteli segmentasyon maskeleri üretmek için hafif bir maske çözücü ile birleştirilmiş görüntü ve istem kodlayıcıları dahil olmak üzere gelişmiş mimariden yararlanır. Kapsamlı SA-1B veri kümesi üzerinde eğitilen SAM, önceden bilgi sahibi olmadan yeni görüntü dağılımlarına ve görevlerine uyum sağlayarak sıfır vuruş performansında mükemmeldir.

Segment Anything Model (SAM) modelini görüntü segmentasyonu için nasıl kullanabilirim?#

Segment Anything Model (SAM) modelini, sınırlayıcı kutular veya noktalar gibi çeşitli istemlerle çıkarım (inference) çalıştırarak görüntü segmentasyonu için kullanabilirsin. İşte Python kullanan bir örnek:

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Segment with bounding box prompt
model("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Segment with points prompt
model("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

# Segment with multiple points prompt
model("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])

# Segment with multiple points prompt per object
model("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Segment with negative points prompt.
model("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Alternatif olarak, komut satırı arayüzünde (CLI) SAM ile çıkarım çalıştırabilirsin:

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

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

SAM ve YOLO modelleri performans açısından nasıl karşılaştırılır?#

YOLO modelleriyle karşılaştırıldığında SAM-b, MobileSAM ve FastSAM-s gibi SAM varyantları tipik olarak daha büyük ve daha yavaştır ancak benzersiz sıfır vuruşlu segmentasyon yetenekleri sunar. Örneğin, YOLO26n-seg, CPU üzerinde Meta'nın orijinal SAM-b modelinden 56 kat daha küçük ve 1650 kattan daha hızlıdır. Bu, YOLO modellerini hızlı, hafif ve hesaplama açısından verimli segmentasyon gerektiren uygulamalar için ideal kılarken, SAM modelleri esnek, istem tabanlı ve sıfır vuruşlu segmentasyon görevlerinde öne çıkar.

Veri kümemi SAM kullanarak nasıl otomatik olarak açıklayabilirim?#

Ultralytics'in SAM'i, önceden eğitilmiş bir algılama modeli kullanarak segmentasyon veri kümeleri oluşturmana olanak tanıyan bir otomatik açıklama özelliği sunar. İşte Python'da 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 fonksiyon, ön eğitilmiş algılama ve SAM segmentasyon modelleri için isteğe bağlı argümanların yanı sıra cihaz ve çıktı dizini belirtimleriyle birlikte görüntülerinin yolunu alır. Eksiksiz bir kılavuz için Otomatik Açıklama bölümüne bak.

Segment Anything Model (SAM) eğitilirken hangi veri kümeleri kullanılır?#

SAM, 11 milyon görüntü genelinde 1 milyardan fazla maske içeren kapsamlı SA-1B veri kümesi üzerinde eğitilmiştir. SA-1B, bugüne kadarki en büyük segmentasyon veri kümesidir; yüksek kaliteli ve çeşitli eğitim verileri sağlayarak çeşitli segmentasyon görevlerinde etkileyici bir sıfır vuruş performansı garanti eder. Daha fazla ayrıntı için Veri Kümesi bölümünü ziyaret et.

Yorumlar