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ş yanıt verilmesine katkıda bulunur, ancak etkili bir şekilde çalışmaya devam eder.
İzle: How to Run Inference with MobileSAM using Ultralytics | Step-by-Step Guide 🎉
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 sergiler ve görüntü kodlayıcısındaki bir değişiklik dışında aynı işlem hattını korur. Ö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 is a lightweight, fast image segmentation model designed for mobile applications. It retains the same pipeline as the original SAM but replaces the heavyweight ViT-H encoder (632M parameters) with a smaller Tiny-ViT encoder (5M parameters). This change results in MobileSAM being approximately 5 times smaller and 7 times faster than the original SAM. For instance, MobileSAM operates at about 12ms per image, compared to the original SAM's 456ms. You can learn more about the MobileSAM implementation in various projects here.
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 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:
- Real-time object detection and segmentation for mobile applications.
- 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.