İçeriğe geç

MobileSAM Logo

Mobil Segment Anything (MobileSAM)

MobileSAM makalesi artık arXiv'de mevcuttur.

Bir CPU üzerinde çalışan MobileSAM 'in bir gösterimine bu demo bağlantısından erişilebilir. Mac i5 CPU 'da performans yaklaşık 3 saniye sürer. Üzerinde Hugging Face Demo, arayüz ve düşük performanslı CPU'lar daha yavaş yanıt verilmesine 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

MobileSAM ile YOLO Karşılaştırması

Burada Meta'nın MobileSAM dahil SAM varyantlarını Ultralytics 'in en küçük segmentasyon modeli olan YOLO11n-seg ile karşılaştırıyoruz:

Model Boyut (MB) Parametreler (M) HızCPU) (ms/im)
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 omurgalıFastSAM 23.7 11.8 55.9
Ultralytics YOLOv8n 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 (864x daha hızlı)

Bu karşılaştırma, SAM varyantları ile YOLO segmentasyon modelleri arasındaki model boyutları ve hızlarındaki önemli farklılıkları göstermektedir. SAM benzersiz otomatik segmentasyon yetenekleri sunarken, YOLO modelleri, özellikle de YOLOv8n ve YOLO11n-seg, önemli ölçüde daha küçük, daha hızlı ve hesaplama açısından daha verimlidir.

Testler, 24 GB RAM'e sahip 2025 Apple M4 Pro üzerinde 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)

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.

İpucu Olarak Noktalı Resim

İstem Olarak Kutulu Resim

Ü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ı orijinali gibi SAMUltralytics'te hem Nokta hem de Kutu istemleri için modlar da dahil olmak üzere basit bir test yöntemi sunuyoruz.

Model İndir

MobileSAM ön eğitimli ağırlıkları ultralytics adresinden 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 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]])

Biz uyguladık MobileSAM ve SAM aynı API'yi kullanarak. Daha fazla kullanım bilgisi için lütfen SAM Sayfa.

Bir Algılama Modelinden Yararlanarak Segmentasyon Veri Setlerini Otomatik Olarak Oluşturma

Veri kümenize Ultralytics çerçevesini kullanarak otomatik olarak açıklama eklemek için auto_annotate fonksiyonu aşağıda gösterildiği gibi:

Örnek

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="mobile_sam.pt")
Tartışma Tip Varsayılan Açıklama
data str gerekli Ek açıklama veya segmentasyon için hedef görüntüleri içeren dizinin yolu.
det_model str 'yolo11x.pt' YOLO ilk nesne algılama için algılama modeli yolu.
sam_model str 'sam_b.pt' Segmentasyon için SAM model yolu ( SAM2 varyantları ve mobile_sam modellerini destekler).
device str '' Hesaplama cihazı (örneğin, otomatik cihaz tespiti için 'cuda:0', 'cpu' veya '').
conf float 0.25 YOLO zayıf algılamaları filtrelemek için algılama güven eşiği.
iou float 0.45 Çakışan kutuları filtrelemek için Maksimum Olmayan Bastırma için IoU eşiği.
imgsz int 640 Görüntüleri yeniden boyutlandırmak için girdi boyutu (32'nin katı olmalıdır).
max_det int 300 Bellek verimliliği için görüntü başına maksimum algılama sayısı.
classes list[int] None Algılanacak sınıf endekslerinin listesi (örn, [0, 1] kişi ve bisiklet için).
output_dir str None Ek açıklamalar için kayıt dizini (varsayılan olarak veri yoluna göre './labels').

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:

@article{mobile_sam,
  title={Faster Segment Anything: Towards Lightweight SAM for Mobile Applications},
  author={Zhang, Chaoning and Han, Dongshen and Qiao, Yu and Kim, Jung Uk and Bae, Sung Ho and Lee, Seungkyu and Hong, Choong Seon},
  journal={arXiv preprint arXiv:2306.14289},
  year={2023}
}

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 'in orijinal SAM'den yaklaşık 5 kat daha küçük ve 7 kat daha hızlı olmasıyla sonuçlanır. Örneğin MobileSAM , orijinal SAM'in 456 ms'lik hızına kıyasla görüntü başına yaklaşık 12 ms'de çalışır. MobileSAM GitHub deposundaki çeşitli projelerde MobileSAM uygulaması hakkında daha fazla bilgi 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.

📅1 yıl önce oluşturuldu ✏️ 7 gün önce güncellendi

Yorumlar