Link to this sectionSegment Anything Model (SAM)#
Segment Anything Model, yani 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 istemli görüntü segmentasyonunu tanıtarak oyunun kurallarını değiştirdi ve alanda yeni standartlar belirledi.
Link to this sectionSAM'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ı, önceden bilgi sahibi olmadan yeni görüntü dağılımlarına ve görevlerine uyum sağlamasına olanak tanır; bu özellik, sıfır-atımlı (zero-shot) aktarım olarak bilinir. 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-atımlı performans sergiledi.
SA-1B Örnek görüntüler. Veri kümesi görüntüleri, yeni tanıtılan SA-1B veri kümesinden alınan maskelerle kaplanmıştır. SA-1B, 11 milyon çeşitli, yüksek çözünürlüklü, lisanslı ve gizliliği koruyan görüntü ve 1.1 milyar yüksek kaliteli segmentasyon maskesi içerir. Bu maskeler SAM tarafından tamamen otomatik olarak açıklanmış olup, insan derecelendirmeleri ve sayısız deneyle doğrulandığı üzere yüksek kaliteye ve çeşitliliğe sahiptir. Görüntüler görselleştirme için görüntü başına düşen maske sayısına göre gruplandırılmıştır (görüntü başına ortalama ∼100 maske bulunmaktadır).
Link to this sectionSegment 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-Atımlı (Zero-Shot) Performans: SAM, çeşitli segmentasyon görevlerinde üstün bir sıfır-atımlı performans sergiler ve istem mühendisliğine minimum düzeyde ihtiyaç duyarak çeşitli uygulamalar için kullanıma hazır bir araç haline gelir.
Segment Anything Model ve SA-1B veri kümesine derinlemesine bir bakış için lütfen Segment Anything GitHub sayfasını ziyaret et ve Segment Anything adlı araştırma makalesine göz at.
SAM powers the smart annotation feature on Ultralytics Platform, enabling click-based intelligent masking for fast dataset labeling. See the annotation guide for details.
Link to this sectionMevcut Modeller, Desteklenen Görevler ve Çalışma Modları#
Bu tablo, mevcut modelleri özel ö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ı ile sunar; desteklenen modlar ✅ emojisiyle, desteklenmeyenler ise ❌ emojisiyle gösterilmiştir.
| Model Tipi | Önceden Eğitilmiş Ağırlıklar | Desteklenen Görevler | Çıkarım | Doğrulama | Eğitim | Dışa Aktar (Export) |
|---|---|---|---|---|---|---|
| SAM base | sam_b.pt | Örnek Segmentasyonu | ✅ | ❌ | ❌ | ❌ |
| SAM large | sam_l.pt | Örnek Segmentasyonu | ✅ | ❌ | ❌ | ❌ |
Link to this sectionSAM 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. Buna kenar algılama, nesne önerisi oluşturma, örnek segmentasyonu ve ön metinden maskeye tahmin dahildir. İstem mühendisliği ile SAM, yeni görevlere ve veri dağılımlarına sıfır-atımlı bir şekilde hızla uyum sağlayabilir ve bu da onu tüm görüntü segmentasyon ihtiyaçların için çok yönlü ve güçlü bir araç haline getirir.
Link to this sectionSAM tahmin örneği#
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]])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.
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 = dict(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 = dict(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)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.
- More additional args for
Segment everythingseePredictor/generateReference.
Link to this sectionSAM 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:
| Model | Boyut (MB) | Parametreler (M) | Hız (CPU) (ms/im) |
|---|---|---|---|
| Meta SAM-b | 375 | 93.7 | 41703 |
| MobileSAM | 40.7 | 10.1 | 23802 |
| FastSAM-s YOLOv8 backbone ile | 23.9 | 11.8 | 58.0 |
| Ultralytics YOLOv8n-seg | 7.1 (52.8x daha küçük) | 3.4 (27.6x daha az) | 24.8 (1682x daha hızlı) |
| Ultralytics YOLO11n-seg | 6.2 (60.5x daha küçük) | 2.9 (32.3x daha az) | 24.3 (1716x daha hızlı) |
| Ultralytics YOLO26n-seg | 6.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ı ONNX Runtime ile ölçülmüştür. Testler, torch==2.10.0, ultralytics==8.4.31 ve onnxruntime==1.24.4 kullanılarak 16GB RAM'li 2025 Apple M4 Air üzerinde çalıştırılmıştır. Bu testi tekrarlamak için:
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)Link to this sectionOtomatik Açıklama (Auto-Annotation): Segmentasyon Veri Kümelerine Hızlı Bir Yol#
Otomatik açıklama, kullanıcıların önceden eğitilmiş bir tespit modeli kullanarak bir segmentasyon veri kümesi oluşturmasına olanak tanıyan SAM'in temel bir özelliğidir. Bu özellik, çok sayıda görüntünün hızlı ve doğru bir şekilde açıklanmasını sağlayarak zaman alıcı manuel etiketleme ihtiyacını ortadan kaldırır.
Link to this sectionBir Tespit Modeli Kullanarak Segmentasyon Veri Kümeni Oluştur#
Veri kümeni Ultralytics çerçevesi ile otomatik olarak açıklamak için aşağıda gösterildiği gibi auto_annotate işlevini kullan:
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")| Argüman | Tip | 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 tespiti için YOLO tespit modeli yolu. |
sam_model | str | 'sam_b.pt' | Segmentasyon için SAM model yolu (SAM, SAM 2, MobileSAM ve SAM 3 ağırlıklarını destekler). |
device | str | '' | Hesaplama cihazı (örneğin, 'cuda:0', 'cpu' veya otomatik cihaz tespiti için boş bırak). |
conf | float | 0.25 | Zayıf algılamaları filtrelemek için YOLO algılama güven eşiği. |
iou | float | 0.45 | Kesişen kutuları filtrelemek için Non-Maximum Suppression (NMS) 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 indekslerinin listesi (örneğin, kişi ve bisiklet için [0, 1]). |
output_dir | str | None | Açıklamalar için kaydetme dizini (varsayılan: <data>_auto_annotate_labels dizini). |
auto_annotate fonksiyonu, resimlerinin yolunu alır; önceden eğitilmiş algılama ve SAM segmentasyon modellerini, modelleri çalıştıracağın cihazı ve açıklanmış sonuçları kaydetmek için çıktı dizinini belirten isteğe bağlı argümanlara sahiptir.
Ö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.
Link to this sectionAlı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:
@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ğı yarattığı ve sürdürdüğü için Meta AI'a teşekkürlerimizi sunarız.
Link to this sectionSSS#
Link to this sectionUltralytics tarafından sunulan Segment Anything Model (SAM) nedir?#
Ultralytics'in Segment Anything Model (SAM) modeli, yönlendirilebilir (promptable) segmentasyon görevleri için tasarlanmış devrim niteliğinde bir görüntü segmentasyon modelidir. Hafif bir maske kod çözücü ile birleştirilmiş görüntü ve istem kodlayıcıları dahil olmak üzere gelişmiş mimariden yararlanarak, uzamsal veya metin 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örevlerine uyum sağlayarak sıfır-atış (zero-shot) performansında mükemmeldir.
Link to this sectionSegment 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.jpgDaha detaylı kullanım talimatları için Segmentasyon bölümünü ziyaret et.
Link to this sectionSAM ve YOLO modelleri performans açısından nasıl karşılaştırılır?#
YOLO modellerine kıyasla, 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ış (zero-shot) 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 hale getirirken, SAM modelleri esnek, yönlendirilebilir ve sıfır-atış segmentasyon görevlerinde öne çıkar.
Link to this sectionVeri 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 resimlerinin yolunu ve önceden eğitilmiş algılama ve SAM segmentasyon modelleri için isteğe bağlı argümanları, cihaz ve çıktı dizini spesifikasyonlarıyla birlikte alır. Tam bir kılavuz için Otomatik Açıklama bölümüne bak.
Link to this sectionSegment 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 ve çeşitli segmentasyon görevlerinde etkileyici bir sıfır-atış (zero-shot) performansı sağlayarak yüksek kaliteli ve çeşitli eğitim verileri sunar. Daha fazla detay için Veri Kümesi bölümünü ziyaret et.