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.
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.
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.
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.
- 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
Veri setinizi SAM 2 adresini kullanarak otomatik olarak notlandırmak için bu örneği izleyin:
Otomatik Notasyon Örneği
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.