
Mobile Segment Anything (MobileSAM)#
MobileSAM, mobil ve uç cihazlar için özel olarak oluşturulmuş kompakt, verimli bir görüntü segmentasyonu modelidir. Meta'nın Segment Anything Model (SAM) gücünü kısıtlı bilgi işleme kapasitesine sahip ortamlara getirmek için tasarlanan MobileSAM, orijinal SAM hattı ile uyumluluğu korurken neredeyse anında segmentasyon sağlar. İster gerçek zamanlı uygulamalar ister hafif dağıtımlar geliştiriyor ol, MobileSAM seleflerinin 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 Inference, Validation, Training ve Export 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 | Eğitim | Doğrulama | Çıkarım | Dışa Aktar (Export) |
|---|---|---|---|---|---|---|
| MobileSAM | mobile_sam.pt | Örnek Segmentasyonu | ❌ | ❌ | ✅ | ❌ |
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 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 backbone 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ı 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 Apple M4 Air üzerinde gerçekleştirilmiştir. 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ışında minimum değişiklikle SAM'den MobileSAM'e geçebileceğin 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 SAM | MobileSAM |
|---|---|---|
| Parametreler | 637M | 5M |
| Hız | 452ms | 8ms |
İstem Kılavuzlu Maske Çözücü#
| Maske Çö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 | 641M | 9.66M |
| Hız | 456ms | 12ms |
MobileSAM ve orijinal SAM'in performansı, hem nokta hem de kutu istemleri kullanılarak aşağıda gösterilmektedir.


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.
Ultralytics'te MobileSAM Testi#
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#
Ultralytics assets adresinden MobileSAM önceden eğitilmiş ağırlıklarını 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 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 belgelerine bak.
Bir Algılama Modeli Kullanarak Otomatik Olarak Segmentasyon Veri Kümeleri Oluşturma#
Veri kümeni etiketlemek için Ultralytics çerçevesini otomatik olarak kullanmak istersen, aşağıda gösterildiği gibi auto_annotate fonksiyonunu 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 | Tip | 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, SAM 2, MobileSAM ve SAM 3 ağırlıklarını destekler). |
device | str | '' | Hesaplama cihazı (örneğin, 'cuda:0', 'cpu' veya otomatik cihaz tespiti için boş bırak). |
conf | float | 0.25 | Zayıf algılamaları filtrelemek için YOLO algılama güven eşiği. |
iou | float | 0.45 | Çakışan kutuları filtrelemek için Non-Maximum Suppression (NMS) 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 algılama sayısı. |
classes | list[int] | None | Algılanacak sınıf indekslerinin listesi (örneğin kişi ve bisiklet için [0, 1]). |
output_dir | str | None | Etiketler için kaydetme dizini (varsayılan: <data>_auto_annotate_labels kardeş dizini). |
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:
@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 üzerinden oku.
SSS#
MobileSAM Nedir ve Orijinal SAM Modelinden Farkı Nedir?#
MobileSAM, mobil ve uç cihaz uygulamaları için optimize edilmiş, hafif ve hızlı bir image segmentation modelidir. Orijinal SAM ile aynı işlem hattını korur ancak büyük ViT-H kodlayıcıyı (637M parametre) kompakt bir Tiny-ViT kodlayıcı (5M parametre) ile değiştirir. Bu durum MobileSAM'in orijinal SAM'den yaklaşık 5 kat daha küçük ve 7 kat daha hızlı olmasını sağlar; görüntü başına yaklaşık 12 ms'de çalışırken SAM'in süresi 456 ms'dir. MobileSAM'in uygulaması hakkında daha fazlasını MobileSAM GitHub repository adresinden keşfedebilirsin.
Ultralytics Kullanarak MobileSAM'i Nasıl Test Edebilirim?#
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 Ultralytics'te MobileSAM Testi 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ş Inference modunu destekler.
MobileSAM Nasıl Eğitildi ve Eğitim Kodu Mevcut mu?#
MobileSAM, tek bir GPU üzerinde 100k görüntülük bir veri kümesiyle (orijinal görüntülerin %1'i) bir günden kısa 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şebilirsin.
MobileSAM'in Birincil Kullanım Alanları Nelerdir?#
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 algılama ve bölümleme
- 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 durumları ve performans hakkında daha fazla ayrıntı için Adapting from SAM to MobileSAM bölümüne ve MobileSAM uygulamaları hakkındaki Ultralytics bloguna göz at.