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.
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.