Ultralytics YOLO27:

Her Şeyi Segmentleme Modeli (SAM)#

SAM Evrimi

Bu, Meta'nın geliştirdiği özgün SAM modelidir. Gelişmiş yetenekler için video segmentasyonu amacıyla SAM 2 veya metin ve görüntü örneği istemleriyle İstemle Yapılabilir Kavram Segmentasyonu için SAM 3 sayfalarına bak.

How to use Segment Anything In Colab

Her Şeyi Segmentleme Modeli veya SAM ile görüntü segmentasyonu alanında öncü teknolojiye hoş geldin. Bu devrim niteliğindeki model, gerçek zamanlı performansla istem tabanlı 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, istem tabanlı segmentasyon sağlayan ve görüntü analizi görevlerinde benzersiz bir çok yönlülük sunan son teknoloji bir 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 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. Dikkatle seçilmiş 11 milyon görüntüye yayılmış 1 milyardan fazla maske içeren kapsamlı SA-1B veri kümesi üzerinde eğitilen SAM, önceki tam denetimli sonuçları birçok durumda geride bırakarak etkileyici sıfır atışlı performans sergilemiştir.

Otomatik segmentasyon maskelerine sahip SA-1B veri kümesi örneği SA-1B örnek görüntüleri. Yeni sunulan SA-1B veri kümesindeki veri kümesi görüntüleri maskelerle kaplanmıştır. 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 etiketlenmiş ve insan değerlendirmeleri ile çok sayıda deneyle doğrulandığı üzere yüksek kalite ve çeşitliliğe sahiptir. 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 (ortalama olarak görüntü başına yaklaşık ∼100 maske bulunur).

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

  • İstem Tabanlı Segmentasyon Görevi: SAM, istem tabanlı bir segmentasyon görevi düşünülerek tasarlanmıştır ve bir nesneyi tanımlayan 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ı, istem kodlayıcı ve hafif bir maske kod çözücü kullanır. Bu benzersiz mimari, segmentasyon görevlerinde esnek istem oluşturmayı, gerçek zamanlı maske hesaplamayı ve belirsizlik farkındalığını mümkün kılar.
  • SA-1B Veri Kümesi: Segment Anything projesi tarafından sunulan 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 Atışlı Performans: SAM, çeşitli segmentasyon görevlerinde olağanüstü sıfır atışlı performans sergiler ve istem mühendisliği ihtiyacını en aza indirerek farklı uygulamalarda kullanıma hazır bir araç olur.

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

Ultralytics Platformunda SAM

SAM, hızlı veri kümesi etiketleme için tıklama tabanlı akıllı maskelemeyi etkinleştirerek Ultralytics Platform üzerindeki akıllı açıklama özelliğine güç verir. Ayrıntılar için açıklama kılavuzuna bak.

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

Bu tabloda, belirli önceden eğitilmiş ağırlıklarıyla kullanılabilir modeller, 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 aktarma
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 çeşitli alt görevlerde kullanılabilir. Bunlar arasında kenar algılama, nesne önerisi oluşturma, örnek segmentasyonu ve ön metinden maskeye tahmini bulunur. İ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; bu da onu tüm görüntü segmentasyonu ihtiyaçların için çok yönlü ve güçlü bir araç haline getirir.

SAM tahmin örneği#

İstemlerle segmentasyon

Görüntüyü verilen istemlerle segmentlere ayır.

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 segmentle

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

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) iletilmezse görüntünün tamamını segmentlere ayırmaktır.
SAMPredictor örneği

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

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 bağımsız değişkenlerle her şeyi segmentle.

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, min_mask_region_area=100)
Not

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

SAM ile 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ı ile FastSAM-s23.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 boyutları ve hızlardaki önemli farkları ortaya koyar. SAM benzersiz otomatik segmentasyon yetenekleri sunarken, özellikle YOLOv8n-seg, YOLO11n-seg ve YOLO26n-seg olmak üzere YOLO modelleri ö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 yeniden oluşturmak 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, nms=False)  # YOLO26 NMS-free head; no-op for YOLOv8/YOLO11
    model = YOLO(onnx_path)
    model(ASSETS)

Otomatik Açıklama: Segmentasyon Veri Kümelerine Hızlı Bir Yol#

Otomatik açıklama, kullanıcıların önceden eğitilmiş bir algılama modeli kullanarak bir segmentasyon veri kümesi oluşturmasına olanak tanıyan 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 açıklanmasını sağlar.

Algılama 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 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
datastrgerekliAçıklama veya segmentasyon için hedef görüntüleri içeren dizinin yolu.
det_modelstr'yolo26x.pt'İlk nesne algılama için YOLO algılama modeli yolu.
sam_modelstr'sam_b.pt'Segmentasyon için SAM modelinin yolu (SAM, SAM 2, MobileSAM ve SAM 3 ağırlıklarını destekler).
devicestr''Hesaplama cihazı (ör. 'cuda:0', 'cpu' veya otomatik cihaz algılama için '').
conffloat0.25Zayıf algılamaları filtrelemek için YOLO algılama güven eşiği.
ioufloat0.45Örtüşen kutuları filtrelemek için Maksimum Olmayan Bastırma işlemine yönelik 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 dizinlerinin listesi (ör. kişi ve bisiklet için [0, 1]).
output_dirstrNoneAçı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 alır; önceden eğitilmiş algılama ve SAM segmentasyon modellerini, modellerin çalıştırılacağı cihazı ve açıklamalı sonuçların kaydedileceği çıktı dizinini belirtmek için isteğe bağlı bağımsız değişkenler sunar.

Ö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, büyük görüntü koleksiyonlarıyla çalışan araştırmacılar ve geliştiriciler için özellikle yararlıdır; manuel açıklama yerine model geliştirme ve değerlendirmeye odaklanmalarını sağlar.

Atıflar ve Teşekkürler#

SAM modelini araştırmanda veya geliştirme çalışmanda faydalı bulursan, lütfen makaleyi alıntılamayı 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}
}

Bu değerli kaynağı bilgisayarlı görü topluluğu için oluşturduğu ve sürdürdüğü için Meta AI'a minnettarlığımızı ifade etmek isteriz.

SSS#

  • Meta's Segment Anything Model (SAM), komut istemine dayalı segmentasyon görevleri için tasarlanmış devrim niteliğinde bir görüntü segmentasyon modelidir. Model, uzamsal veya metin ipuçları gibi çeşitli komut istemlerinden yüksek kaliteli segmentasyon maskeleri üretmek için hafif bir maske çözücü ile birleştirilmiş görüntü ve komut istemi kodlayıcıları dahil olmak üzere gelişmiş mimariden yararlanır. Kapsamlı SA-1B dataset ü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 atış performansında üstündür.

  • Her Şeyi Segmentleme Modelini (SAM), sınırlayıcı kutular veya noktalar gibi çeşitli istemlerle çıkarım çalıştırarak görüntü segmentasyonu için kullanabilirsin. Python kullanan bir örneği burada bulabilirsin:

    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 SAM ile çıkarımı komut satırı arayüzünde (CLI) ç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.

  • YOLO modelleriyle karşılaştırıldığında SAM-b, MobileSAM ve FastSAM-s gibi SAM varyantları genellikle daha büyük ve daha yavaştır, ancak benzersiz sıfır atışlı segmentasyon yetenekleri sunar. Örneğin YOLO26n-seg, CPU üzerinde Meta'nın özgün 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 atışlı segmentasyon görevlerinde üstün performans gösterir.

  • Ultralytics'in SAM'i, önceden eğitilmiş bir algılama modeli kullanarak segmentasyon veri kümeleri oluşturmaya olanak tanıyan bir otomatik açıklama özelliği sunar. Python'da bir örneği burada bulabilirsin:

    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 belirtimlerini alır. Eksiksiz bir kılavuz için Otomatik Açıklama sayfasına bak.

  • SAM, 11 milyon görüntü üzerinde 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 ve yüksek kaliteli, çeşitli eğitim verileri sağlayarak farklı segmentasyon görevlerinde etkileyici sıfır atışlı performans sunar. Daha fazla ayrıntı için Veri Kümesi bölümünü ziyaret et.

Yorumlar