SAM 2.1
Daha doğru SAM2.1 modeli için desteği yeni ekledik. Lütfen deneyin!
SAM 2: Her Şeyi Segment Etme Modeli 2
Meta'nın Segment Anything Model (SAM)'inin halefi olan SAM 2, hem görüntülerde hem de videolarda kapsamlı nesne segmentasyonu için tasarlanmış son teknoloji bir araçtır. Gerçek zamanlı işlemeyi ve sıfır atış genellemesini destekleyen birleşik, istemlenebilir bir model mimarisi aracılığıyla karmaşık görsel verileri işlemede mükemmeldir.
Temel Özellikler
İzle: Ultralytics Kullanarak Meta'nın SAM2'si ile Çıkarım Nasıl Çalıştırılır | Adım Adım Kılavuz 🎉
Birleşik Model Mimarisi
SAM 2, görüntü ve video segmentasyonunun yeteneklerini tek bir modelde birleştirir. Bu birleşim, dağıtımı basitleştirir ve farklı medya türlerinde tutarlı performans sağlar. Kullanıcıların noktalar, sınırlayıcı kutular veya maskeler gibi çeşitli istem türleri aracılığıyla ilgi nesnelerini belirtmelerini sağlayan esnek bir istem tabanlı arayüzden yararlanır.
Gerçek Zamanlı Performans
Model, saniyede yaklaşık 44 kare işleyerek gerçek zamanlı çıkarım hızlarına ulaşır. Bu, SAM 2'yi video düzenleme ve artırılmış gerçeklik gibi anında geri bildirim gerektiren uygulamalar için uygun hale getirir.
Sıfır Atış Genelleme
SAM 2, daha önce hiç karşılaşmadığı nesneleri segmentlere ayırabilir ve güçlü sıfır atış genellemesi gösterir. Bu, önceden tanımlanmış kategorilerin olası tüm nesneleri kapsamayabileceği çeşitli veya gelişen görsel alanlarda özellikle yararlıdır.
İnteraktif İyileştirme
Kullanıcılar, ek istemler sağlayarak segmentasyon sonuçlarını yinelemeli olarak iyileştirebilir ve çıktı üzerinde hassas kontrol sağlayabilir. Bu etkileşim, video açıklama veya tıbbi görüntüleme gibi uygulamalarda sonuçları ince ayar yapmak için çok önemlidir.
Görsel Zorlukların Gelişmiş Yönetimi
SAM 2, nesne örtüşmesi ve yeniden ortaya çıkması gibi yaygın video segmentasyon zorluklarını yönetmek için mekanizmalar içerir. Nesneleri kareler arasında takip etmek için gelişmiş bir bellek mekanizması kullanır ve nesneler geçici olarak gizlendiğinde veya sahneden çıkıp yeniden girdiğinde bile sürekliliği sağlar.
SAM 2'nin mimarisi ve yetenekleri hakkında daha derin bir anlayış için SAM 2 araştırma makalesini inceleyin.
Performans ve Teknik Detaylar
SAM 2, çeşitli metriklerde önceki modellerden daha iyi performans göstererek bu alanda yeni bir kıstas belirlemektedir:
Metrik | SAM 2 | Önceki SOTA |
---|---|---|
İnteraktif Video Segmentasyonu | En İyi | - |
İnsan Etkileşimleri Gerekli | 3 kat daha az | Temel Çizgi |
Görüntü Bölütleme Doğruluğu | Geliştirilmiş | SAM |
Çıkarım Hızı | 6 kat daha hızlı | SAM |
Model Mimarisi
Temel Bileşenler
- Görüntü ve Video Kodlayıcı: Hem görüntülerden hem de video karelerinden üst düzey özellikler çıkarmak için transformer tabanlı bir mimari kullanır. Bu bileşen, her zaman adımında görsel içeriği anlamaktan sorumludur.
- İstem Kodlayıcı: Bölütleme görevine rehberlik etmek için kullanıcı tarafından sağlanan istemleri (noktalar, kutular, maskeler) işler. Bu, SAM 2'nin kullanıcı girdisine uyum sağlamasına ve bir sahne içindeki belirli nesneleri hedeflemesine olanak tanır.
- Bellek Mekanizması: Bir bellek kodlayıcı, bellek bankası ve bellek dikkat modülü içerir. Bu bileşenler toplu olarak geçmiş çerçevelerden bilgi depolar ve kullanır, bu da modelin zaman içinde tutarlı nesne takibi sağlamasına olanak tanır.
- Maske Kod Çözücü: Kodlanmış görüntü özelliklerine ve istemlere göre son segmentasyon maskelerini oluşturur. Videoda, kareler arasında doğru takibi sağlamak için bellek bağlamını da kullanır.
Bellek Mekanizması ve Örtüşme Yönetimi
Bellek mekanizması, SAM 2'nin video verilerindeki zamansal bağımlılıkları ve tıkanmaları işlemesini sağlar. Nesneler hareket ettikçe ve etkileşimde bulundukça, SAM 2 özelliklerini bir bellek bankasına kaydeder. Bir nesne tıkandığında, model yeniden göründüğünde konumunu ve görünümünü tahmin etmek için bu belleğe güvenebilir. Tıkanma başlığı özellikle nesnelerin görünür olmadığı senaryoları ele alır ve bir nesnenin tıkanma olasılığını tahmin eder.
Çoklu Maske Belirsizliği Çözümü
Belirsizliğin olduğu durumlarda (örneğin, örtüşen nesneler), SAM 2 birden fazla maske tahmini oluşturabilir. Bu özellik, tek bir maskenin sahnenin nüanslarını yeterince tanımlayamadığı karmaşık sahneleri doğru bir şekilde temsil etmek için çok önemlidir.
SA-V Veri Kümesi
SAM 2'nin eğitimi için geliştirilen SA-V veri kümesi, mevcut en büyük ve en çeşitli video segmentasyon veri kümelerinden biridir. İçeriği:
- 51.000+ Video: 47 ülke genelinde çekilmiş olup, çok çeşitli gerçek dünya senaryoları sunmaktadır.
- 600.000+ Maske Açıklaması: Tüm nesneleri ve parçaları kapsayan, "maskletler" olarak adlandırılan detaylı uzamsal-zamansal maske açıklamaları.
- Veri Kümesi Ölçeği: Önceki en büyük veri kümelerinden 4,5 kat daha fazla video ve 53 kat daha fazla açıklama içerir ve benzeri görülmemiş çeşitlilik ve karmaşıklık sunar.
Kıyaslamalar
Video Nesne Segmentasyonu
SAM 2, başlıca video segmentasyon kıyaslama testlerinde üstün performans göstermiştir:
Veri Kümesi | J&F | J | F |
---|---|---|---|
DAVIS 2017 | 82.5 | 79.8 | 85.2 |
YouTube-VOS | 81.2 | 78.9 | 83.5 |
İnteraktif Segmentasyon
Etkileşimli segmentasyon görevlerinde, SAM 2 önemli ölçüde verimlilik ve doğruluk gösterir:
Veri Kümesi | NoC@90 | AUC |
---|---|---|
DAVIS Etkileşimli | 1.54 | 0.872 |
Kurulum
SAM 2'yi kurmak için aşağıdaki komutu kullanın. Tüm SAM 2 modelleri ilk kullanımda otomatik olarak indirilecektir.
pip install ultralytics
SAM 2 Nasıl Kullanılır: Görüntü ve Video Bölütlemede Çok Yönlülük
Aşağıdaki tabloda, mevcut SAM 2 modelleri, önceden eğitilmiş ağırlıkları, desteklenen görevler ve Çıkarım, Doğrulama, Eğitim ve Dışa Aktarma gibi farklı çalışma modlarıyla uyumluluğu ayrıntılı olarak verilmiştir.
Model Türü | Önceden Eğitilmiş Ağırlıklar | Desteklenen Görevler | Çıkarım | Doğrulama | Eğitim | Dışa aktar |
---|---|---|---|---|---|---|
SAM 2 minik | sam2_t.pt | Örnek Segmentasyonu | ✅ | ❌ | ❌ | ❌ |
SAM 2 küçük | sam2_s.pt | Örnek Segmentasyonu | ✅ | ❌ | ❌ | ❌ |
SAM 2 temeli | sam2_b.pt | Örnek Segmentasyonu | ✅ | ❌ | ❌ | ❌ |
SAM 2 büyük | sam2_l.pt | Örnek Segmentasyonu | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 minik | sam2.1_t.pt | Örnek Segmentasyonu | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 küçük | sam2.1_s.pt | Örnek Segmentasyonu | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 temel | sam2.1_b.pt | Örnek Segmentasyonu | ✅ | ❌ | ❌ | ❌ |
SAM 2.1 büyük | sam2.1_l.pt | Örnek Segmentasyonu | ✅ | ❌ | ❌ | ❌ |
SAM 2 Tahmin Örnekleri
SAM 2, gerçek zamanlı video düzenleme, tıbbi görüntüleme ve otonom sistemler dahil olmak üzere geniş bir görev yelpazesinde kullanılabilir. Hem statik hem de dinamik görsel verileri bölümlere ayırma yeteneği, onu araştırmacılar ve geliştiriciler için çok yönlü bir araç haline getirir.
İstemlerle Bölümlere Ayırma
İstemlerle Bölümlere Ayırma
Görüntülerde veya videolarda belirli nesneleri bölümlere ayırmak için istemler kullanın.
from ultralytics import SAM
# Load a model
model = SAM("sam2.1_b.pt")
# Display model information (optional)
model.info()
# Run inference with bboxes prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])
# 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 Segmentlere Ayır
Her Şeyi Segmentlere Ayır
Belirli istemler olmadan tüm görüntü veya video içeriğini bölümlere ayırın.
from ultralytics import SAM
# Load a model
model = SAM("sam2.1_b.pt")
# Display model information (optional)
model.info()
# Run inference
model("path/to/video.mp4")
# Run inference with a SAM 2 model
yolo predict model=sam2.1_b.pt source=path/to/video.mp4
Video Segmentasyonu ve Nesne Takibi
Video Segmentasyonu
Belirli istemlerle tüm video içeriğini bölümlere ayırın ve nesneleri izleyin.
from ultralytics.models.sam import SAM2VideoPredictor
# Create SAM2VideoPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="sam2_b.pt")
predictor = SAM2VideoPredictor(overrides=overrides)
# Run inference with single point
results = predictor(source="test.mp4", points=[920, 470], labels=[1])
# Run inference with multiple points
results = predictor(source="test.mp4", points=[[920, 470], [909, 138]], labels=[1, 1])
# Run inference with multiple points prompt per object
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 1]])
# Run inference with negative points prompt
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 0]])
- Bu örnek, herhangi bir istem (bboxes/noktalar/maskeler) sağlanmaması durumunda SAM 2'nin bir resmin veya videonun tüm içeriğini nasıl bölümlere ayırmak için kullanılabileceğini gösterir.
SAM 2'nin YOLO ile Karşılaştırılması
Burada Meta'nın en küçük SAM2-t varyantı da dahil olmak üzere SAM2 modellerini, Ultralytics'in en küçük segmentasyon modeli olan YOLO11n-seg ile karşılaştırıyoruz:
Model | Boyut (MB) |
Parametreler (M) |
Hız (CPU) (ms/resim) |
---|---|---|---|
Meta SAM-b | 375 | 93.7 | 49401 |
Meta SAM2-b | 162 | 80.8 | 31901 |
Meta SAM2-t | 78.1 | 38.9 | 25997 |
MobileSAM | 40.7 | 10.1 | 25381 |
YOLOv8 backbone ile FastSAM-s | 23.7 | 11.8 | 55.9 |
Ultralytics YOLOv8n-seg | 6.7 (11.7 kat daha küçük) | 3.4 (11.4 kat daha az) | 24.5 (1061 kat daha hızlı) |
Ultralytics YOLO11n-seg | 5.9 (13.2 kat daha küçük) | 2.9 (13.4 kat daha az) | 30.1 (864 kat daha hızlı) |
Bu karşılaştırma, SAM varyantları ve YOLO segmentasyon modelleri arasındaki model boyutları ve hızlarındaki önemli farklılıkları göstermektedir. SAM benzersiz otomatik segmentasyon yetenekleri sağlarken, YOLO modelleri, özellikle YOLOv8n-seg ve YOLO11n-seg, önemli ölçüde daha küçük, daha hızlı ve daha hesaplama açısından verimlidir.
Testler, 24 GB RAM'e sahip 2025 Apple M4 Pro üzerinde kullanılarak çalıştırılır torch==2.6.0
ve ultralytics==8.3.90
. Bu testi yeniden oluşturmak için:
Örnek
from ultralytics import ASSETS, SAM, YOLO, FastSAM
# Profile SAM2-t, SAM2-b, SAM-b, MobileSAM
for file in ["sam_b.pt", "sam2_b.pt", "sam2_t.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
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt"]:
model = YOLO(file_name)
model.info()
model(ASSETS)
Otomatik Açıklama: Verimli Veri Kümesi Oluşturma
Otomatik açıklama, kullanıcıların önceden eğitilmiş modellerden yararlanarak segmentasyon veri kümelerini hızlı ve doğru bir şekilde oluşturmasını sağlayan SAM 2'nin güçlü bir özelliğidir. Bu özellik, özellikle kapsamlı manuel çaba gerektirmeden büyük, yüksek kaliteli veri kümeleri oluşturmak için kullanışlıdır.
SAM 2 ile Otomatik Etiketleme Nasıl Yapılır?
İzle: Ultralytics Kullanarak Meta'nın Segment Anything 2 Modeli ile Otomatik Etiketleme | Veri Etiketleme
SAM 2'yi kullanarak veri kümenizi otomatik olarak etiketlemek için şu örneği izleyin:
Otomatik Açıklama Örneği
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam2_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). |
Bu fonksiyon, projelerini hızlandırmayı amaçlayan araştırmacılar ve geliştiriciler için ideal olan yüksek kaliteli segmentasyon veri kümelerinin hızlı bir şekilde oluşturulmasını kolaylaştırır.
Sınırlamalar
Güçlü yönlerine rağmen, SAM 2'nin bazı sınırlamaları vardır:
- İzleme Kararlılığı: SAM 2, uzun diziler veya önemli bakış açısı değişiklikleri sırasında nesnelerin izini kaybedebilir.
- Nesne Karışıklığı: Model, özellikle kalabalık sahnelerde, benzer görünümlü nesneleri bazen karıştırabilir.
- Çoklu Nesnelerle Verimlilik: Nesneler arası iletişim eksikliği nedeniyle, aynı anda birden fazla nesne işlenirken segmentasyon verimliliği azalır.
- Detaylı Doğruluk: Özellikle hızlı hareket eden nesnelerde ince ayrıntıları kaçırabilir. Ek istemler bu sorunu kısmen çözebilir, ancak zamansal düzgünlük garanti edilmez.
Alıntılar ve Teşekkürler
SAM 2, araştırma veya geliştirme çalışmalarınızın önemli bir parçasıysa, lütfen aşağıdaki referansı kullanarak atıfta bulunun:
@article{ravi2024sam2,
title={SAM 2: Segment Anything in Images and Videos},
author={Ravi, Nikhila and Gabeur, Valentin and Hu, Yuan-Ting and Hu, Ronghang and Ryali, Chaitanya and Ma, Tengyu and Khedr, Haitham and R{\"a}dle, Roman and Rolland, Chloe and Gustafson, Laura and Mintun, Eric and Pan, Junting and Alwala, Kalyan Vasudev and Carion, Nicolas and Wu, Chao-Yuan and Girshick, Ross and Doll{\'a}r, Piotr and Feichtenhofer, Christoph},
journal={arXiv preprint},
year={2024}
}
Bu çığır açan model ve veri kümesiyle yapay zeka topluluğuna katkılarından dolayı Meta AI'ya minnettarlığımızı sunuyoruz.
SSS
SAM 2 nedir ve orijinal Segment Anything Modelini (SAM) nasıl geliştirir?
Meta'nın Segment Anything Model (SAM)'inin halefi olan SAM 2, hem görüntülerde hem de videolarda kapsamlı nesne segmentasyonu için tasarlanmış son teknoloji bir araçtır. Gerçek zamanlı işlemeyi ve sıfır atış genellemesini destekleyen birleşik, istemlenebilir bir model mimarisi aracılığıyla karmaşık görsel verileri işlemede mükemmeldir. SAM 2, orijinal SAM'e göre çeşitli iyileştirmeler sunar, bunlar:
- Birleşik Model Mimarisi: Görüntü ve video segmentasyon yeteneklerini tek bir modelde birleştirir.
- Gerçek Zamanlı Performans: Saniyede yaklaşık 44 kare işler, bu da onu anında geri bildirim gerektiren uygulamalar için uygun hale getirir.
- Sıfır Atış Genellemesi: Daha önce hiç karşılaşmadığı nesneleri bölümlere ayırır, çeşitli görsel alanlarda kullanışlıdır.
- Etkileşimli İyileştirme: Kullanıcıların ek istemler sağlayarak segmentasyon sonuçlarını yinelemeli olarak iyileştirmesine olanak tanır.
- Görsel Zorlukların Gelişmiş Yönetimi: Nesne tıkanıklığı ve yeniden ortaya çıkması gibi yaygın video segmentasyon zorluklarını yönetir.
SAM 2'nin mimarisi ve yetenekleri hakkında daha fazla bilgi için SAM 2 araştırma makalesini inceleyin.
Gerçek zamanlı video segmentasyonu için SAM 2'yi nasıl kullanabilirim?
SAM 2, istem tabanlı arayüzünden ve gerçek zamanlı çıkarım yeteneklerinden yararlanarak gerçek zamanlı video segmentasyonu için kullanılabilir. İşte temel bir örnek:
İstemlerle Bölümlere Ayırma
Görüntülerde veya videolarda belirli nesneleri bölümlere ayırmak için istemler kullanın.
from ultralytics import SAM
# Load a model
model = SAM("sam2_b.pt")
# Display model information (optional)
model.info()
# Segment with bounding box prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])
# Segment with point prompt
results = model("path/to/image.jpg", points=[150, 150], labels=[1])
Daha kapsamlı kullanım için SAM 2'yi Kullanma bölümüne bakın.
SAM 2'yi eğitmek için hangi veri kümeleri kullanılır ve bunlar performansını nasıl artırır?
SAM 2, mevcut en büyük ve en çeşitli video segmentasyon veri kümelerinden biri olan SA-V veri kümesi üzerinde eğitilmiştir. SA-V veri kümesi şunları içerir:
- 51.000+ Video: 47 ülke genelinde çekilmiş olup, çok çeşitli gerçek dünya senaryoları sunmaktadır.
- 600.000+ Maske Açıklaması: Tüm nesneleri ve parçaları kapsayan, "maskletler" olarak adlandırılan detaylı uzamsal-zamansal maske açıklamaları.
- Veri Kümesi Ölçeği: Önceki en büyük veri kümelerinden 4,5 kat daha fazla video ve 53 kat daha fazla açıklama içerir ve benzeri görülmemiş çeşitlilik ve karmaşıklık sunar.
Bu kapsamlı veri seti, SAM 2'nin başlıca video segmentasyon kıyaslamalarında üstün performans göstermesini ve sıfır atış genelleme yeteneklerini geliştirmesini sağlar. Daha fazla bilgi için SA-V Veri Seti bölümüne bakın.
SAM 2, video segmentasyonunda örtüşmeleri ve nesne yeniden görünmelerini nasıl ele alır?
SAM 2, video verilerindeki zamansal bağımlılıkları ve örtüşmeleri yönetmek için gelişmiş bir bellek mekanizması içerir. Bellek mekanizması şunlardan oluşur:
- Bellek Kodlayıcı ve Bellek Bankası: Geçmiş karelerden özellikleri depolar.
- Bellek Dikkat Modülü: Zaman içinde tutarlı nesne takibini sürdürmek için depolanmış bilgileri kullanır.
- Oklüzyon Başlığı: Özellikle nesnelerin görünür olmadığı senaryoları ele alır ve bir nesnenin örtülme olasılığını tahmin eder.
Bu mekanizma, nesneler geçici olarak gizlendiğinde veya sahneden çıkıp yeniden girdiğinde bile sürekliliği sağlar. Daha fazla ayrıntı için Bellek Mekanizması ve Oklüzyon İşleme bölümüne bakın.
SAM 2, YOLO11 gibi diğer segmentasyon modelleriyle nasıl karşılaştırılır?
Meta'nın SAM2-t ve SAM2-b gibi SAM 2 modelleri, güçlü sıfır atışlı segmentasyon yetenekleri sunar, ancak YOLO11 modellerine kıyasla önemli ölçüde daha büyük ve daha yavaştır. Örneğin, YOLO11n-seg, SAM2-b'den yaklaşık 13 kat daha küçüktür ve 860 kat daha hızlıdır. SAM 2 çok yönlü, istem tabanlı ve sıfır atışlı segmentasyon senaryolarında öne çıkarken, YOLO11 hız, verimlilik ve gerçek zamanlı uygulamalar için optimize edilmiştir ve bu da onu kaynak kısıtlı ortamlarda dağıtım için daha uygun hale getirir.