Mobil Segment Anything (MobileSAM)
MobileSAM makalesi artık arXiv'de mevcuttur.
Bir CPU üzerinde çalışan MobileSAM 'un bir gösterimine bu demo bağlantısından erişilebilir. Mac i5 CPU üzerindeki performans yaklaşık 3 saniye sürmektedir. Hugging Face demosunda, arayüz ve daha düşük performanslı CPU'lar daha yavaş bir yanıta katkıda bulunur, ancak etkili bir şekilde çalışmaya devam eder.
İzle: Ultralytics kullanarak MobileSAM ile Çıkarım Nasıl Çalıştırılır | Adım Adım Kılavuz 🎉
MobileSAM Grounding-SAM, AnyLabeling ve Segment Anything in 3D gibi çeşitli projelerde uygulanmaktadır.
MobileSAM tek bir GPU üzerinde 100 bin veri kümesiyle (orijinal görüntülerin %1'i) bir günden daha kısa bir sürede eğitilmiştir. Bu eğitimin kodu gelecekte kullanıma sunulacaktır.
Mevcut Modeller, Desteklenen Görevler ve Çalışma Modları
Bu tablo, önceden eğitilmiş belirli ağırlıklarıyla birlikte mevcut modelleri, destekledikleri görevleri ve desteklenen modlar için ✅ emojisi ve desteklenmeyen modlar için ❌ emojisi ile gösterilen Çıkarım, Doğrulama, Eğitim ve Dışa Aktarma gibi farklı çalışma modlarıyla uyumluluklarını sunar.
Model Tipi | Önceden Eğitilmiş Ağırlıklar | Desteklenen Görevler | Çıkarım | Doğrulama | Eğitim | İhracat |
---|---|---|---|---|---|---|
MobileSAM | mobile_sam.pt | Örnek Segmentasyonu | ✅ | ❌ | ❌ | ❌ |
SAM adresinden MobileSAM
MobileSAM orijinal SAM ile aynı boru hattını koruduğundan, orijinalin ön işleme, son işleme ve diğer tüm arayüzlerini dahil ettik. Sonuç olarak, şu anda orijinal SAM 'u kullananlar minimum çabayla MobileSAM 'a geçiş yapabilirler.
MobileSAM orijinal SAM ile karşılaştırılabilir bir performans sergiliyor ve görüntü kodlayıcısındaki bir değişiklik dışında aynı işlem hattını koruyor. Özellikle, orijinal ağır ViT-H kodlayıcıyı (632M) daha küçük bir Tiny-ViT (5M) ile değiştiriyoruz. Tek bir GPU adresinde, MobileSAM görüntü başına yaklaşık 12 ms'de çalışır: Görüntü kodlayıcıda 8 ms ve maske kod çözücüde 4 ms.
Aşağıdaki tablo ViT tabanlı görüntü kodlayıcıların bir karşılaştırmasını sunmaktadır:
Görüntü Kodlayıcı | Orijinal SAM | MobileSAM |
---|---|---|
Parametreler | 611M | 5M |
Hız | 452ms | 8ms |
Hem orijinal SAM hem de MobileSAM aynı istem güdümlü maske çözücüyü kullanmaktadır:
Maske Çözücü | Orijinal SAM | MobileSAM |
---|---|---|
Parametreler | 3.876M | 3.876M |
Hız | 4ms | 4ms |
İşte tüm boru hattının karşılaştırması:
Tüm Boru Hattı (Enc+Dec) | Orijinal SAM | MobileSAM |
---|---|---|
Parametreler | 615M | 9.66M |
Hız | 456ms | 12ms |
MobileSAM ve orijinal SAM 'un performansı hem bir nokta hem de bir kutu ipucu olarak kullanılarak gösterilmiştir.
Üstün performansıyla MobileSAM , mevcut FastSAM adresinden yaklaşık 5 kat daha küçük ve 7 kat daha hızlıdır. Daha fazla ayrıntı MobileSAM proje sayfasında mevcuttur.
Test MobileSAM içinde Ultralytics
Tıpkı orijinal SAM'da olduğu gibi, Ultralytics'da da hem Nokta hem de Kutu istemleri için modlar içeren basit bir test yöntemi sunuyoruz.
Model İndir
Modeli buradan indirebilirsiniz.
Nokta İstemi
Örnek
from ultralytics import SAM
# Load the model
model = SAM("mobile_sam.pt")
# Predict a segment based on a single point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])
# Predict multiple segments based on multiple points prompt
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])
# Predict a segment based on multiple points prompt per object
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])
# Predict a segment using both positive and negative prompts.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])
Kutu İstemi
Örnek
from ultralytics import SAM
# Load the model
model = SAM("mobile_sam.pt")
# Predict a segment based on a single point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])
# Predict mutiple segments based on multiple points prompt
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])
# Predict a segment based on multiple points prompt per object
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])
# Predict a segment using both positive and negative prompts.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])
Biz uyguladık MobileSAM
ve SAM
aynı API'yi kullanarak. Daha fazla kullanım bilgisi için lütfen SAM Sayfa.
Atıflar ve Teşekkür
Araştırma veya geliştirme çalışmalarınızda MobileSAM adresini faydalı bulursanız, lütfen makalemize atıfta bulunmayı düşünün:
SSS
MobileSAM nedir ve orijinal SAM modelinden farkı nedir?
MobileSAM mobil uygulamalar için tasarlanmış hafif, hızlı bir görüntü segmentasyon modelidir. Orijinal SAM ile aynı işlem hattını korur ancak ağır ViT-H kodlayıcıyı (632M parametre) daha küçük bir Tiny-ViT kodlayıcı (5M parametre) ile değiştirir. Bu değişiklik MobileSAM 'un orijinal SAM'dan yaklaşık 5 kat daha küçük ve 7 kat daha hızlı olmasını sağlar. Örneğin, MobileSAM orijinal SAM'un 456 ms'sine kıyasla görüntü başına yaklaşık 12 ms'de çalışır. Çeşitli projelerdeki MobileSAM uygulaması hakkında daha fazla bilgiyi buradan edinebilirsiniz.
Ultralytics kullanarak MobileSAM adresini nasıl test edebilirim?
MobileSAM adresini Ultralytics adresinde test etmek basit yöntemlerle gerçekleştirilebilir. Segmentleri tahmin etmek için Nokta ve Kutu istemlerini kullanabilirsiniz. İşte Nokta istemini kullanan bir örnek:
from ultralytics import SAM
# Load the model
model = SAM("mobile_sam.pt")
# Predict a segment based on a point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])
Daha fazla ayrıntı için Test MobileSAM bölümüne de bakabilirsiniz.
Mobil uygulamam için neden MobileSAM kullanmalıyım?
MobileSAM hafif mimarisi ve yüksek çıkarım hızı nedeniyle mobil uygulamalar için idealdir. Orijinal SAM ile karşılaştırıldığında MobileSAM yaklaşık 5 kat daha küçük ve 7 kat daha hızlıdır, bu da onu hesaplama kaynaklarının sınırlı olduğu ortamlar için uygun hale getirir. Bu verimlilik, mobil cihazların önemli bir gecikme olmadan gerçek zamanlı görüntü segmentasyonu yapabilmesini sağlar. Ayrıca, MobileSAM'un Çıkarım gibi modelleri mobil performans için optimize edilmiştir.
MobileSAM nasıl eğitildi ve eğitim kodu mevcut mu?
MobileSAM orijinal görüntülerin %1'i olan 100 bin veri kümesiyle tek bir GPU üzerinde bir günden daha kısa bir sürede eğitilmiştir. Eğitim kodu gelecekte kullanıma sunulacak olsa da, şu anda MobileSAM 'un diğer yönlerini MobileSAM GitHub deposunda keşfedebilirsiniz. Bu depo, çeşitli uygulamalar için önceden eğitilmiş ağırlıkları ve uygulama ayrıntılarını içerir.
MobileSAM için başlıca kullanım alanları nelerdir?
MobileSAM mobil ortamlarda hızlı ve verimli görüntü segmentasyonu için tasarlanmıştır. Birincil kullanım durumları şunları içerir:
- Mobil uygulamalar için gerçek zamanlı nesne algılama ve segmentasyon.
- Sınırlı hesaplama kaynaklarına sahip cihazlarda düşük gecikmeli görüntü işleme.
- Artırılmış gerçeklik (AR) ve gerçek zamanlı analitik gibi görevler için yapay zeka odaklı mobil uygulamalara entegrasyon.
Daha ayrıntılı kullanım örnekleri ve performans karşılaştırmaları için SAM adresinden MobileSAM adresine uyarlama bölümüne bakın.