
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ıklar | Desteklenen Görevler | Çıkarım | Doğrulama | Eğitim | Dışa Aktar (Export) |
|---|---|---|---|---|---|---|
| MobileSAM | mobile_sam.pt | Instance 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:
| Model | Boyut (MB) | Parametreler (M) | Hız (CPU) (ms/im) |
|---|---|---|---|
| Meta SAM-b | 375 | 93.7 | 41703 |
| Meta SAM2-b | 162 | 80.8 | 28867 |
| Meta SAM2-t | 78.1 | 38.9 | 23430 |
| MobileSAM | 40.7 | 10.1 | 23802 |
| YOLOv8 omurga ile FastSAM-s | 23.9 | 11.8 | 58.0 |
| Ultralytics YOLOv8n-seg | 7.1 (11.0x daha küçük) | 3.4 (11.4x daha az) | 24.8 (945x daha hızlı) |
| Ultralytics YOLO11n-seg | 6.2 (12.6x daha küçük) | 2.9 (13.4x daha az) | 24.3 (964x daha hızlı) |
| Ultralytics YOLO26n-seg | 6.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:
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 SAM | MobileSAM |
|---|---|---|
| Parametreler | 611M | 5M |
| Hız | 452ms | 8ms |
İstem Kılavuzlu Maske Kod Çözücü
| Maske Kod Çözücü | Orijinal SAM | MobileSAM |
|---|---|---|
| Parametreler | 3.876M | 3.876M |
| Hız | 4ms | 4ms |
Tüm Hattın Karşılaştırması
| Tüm Hat (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.


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
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
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:
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="mobile_sam.pt")| Argüman | Tür | Varsayılan | Açıklama |
|---|---|---|---|
data | str | gerekli | Açıklama veya segmentasyon için hedef görüntüleri içeren dizinin yolu. |
det_model | str | 'yolo26x.pt' | İlk nesne tespiti için YOLO tespit modeli yolu. |
sam_model | str | 'sam_b.pt' | Segmentasyon için SAM model yolu (SAM, SAM2 varyantları ve MobileSAM modellerini destekler). |
device | str | '' | Hesaplama cihazı (ör. 'cuda:0', 'cpu' veya otomatik cihaz tespiti için boş bırak). |
conf | float | 0.25 | Zayıf tespitleri filtrelemek için YOLO tespit güven eşiği. |
iou | float | 0.45 | Çakışan kutuları filtrelemek için NMS (Non-Maximum Suppression) IoU eşiği. |
imgsz | int | 640 | Görüntüleri yeniden boyutlandırmak için giriş boyutu (32'nin katı olmalıdır). |
max_det | int | 300 | Bellek verimliliği için görüntü başına maksimum tespit sayısı. |
classes | list[int] | None | Tespit edilecek sınıf indeksleri listesi (ör. kişi ve bisiklet için [0, 1]). |
output_dir | str | None | Açı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:
@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.