İçeriğe geç

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

Colab'da Segment Anything 2 ile Çıkarım

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 Örnek Sonuçları

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.

SAM 2 Mimari Diyagramı

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.



📅 11 ay önce oluşturuldu ✏️ 4 ay önce güncellendi

Yorumlar