YOLO Vision 2026:

MobileSAM lightweight image segmentation model logo

Mobile Segment Anything (MobileSAM)#

MobileSAM, mobil ve uç cihazlar için özel olarak geliştirilmiş kompakt, verimli bir görüntü bölütleme modelidir. Meta'nın Segment Anything Model (SAM) modelinin gücünü sınırlı hesaplama kapasitesine sahip ortamlara getirmek için tasarlanan MobileSAM, orijinal SAM işlem hattıyla uyumluluğunu korurken neredeyse anında bölütleme sağlar. İster gerçek zamanlı uygulamalar ister hafif dağıtımlar geliştiriyor olun, MobileSAM önceki sürümlerinin boyut ve hız gereksinimlerinin çok küçük bir kısmıyla etkileyici bölütleme sonuçları sunar.



Watch: How to Run Inference with MobileSAM using Ultralytics | Step-by-Step Guide 🎉

MobileSAM; Grounding-SAM, AnyLabeling ve Segment Anything in 3D dahil olmak üzere çeşitli projelerde benimsenmiştir.

MobileSAM, 100 bin görüntülük bir veri kümesi (orijinal görüntülerin %1'i) kullanılarak tek bir GPU üzerinde bir günden kısa 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örevleri ve Inference, Validation, Training ve Export gibi farklı çalışma modlarıyla uyumluluğu özetlenmektedir. Desteklenen modlar ✅ ile, desteklenmeyen modlar ise ❌ ile gösterilir.

Model TipiÖnceden Eğitilmiş AğırlıklarDesteklenen GörevlerEğitimDoğrulamaÇıkarımDışa Aktar (Export)
MobileSAMmobile_sam.ptÖrnek Bölütleme

MobileSAM ve YOLO Karşılaştırması#

Aşağıdaki karşılaştırma, Meta'nın SAM varyantları, MobileSAM ve YOLO26n-seg dahil olmak üzere Ultralytics bölütleme modelleri arasındaki farkları vurgulamaktadır:

ModelBoyut
(MB)
Parametreler
(M)
Hız (CPU)
(ms/im)
Meta SAM-b37593.741703
Meta SAM2-b16280.828867
Meta SAM2-t78.138.923430
MobileSAM40.710.123802
YOLOv8 backbone içeren FastSAM-s23.911.858.0
Ultralytics YOLOv8n-seg7.1 (11.0x daha küçük)3.4 (11.4x daha az)24.8 (945x daha hızlı)
Ultralytics YOLO11n-seg6.2 (12.6x daha küçük)2.9 (13.4x daha az)24.3 (964x daha hızlı)
Ultralytics YOLO26n-seg6.7 (11.7x daha küçük)2.7 (14.4x daha az)25.2 (930x daha hızlı)

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

SAM hızları PyTorch ile, YOLO hızları ONNX Runtime ile ölçülmüştür. Testler, torch==2.10.0, ultralytics==8.4.31 ve onnxruntime==1.24.4 kullanılarak 16GB RAM'e sahip 2025 çıkışlı bir Apple M4 Air üzerinde çalıştırılmıştır. 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 (ONNX)
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt", "yolo26n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    onnx_path = model.export(format="onnx", dynamic=True)
    model = YOLO(onnx_path)
    model(ASSETS)

SAM'den MobileSAM'e Uyarlama#

MobileSAM; ön işleme, son işleme ve tüm arayüzler dahil olmak üzere orijinal SAM ile aynı işlem hattını korur. Bu, iş akışınızda minimum değişiklik yaparak SAM'den MobileSAM'e geçebileceğiniz anlamına gelir.

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

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

Görüntü KodlayıcıOrijinal SAMMobileSAM
Parametreler637M5M
Hız452ms8ms

İstem Kılavuzlu Maske Çözücü#

Maske ÇözücüOrijinal SAMMobileSAM
Parametreler3.876M3.876M
Hız4ms4ms

Tüm Hattın Karşılaştırması#

Tüm Hat (Enc+Dec)Orijinal SAMMobileSAM
Parametreler641M9.66M
Hız456ms12ms

MobileSAM ve orijinal SAM'in performansı, hem nokta hem de kutu istemleri kullanılarak aşağıda gösterilmektedir.

Image with Point as Prompt

Image with Box as Prompt

MobileSAM, FastSAM'e kıyasla yaklaşık 7 kat daha küçük ve 5 kat daha hızlıdır. Daha fazla ayrıntı için MobileSAM project page adresini ziyaret edin.

Ultralytics'te MobileSAM Testi#

Orijinal SAM gibi Ultralytics de hem Nokta (Point) hem de Kutu (Box) istemlerini destekleyen, MobileSAM'i test etmek için basit bir arayüz sağlar.

Model İndirme#

MobileSAM önceden eğitilmiş ağırlıklarını Ultralytics assets adresinden 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 box prompt
model.predict("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Predict multiple segments based on multiple box prompts
model.predict("ultralytics/assets/zidane.jpg", bboxes=[[439, 437, 524, 709], [114, 196, 313, 708]])

Hem MobileSAM hem de SAM aynı API'yi paylaşır. Daha fazla kullanım ayrıntısı için SAM documentation sayfasına bakın.

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

Ultralytics çerçevesi ile veriseti açıklama işlemlerini otomatik olarak gerçekleştirmek için aşağıda gösterildiği gibi auto_annotate fonksiyonunu kullanın:

Örnek
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="mobile_sam.pt")
ArgümanTipVarsayılanAçıklama
datastrgerekliAçıklama veya segmentasyon için hedef görüntüleri içeren dizinin yolu.
det_modelstr'yolo26x.pt'İlk nesne tespiti için YOLO tespit modeli yolu.
sam_modelstr'sam_b.pt'Segmentasyon için SAM model yolu (SAM, SAM 2, MobileSAM ve SAM 3 ağırlıklarını destekler).
devicestr''Hesaplama cihazı (örneğin, 'cuda:0', 'cpu' veya otomatik cihaz tespiti için boş bırak).
conffloat0.25Zayıf algılamaları filtrelemek için YOLO algılama güven eşiği.
ioufloat0.45Çakışan kutuları filtrelemek için Non-Maximum Suppression (NMS) IoU eşiği.
imgszint640Görüntüleri yeniden boyutlandırmak için giriş boyutu (32'nin katı olmalıdır).
max_detint300Bellek verimliliği için görüntü başına maksimum algılama sayısı.
classeslist[int]NoneAlgılanacak sınıf indekslerinin listesi (örn. insan ve bisiklet için [0, 1]).
output_dirstrNoneAçıklamalar için kaydetme dizini (varsayılan: <data>_auto_annotate_labels kardeşi).

Alıntılar ve Teşekkür#

MobileSAM araştırman veya geliştirmende faydalı olursa, lütfen aşağıdaki makaleyi alıntılamayı düşün:

Alıntı
@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}
}

Eksiksiz MobileSAM paper on arXiv makalesini okuyun.

SSS#

  • MobileSAM, mobil ve uç uygulamalar için optimize edilmiş hafif, hızlı bir image segmentation modelidir. Orijinal SAM ile aynı işlem hattını korur ancak büyük ViT-H kodlayıcısını (637M parametre) kompakt bir Tiny-ViT kodlayıcısı (5M parametre) ile değiştirir. Bu, MobileSAM'in orijinal SAM'den yaklaşık 5 kat daha küçük ve 7 kat daha hızlı olmasını sağlar ve SAM'in 456ms'lik süresine karşılık görüntü başına yaklaşık 12ms'de çalışır. MobileSAM'in uygulaması hakkında daha fazla bilgiyi MobileSAM GitHub repository adresinde keşfedin.

  • Ultralytics içinde MobileSAM'i test etmek oldukça basittir. Segmentleri tahmin etmek için Nokta ve Kutu istemlerini kullanabilirsin. Örneğin, bir Nokta istemi kullanırken:

    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 Testing MobileSAM in Ultralytics bölümüne bakın.

  • 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ı bölütleme için uygun hale getirir. Verimliliği, mobil cihazların önemli bir gecikme yaşamadan real-time image segmentation gerçekleştirmesini sağlar. Ek olarak MobileSAM, mobil performans için optimize edilmiş Inference mode desteği sunar.

  • MobileSAM, 100 bin görüntülük bir verisetiyle (orijinal görüntülerinin %1'i) tek bir GPU üzerinde bir günden kısa sürede eğitilmiştir. Eğitim kodu gelecekte yayınlanacak olsa da şu anda önceden eğitilmiş ağırlıklara ve uygulama detaylarına MobileSAM GitHub repository adresinden ulaşabilirsiniz.

  • MobileSAM, mobil ve uç ortamlarda hızlı, verimli görüntü segmentasyonu için tasarlanmıştır. Birincil kullanım alanları şunlardır:

    • Mobil uygulamalar için gerçek zamanlı nesne tespiti ve bölütleme
    • Kısıtlı işlem gücüne 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 senaryoları ve performans hakkında daha fazla ayrıntı için Adapting from SAM to MobileSAM ve Ultralytics blog on MobileSAM applications kaynaklarına göz atın.

Yorumlar