İçeriğe geç

SAM 2.1

Daha doğru olan SAM2.1 modelini yeni destekledik. Lütfen bir deneyin!

SAM 2: Segment Herhangi Bir Şey Model 2

SAM 2, Meta'nın Segment Anything Model'inin (SAM) halefi, 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 vuruşlu genelleştirmeyi destekleyen birleşik, uyarılabilir 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's SAM2 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 segmentasyonu yeteneklerini tek bir modelde birleştirir. Bu birleştirme, 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 ilgilenilen nesneleri belirtmelerine olanak tanıyan esnek istem tabanlı bir 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 da SAM 2'yi video düzenleme ve artırılmış gerçeklik gibi anında geri bildirim gerektiren uygulamalar için uygun hale getiriyor.

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, özellikle önceden tanımlanmış kategorilerin tüm olası nesneleri kapsamayabileceği çeşitli veya gelişen görsel alanlarda kullanışlıdır.

İnteraktif İyileştirme

Kullanıcılar, ek istemler sağlayarak segmentasyon sonuçlarını yinelemeli olarak hassaslaştırabilir ve çıktı üzerinde hassas kontrol sağlayabilir. Bu etkileşim, video açıklama veya tıbbi görüntüleme gibi uygulamalarda sonuçlara ince ayar yapmak için gereklidir.

Görsel Zorlukların İleri Düzeyde Ele Alınması

SAM 2, nesne tıkanıklığı ve yeniden ortaya çıkma gibi yaygın video segmentasyon zorluklarını yönetmek için mekanizmalar içerir. Nesneleri kareler boyunca takip etmek için sofistike bir bellek mekanizması kullanır ve nesneler geçici olarak gizlendiğinde veya sahneden çıkıp tekrar 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 ölçütlerde önceki modellerden daha iyi performans göstererek bu alanda yeni bir ölçüt oluşturmaktadır:

Metrik SAM 2 Önceki SOTA
İnteraktif Video Segmentasyonu En iyisi -
İnsan Etkileşimleri Gerekli 3 kat daha az Başlangıç Noktası
Görüntü Segmentasyon Doğruluğu Geliştirilmiş SAM
Çıkarım Hızı 6 kat daha hızlı SAM

Model Mimari

Çekirdek 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 dönüştürücü tabanlı bir mimari kullanır. Bu bileşen, her zaman adımında görsel içeriği anlamaktan sorumludur.
  • İstem Kodlayıcı: Segmentasyon görevini yönlendirmek 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.
  • Hafıza Mekanizması: Bir hafıza kodlayıcı, hafıza bankası ve hafıza dikkat modülü içerir. Bu bileşenler toplu olarak geçmiş karelerdeki bilgileri depolar ve kullanır, böylece modelin zaman içinde tutarlı nesne takibini sürdürmesini sağlar.
  • Maske Çözücü: Kodlanmış görüntü özelliklerine ve istemlere dayalı olarak nihai segmentasyon maskelerini oluşturur. Videoda, kareler arasında doğru izleme sağlamak için bellek bağlamını da kullanır.

SAM 2 Mimari Şema

Bellek Mekanizması ve Oklüzyon İşleme

Bellek mekanizması SAM 2'nin video verilerindeki zamansal bağımlılıkları ve tıkanıklıkları ele almasını sağlar. Nesneler hareket ettikçe ve etkileşime girdikçe, SAM 2 onların özelliklerini bir hafıza bankasına kaydeder. Bir nesne tıkandığında, model yeniden ortaya çıktığında konumunu ve görünümünü tahmin etmek için bu belleğe güvenebilir. Oklüzyon kafası, nesnelerin görünür olmadığı senaryoları özel olarak ele alır ve bir nesnenin oklüzyona uğrama olasılığını tahmin eder.

Çoklu Görev Belirsizlik Çözümü

Belirsizlik içeren durumlarda (örneğin, üst üste binen nesneler), SAM 2 birden fazla maske tahmini oluşturabilir. Bu özellik, tek bir maskenin sahnenin nüanslarını yeterince tanımlayamayabileceği 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. Bu veri kümesi şunları içerir:

  • 51.000'den fazla Video: 47 ülkede çekilen ve çok çeşitli gerçek dünya senaryoları sunan videolar.
  • 600.000'den fazla Maske Ek Açıklaması: Tüm nesneleri ve parçaları kapsayan "masklet" olarak adlandırılan ayrıntılı uzamsal-zamansal maske ek 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çeriyor ve benzeri görülmemiş bir çeşitlilik ve karmaşıklık sunuyor.

Ölçütler

Video Nesne Segmentasyonu

SAM 2 önemli video segmentasyon kıyaslamalarında üstün performans göstermiştir:

Veri Seti 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 verimlilik ve doğruluk göstermektedir:

Veri Seti NoC@90 AUC
DAVIS İnteraktif 1.54 0.872

Kurulum

SAM 2'yi yüklemek 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 Segmentasyonunda Çok Yönlülük

Aşağıdaki tabloda mevcut SAM 2 modelleri, bunların ö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 uyumluluk ayrıntılı olarak açıklanmaktadır.

Model Tipi Önceden Eğitilmiş Ağırlıklar Desteklenen Görevler Çıkarım Doğrulama Eğitim İhracat
SAM 2 minik sam2_t.pt Örnek Segmentasyonu
SAM 2 küçük sam2_s.pt Örnek Segmentasyonu
SAM 2 temel sam2_b.pt Örnek Segmentasyonu
SAM 2 büyük sam2_l.pt Örnek Segmentasyonu
SAM 2.1 küçük sam2.1_t.pt Örnek Segmentasyonu
SAM 2.1 küçük sam2.1_s.pt Örnek Segmentasyonu
SAM 2.1 taban 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 de 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 getirmektedir.

İpuçları ile Segment

İpuçları ile Segment

Görüntülerdeki veya videolardaki belirli nesneleri bölümlere ayırmak için istemleri 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]])

Segment Her Şey

Segment Her Şey

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

Videoyu Segmentlere Ayırma ve Nesneleri İzleme

Segment Videosu

Tüm video içeriğini belirli istemlerle 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 örnekte, herhangi bir istem (bboxes/points/masks) sağlanmadığı takdirde SAM 2 adresinin bir resim veya videonun tüm içeriğini bölümlere ayırmak için nasıl kullanılabileceği gösterilmektedir.

SAM 2 karşılaştırma vs YOLOv8

Burada Meta'nın en küçük SAM 2 modeli olan SAM2-t ile Ultralytics en küçük segmentasyon modeli olan YOLOv8n-seg'i karşılaştırıyoruz:

Model Boyut
(MB)
Parametreler
(M)
Hız (CPU)
(ms/im)
Meta SAM-b 375 93.7 161440
Meta SAM2-b 162 80.8 121923
Meta SAM2-t 78.1 38.9 85155
MobileSAM 40.7 10.1 98543
FastSAM YOLOv8 omurgalı -s 23.7 11.8 140
Ultralytics YOLOv8n-seg 6, 7 (11,7 kat daha küçük) 3,4 (11,4 kat daha az) 79,5 (1071 kat daha hızlı)

Bu karşılaştırma, modeller arasındaki model boyutları ve hızlarındaki büyüklük sırası farklarını göstermektedir. SAM otomatik segmentasyon için benzersiz yetenekler sunarken, daha küçük, daha hızlı ve daha verimli olan YOLOv8 segment modellerine doğrudan rakip değildir.

Testler, 16 GB RAM kullanan 2023 Apple M2 Macbook üzerinde gerçekleştirilmiştir. torch==2.3.1 ve ultralytics==8.3.82. 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 YOLOv8n-seg
model = YOLO("yolov8n-seg.pt")
model.info()
model(ASSETS)

Otomatik Notasyon: Verimli Veri Kümesi Oluşturma

Otomatik açıklama, SAM 2'nin güçlü bir özelliğidir ve kullanıcıların önceden eğitilmiş modellerden yararlanarak segmentasyon veri kümelerini hızlı ve doğru bir şekilde oluşturmalarını sağlar. Bu özellik, yoğun manuel çaba gerektirmeden büyük, yüksek kaliteli veri kümeleri oluşturmak için özellikle yararlıdır.

SAM 2 ile Otomatik Not Alma



İzle: Ultralytics | Veri Etiketleme kullanarak Meta'nın Segment Anything 2 Modeli ile Otomatik Ek Açıklama

Veri setinizi SAM 2 adresini kullanarak otomatik olarak notlandırmak için bu örneği izleyin:

Otomatik Notasyon Örneği

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam2_b.pt")
Tartışma Tip Açıklama Varsayılan
data str Açıklama eklenecek görüntüleri içeren bir klasörün yolu.
det_model str, isteğe bağlı Önceden eğitilmiş YOLO algılama modeli. Varsayılan değer 'yolo11x.pt'. 'yolo11x.pt'
sam_model str, isteğe bağlı Önceden eğitilmiş SAM 2 segmentasyon modeli. Varsayılan değer 'sam2_b.pt'. 'sam2_b.pt'
device str, isteğe bağlı Modellerin çalıştırılacağı cihaz. Varsayılan olarak boş bir dizedir (CPU veya GPU, varsa).
conf float, isteğe bağlı Algılama modeli için güven eşiği; varsayılan değer 0,25'tir. 0.25
iou float, isteğe bağlı Algılama sonuçlarında çakışan kutuları filtrelemek için IoU eşiği; varsayılan değer 0,45'tir. 0.45
imgsz int, isteğe bağlı Girdi görüntü yeniden boyutlandırma boyutu; varsayılan 640'tır. 640
max_det int, isteğe bağlı Yoğun sahnelerde çıktıları kontrol etmek için görüntü başına algılamaları sınırlar. 300
classes list, isteğe bağlı Tahminleri belirtilen sınıf kimliklerine göre filtreleyerek yalnızca ilgili algılamaları döndürür. None
output_dir str, None, isteğe bağlı Açıklamalı sonuçların kaydedileceği dizin. Varsayılan olarak 'data' ile aynı dizindeki 'labels' klasörüdür. None

Bu işlev, 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 sekanslar veya önemli bakış açısı değişiklikleri sırasında nesnelerin izini kaybedebilir.
  • Nesne Karışıklığı: Model, özellikle kalabalık sahnelerde bazen benzer görünümlü nesneleri karıştırabilir.
  • Birden Fazla Nesne ile Verimlilik: Birden fazla nesne aynı anda işlenirken nesneler arası iletişim eksikliği nedeniyle segmentasyon verimliliği düşer.
  • Detay Doğruluğu: Ö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.

Atıflar ve Teşekkür

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 seti ile yapay zeka topluluğuna katkılarından dolayı Meta AI'ya şükranlarımızı sunuyoruz.

SSS

SAM 2 nedir ve orijinal Segment Anything Modelini (SAM) nasıl geliştirmektedir?

SAM 2, Meta'nın Segment Anything Model'inin (SAM) halefi, 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ışlı genelleştirmeyi destekleyen birleşik, istenebilir bir model mimarisi aracılığıyla karmaşık görsel verilerin işlenmesinde mükemmeldir. SAM 2, orijinal SAM üzerinde aşağıdakiler de dahil olmak üzere çeşitli iyileştirmeler sunar:

  • 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şleyerek anında geri bildirim gerektiren uygulamalar için uygun hale getirir.
  • Sıfır Atış Genelleme: Daha önce hiç karşılaşmadığı nesneleri segmentlere ayırır, çeşitli görsel alanlarda kullanışlıdır.
  • İnteraktif İ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 çıkma gibi yaygın video segmentasyon zorluklarını yönetir.

SAM 2'nin mimarisi ve yetenekleri hakkında daha fazla ayrıntı için SAM 2 araştırma makalesini inceleyin.

Gerçek zamanlı video segmentasyonu için SAM 2 adresini nasıl kullanabilirim?

SAM 2, uyarılabilir arayüzü ve gerçek zamanlı çıkarım yeteneklerinden yararlanarak gerçek zamanlı video segmentasyonu için kullanılabilir. İşte basit bir örnek:

İpuçları ile Segment

Görüntülerdeki veya videolardaki belirli nesneleri bölümlere ayırmak için istemleri 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 Nasıl Kullanılır bölümüne bakın.

SAM 2'yi eğitmek için hangi veri kümeleri kullanılıyor ve bunlar performansı nasıl artırıyor?

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'den fazla Video: 47 ülkede çekilen ve çok çeşitli gerçek dünya senaryoları sunan videolar.
  • 600.000'den fazla Maske Ek Açıklaması: Tüm nesneleri ve parçaları kapsayan "masklet" olarak adlandırılan ayrıntılı uzamsal-zamansal maske ek açıklamaları.
  • Veri Kümesi Ölçeği: Önceki en büyük veri kümelerine göre 4,5 kat daha fazla video ve 53 kat daha fazla açıklama içererek benzeri görülmemiş bir çeşitlilik ve karmaşıklık sunar.

Bu kapsamlı veri seti, SAM 2'nin başlıca video segmentasyon karşılaştırmalarında üstün performans elde etmesini sağlar ve sıfır çekim genelleme yeteneklerini geliştirir. Daha fazla bilgi için SA-V Veri Kümesi bölümüne bakın.

SAM 2 video segmentasyonunda oklüzyonları ve nesnelerin yeniden ortaya çıkmasını nasıl ele alıyor?

SAM 2, video verilerindeki zamansal bağımlılıkları ve tıkanıklıkları yönetmek için gelişmiş bir bellek mekanizması içerir. Bellek mekanizması şunlardan oluşur:

  • Hafıza Kodlayıcı ve Hafıza Bankası: Geçmiş karelerdeki özellikleri depolar.
  • Hafıza Dikkat Modülü: Zaman içinde tutarlı nesne takibini sürdürmek için depolanan bilgileri kullanır.
  • Oklüzyon Kafası: Nesnelerin görünmediği senaryoları özel olarak ele alır ve bir nesnenin oklüzyona uğrama olasılığını tahmin eder.

Bu mekanizma, nesneler geçici olarak gizlendiğinde veya sahneden çıkıp tekrar 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, YOLOv8 gibi diğer segmentasyon modelleriyle nasıl karşılaştırılır?

SAM 2 ve Ultralytics YOLOv8 farklı amaçlara hizmet eder ve farklı alanlarda mükemmeldir. SAM 2, sıfır çekim genelleme ve gerçek zamanlı performans gibi gelişmiş özelliklerle kapsamlı nesne segmentasyonu için tasarlanmışken, YOLOv8 nesne algılama ve segmentasyon görevlerinde hız ve verimlilik için optimize edilmiştir. İşte bir karşılaştırma:

Model Boyut
(MB)
Parametreler
(M)
Hız (CPU)
(ms/im)
Meta SAM-b 375 93.7 161440
Meta SAM2-b 162 80.8 121923
Meta SAM2-t 78.1 38.9 85155
MobileSAM 40.7 10.1 98543
FastSAM YOLOv8 omurgalı -s 23.7 11.8 140
Ultralytics YOLOv8n-seg 6, 7 (11,7 kat daha küçük) 3,4 (11,4 kat daha az) 79,5 (1071 kat daha hızlı)

Daha fazla ayrıntı için SAM 2 ile YOLOv8 karşılaştırması bölümüne bakın.

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

Yorumlar