İçeriğe geç

MobileSAM Logo

Mobil Segment Anything (MobileSAM)

MobileSAM , mobil ve uç cihazlar için özel olarak tasarlanmış kompakt, verimli bir görüntü segmentasyon modelidir. Meta'nın Segment Anything Modelinin (SAM) sınırlı işlem yapılan ortamlara uyarlayan MobileSAM , orijinal SAM işlem hattıyla uyumluluğu korurken neredeyse anında segmentasyon sağlar. İster gerçek zamanlı uygulamalar ister hafif dağıtımlar geliştiriyor olun, MobileSAM öncekilerin boyut ve hız gereksinimlerinin çok altında etkileyici segmentasyon sonuçları sağlar.



İzle: Ultralytics kullanarak MobileSAM ile Çıkarım Nasıl Çalıştırılır | Adım Adım Kılavuz 🎉

MobileSAM , SAM, AnyLabeling ve Segment Anything in 3D gibi çeşitli projelerde benimsenmiştir.

MobileSAM , 100 bin görüntü veri kümesi (orijinal görüntülerin %1'i) kullanılarak tek bir GPU üzerinde bir günden daha kısa bir sürede eğitilmiştir. Eğitim kodu gelecekte yayınlanacaktır.

Mevcut Modeller, Desteklenen Görevler ve Çalışma Modları

Aşağıdaki tabloda mevcut MobileSAM modeli, ö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 özetlenmektedir. Desteklenen modlar ✅ ile ve desteklenmeyen modlar ❌ ile gösterilmiştir.

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ı

Aşağıdaki karşılaştırma, Meta'nın SAM varyantları, MobileSAM ve Ultralytics'in YOLO11n-seg dahil olmak üzere en küçük segmentasyon modelleri arasındaki farkları vurgulamaktadır:

Model Boyut
(MB)
Parametreler
(M)
Hız (CPU)
(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ında model boyutu ve hızı açısından önemli farklılıklar olduğunu göstermektedir. SAM modelleri benzersiz otomatik segmentasyon yetenekleri sunarken, YOLOv8n modelleri - özellikle 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 sonuçları yeniden üretmek 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 orijinaliyle aynı boru hattını korur SAMön işleme, son işleme ve tüm arayüzler dahil olmak üzere. Bu, iş akışınızda minimum değişiklikle SAM 'den MobileSAM 'e geçiş yapabileceğiniz anlamına gelir.

En önemli fark görüntü kodlayıcısıdır: MobileSAM orijinal ViT-H kodlayıcıyı (632M parametre) çok daha küçük bir Tiny-ViT kodlayıcı (5M parametre) ile değiştirir. MobileSAM tek bir GPU'da bir görüntüyü yaklaşık 12 ms'de işler (kodlayıcı için 8 ms, maske çözücü için 4 ms).

ViT Tabanlı Görüntü Kodlayıcı Karşılaştırması

Görüntü Kodlayıcı Orijinal SAM MobileSAM
Parametreler 611M 5M
Hız 452ms 8ms

İstem Güdümlü Maske Çözücü

Maske Çözücü Orijinal SAM MobileSAM
Parametreler 3.876M 3.876M
Hız 4ms 4ms

Tüm Boru Hattı 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 'in performansı hem nokta hem de kutu istemleri kullanılarak aşağıda gösterilmiştir.

İpucu Olarak Noktalı Resim

İstem Olarak Kutulu Resim

MobileSAM , FastSAM'den yaklaşık 5 kat daha küçük ve 7 kat daha hızlıdır. Daha fazla ayrıntı için MobileSAM proje sayfasını ziyaret edin.

Test MobileSAM içinde Ultralytics

Tıpkı orijinali gibi SAMUltralytics , MobileSAM'i test etmek için hem Nokta hem de Kutu istemlerini destekleyen basit bir arayüz sağlar.

Model İndir

MobileSAM ön eğitimli ağırlıkları Ultralytics varlıklarından indirin.

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]])

Her ikisi de MobileSAM ve SAM aynı API'yi paylaşır. Daha fazla kullanım detayı için bkz. SAM belgeleri.

Bir Algılama Modeli Kullanarak Segmentasyon Veri Kümelerini Otomatik Olarak Oluşturma

Veri kümenize Ultralytics çerçevesi ile 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

MobileSAM araştırma veya geliştirme çalışmalarınızda size yardımcı olacaksa, lütfen aşağıdaki makaleye 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}
}

MobileSAM makalesinin tamamını arXiv'de okuyun.

SSS

MobileSAM Nedir ve Orijinal SAM Modelinden Farkı Nedir?

MobileSAM , mobil ve kenar uygulamaları için optimize edilmiş hafif, hızlı bir görüntü segmentasyon modelidir. Orijinal SAM ile aynı işlem hattını korur ancak büyük ViT-H kodlayıcıyı (632M parametre) kompakt bir Tiny-ViT kodlayıcı (5M parametre) ile değiştirir. Bu sayede MobileSAM orijinal SAM'den yaklaşık 5 kat daha küçük ve 7 kat daha hızlıdır; SAM'in 456 ms'lik hızına karşılık görüntü başına yaklaşık 12 ms'de çalışır. MobileSAM GitHub deposundaMobileSAM 'in uygulaması hakkında daha fazla bilgi edinin.

Ultralytics Kullanarak MobileSAM 'i Nasıl Test Edebilirim?

MobileSAM 'i Ultralytics 'te test etmek basittir. Segmentleri tahmin etmek için Nokta ve Kutu istemlerini kullanabilirsiniz. Örneğin, bir Nokta istemi kullanarak:

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 Ultralytics ' te MobileSAM ' i Test Etme bölümüne bakın.

Mobil MobileSAM için Neden MobileSAM Kullanmalıyım?

MobileSAM , hafif tasarımı ve hızlı çıkarım hızı nedeniyle mobil ve uç 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 sınırlı hesaplama kaynaklarına sahip cihazlarda gerçek zamanlı segmentasyon için uygun hale getirir. Verimliliği, mobil cihazların önemli bir gecikme olmadan gerçek zamanlı görüntü segmentasyonu gerçekleştirmesini sağlar. Ayrıca MobileSAM , mobil performans için optimize edilmiş Çıkarım modunu destekler.

MobileSAM Nasıl Eğitildi ve Eğitim Kodu Mevcut mu?

MobileSAM , 100 bin görüntü veri kümesiyle (orijinal görüntülerin %1'i) tek bir GPU üzerinde bir günden kısa bir sürede eğitildi. Eğitim kodu gelecekte yayınlanacak olsa da, şu anda MobileSAM GitHub deposundan önceden eğitilmiş ağırlıklara ve uygulama ayrıntılarına erişebilirsiniz.

MobileSAM için Başlıca Kullanım Alanları Nelerdir?

MobileSAM , mobil ve uç 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ı işlemciye sahip cihazlarda düşük gecikmeli görüntü işleme
  • Artırılmış gerçeklik (AR), analitik ve daha fazlası için yapay zeka destekli mobil uygulamalara entegrasyon

Kullanım durumları ve performans hakkında daha fazla ayrıntı için SAM ' den MobileSAM'e uyarlama ve MobileSAM uygulamaları hakkındakiUltralytics bloguna bakın.



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

Yorumlar