MobileSAM hafif görüntü segmentasyon modeli logosu

Mobile Segment Anything (MobileSAM)

MobileSAM, mobil ve uç cihazlar için özel olarak oluşturulmuş, kompakt ve verimli bir görüntü segmentasyon modelidir. Meta'nın Segment Anything Model'inin (SAM) gücünü sınırlı işlem gücüne sahip ortamlara getirmek için tasarlanan MobileSAM, orijinal SAM hattı ile uyumluluğunu korurken neredeyse anlık segmentasyon sağlar. İster gerçek zamanlı uygulamalar geliştiriyor olun ister hafif dağıtımlar yapıyor olun, MobileSAM önceki sürümlerinin boyut ve hız gereksinimlerinin çok küçük bir kısmıyla etkileyici segmentasyon 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 tablo, mevcut MobileSAM modelini, önceden eğitilmiş ağırlıklarını, desteklenen görevleri ve Çıkarım, Doğrulama, Eğitim ve Dışa Aktarma gibi farklı işletim modlarıyla uyumluluğunu özetlemektedir. Desteklenen modlar ✅, desteklenmeyen modlar ❌ ile gösterilmiştir.

Model TipiÖnceden Eğitilmiş AğırlıklarDesteklenen GörevlerÇıkarımDoğrulamaEğitimDışa Aktar (Export)
MobileSAMmobile_sam.ptInstance Segmentasyon

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

Aşağıdaki karşılaştırma, Meta'nın SAM varyantları, MobileSAM ve YOLO26n-seg dahil olmak üzere Ultralytics segmentasyon 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 omurga ile 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ındaki ö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 hesaplama açısından daha 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'li 2025 Apple M4 Air üzerinde çalıştırılmıştır. Bu sonuçları 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 (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ı hattı korur. Bu, iş akışınızda minimum değişiklikle 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ı (632M parametre) çok daha küçük bir Tiny-ViT kodlayıcı (5M parametre) ile değiştirir. Tek bir GPU üzerinde MobileSAM bir görüntüyü yaklaşık 12ms'de işler (kodlayıcı için 8ms, maske kod çözücü için 4ms).

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

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

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

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

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

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

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

İstem Olarak Nokta İçeren Görüntü

İstem Olarak Kutu İçeren Görüntü

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

MobileSAM'i Ultralytics'te Test Etme

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

Model İndirme

MobileSAM önceden eğitilmiş ağırlıklarını Ultralytics varlıklarından indir.

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

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

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

Veri kümeni Ultralytics çerçevesiyle otomatik olarak açıklamak için, aşağıda gösterildiği gibi auto_annotate işlevini kullan:

Örnek
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="mobile_sam.pt")
ArgümanTürVarsayı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, SAM2 varyantları ve MobileSAM modellerini destekler).
devicestr''Hesaplama cihazı (ör. 'cuda:0', 'cpu' veya otomatik cihaz tespiti için boş bırak).
conffloat0.25Zayıf tespitleri filtrelemek için YOLO tespit güven eşiği.
ioufloat0.45Çakışan kutuları filtrelemek için NMS (Non-Maximum Suppression) 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 tespit sayısı.
classeslist[int]NoneTespit edilecek sınıf indeksleri listesi (ör. kişi ve bisiklet için [0, 1]).
output_dirstrNoneAçıklamalar için kaydetme dizini (veri yoluna göre varsayılan olarak './labels').

Alıntılar ve Teşekkür

MobileSAM araştırma veya geliştirmende faydalıysa, lütfen aşağıdaki makaleye atıfta bulunmayı 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}
}

Tam MobileSAM makalesini arXiv üzerinde oku.

SSS

MobileSAM Nedir ve Orijinal SAM Modelinden Farkı Nedir?

MobileSAM, mobil ve uç uygulamalar için optimize edilmiş hafif, hızlı bir görüntü segmentasyon modelidir. Orijinal SAM ile aynı hattı 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, MobileSAM'in orijinal SAM'den yaklaşık 5 kat daha küçük ve 7 kat daha hızlı olmasını sağlar ve görüntü başına SAM'in 456ms'sine karşılık yaklaşık 12ms'de çalışır. MobileSAM'in uygulaması hakkında daha fazlasını MobileSAM GitHub deposunda keşfet.

MobileSAM'i Ultralytics Kullanarak Nasıl Test Edebilirim?

MobileSAM'i Ultralytics'te test etmek basittir. Segmentleri tahmin etmek için Nokta ve Kutu istemlerini kullanabilirsin. Ö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 Test Etme bölümüne bak.

Mobil Uygulamam İç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 modu desteği sunar.

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

MobileSAM, 100 bin görüntülük bir veri kümesiyle (orijinal görüntülerin %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 ayrıntılarına MobileSAM GitHub deposundan erişebilirsin.

MobileSAM İçin Birincil Kullanım Durumları Nelerdir?

MobileSAM, mobil ve uç ortamlarda hızlı, 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 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 durumları ve performans hakkında daha fazla ayrıntı için SAM'den MobileSAM'e Uyarlama bölümüne ve MobileSAM uygulamaları hakkındaki Ultralytics bloguna bak.

Yorumlar