İçeriğe geç

MobileSAM Logosu

Mobil Segment Anything (MobileSAM)

MobileSAM, mobil ve uç cihazlar için özel olarak oluşturulmuş kompakt, 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 taşımak için tasarlanan MobileSAM, orijinal SAM 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, seleflerinin 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, Grounding-SAM, AnyLabeling ve Segment Anything in 3D dahil olmak üzere çeşitli projelerde benimsenmiştir.

MobileSAM, 100 binlik bir görüntü veri kümesi (%1 orijinal görüntülerin) kullanılarak tek bir GPU üzerinde bir günden kısa sürede eğitildi. 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 uyumluluğu özetlenmektedir. Desteklenen modlar ✅ ile, desteklenmeyen modlar ise ❌ ile belirtilir.

Model Türü Önceden Eğitilmiş Ağırlıklar Desteklenen Görevler Çıkarım Doğrulama Eğitim Dışa aktar
MobileSAM mobile_sam.pt Örnek Segmentasyonu

MobileSAM'in YOLO ile Karşılaştırılması

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 farklılıkları vurgulamaktadır:

Model Boyut
(MB)
Parametreler
(M)
Hız (CPU)
(ms/resim)
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 backbone ile FastSAM-s 23.7 11.8 55.9
Ultralytics YOLOv8n-seg 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 (864 kat daha hızlı)

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

Testler, 24 GB RAM'e sahip bir 2025 Apple M4 Pro üzerinde gerçekleştirildi. torch==2.6.0 ve ultralytics==8.3.90. 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
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    model(ASSETS)

SAM'den MobileSAM'e Adaptasyon

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şikliklerle 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ının (632M parametre) yerini çok daha küçük bir Tiny-ViT kodlayıcıyla (5M parametre) değiştirir. Tek bir GPU'da MobileSAM, bir görüntüyü yaklaşık 12 ms'de işler (kodlayıcı için 8 ms, maske kod çö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 Yönlendirmeli Maske Kod Çözücü

Maske Kod Çözücü Orijinal SAM MobileSAM
Parametreler 3.876M 3.876M
Hız 4ms 4ms

Tüm İşlem Hattı Karşılaştırması

Tüm İşlem 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.

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

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

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.

Ultralytics'te MobileSAM'i Test Etme

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

Model İndirme

MobileSAM önceden eğitilmiş ağırlıklarını 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 İkisi MobileSAM ve SAM aynı API'yi paylaşır. Daha fazla kullanım ayrıntısı için bkz. SAM belgelendirmesi.

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

Veri kümenizi Ultralytics çerçevesiyle otomatik olarak etiketlemek için şunu kullanın: auto_annotate aşağıda gösterildiği gibi işlev görür:

Örnek

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="mobile_sam.pt")
Argüman Tür Varsayılan Açıklama
data str gerekli Açıklama veya segmentasyon için hedef resimleri içeren dizine giden yol.
det_model str 'yolo11x.pt' İlk nesne tespiti için YOLO tespit model yolu.
sam_model str 'sam_b.pt' Segmentasyon için SAM model yolu (SAM, SAM2 varyantlarını ve mobile_sam modellerini destekler).
device str '' Hesaplama cihazı (örneğin, 'cuda:0', 'cpu' veya otomatik cihaz algılama için '').
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 Non-Maximum Suppression için 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 Algılanacak sınıf indekslerinin listesi (örn., [0, 1] kişi ve bisiklet için).
output_dir str None Açıklamalar için kaydetme dizini (veri yoluna göre varsayılan olarak './labels' olur).

Alıntılar ve Teşekkürler

Araştırmanızda veya geliştirmenizde MobileSAM yardımcı olduysa, lütfen aşağıdaki makaleye atıfta bulunun:

@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}
}

arXiv'deki MobileSAM makalesinin tamamını okuyun.

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 SAM'in 456 ms'sine karşılık görüntü başına yaklaşık 12 ms'de çalışır. MobileSAM'in uygulanması hakkında daha fazla bilgiyi MobileSAM GitHub deposunda inceleyin.

Ultralytics Kullanarak MobileSAM'i Nasıl Test Edebilirim?

Ultralytics'te MobileSAM'i 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 detay için Ultralytics'te MobileSAM'i Test Etme bölümüne bakın.

Mobil Uygulamam İçin Neden MobileSAM Kullanmalıyım?

MobileSAM, hafif tasarımı ve hızlı çıkarım hızı sayesinde 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ı işlem 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. Ek olarak, MobileSAM, mobil performans için optimize edilmiş Çıkarım modunu destekler.

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

MobileSAM, 100 binlik bir görüntü veri kümesi (%1 orijinal görüntülerin) ile tek bir GPU üzerinde 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şebilirsiniz.

MobileSAM'in Başlıca Kullanım Alanları Nelerdir?

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

  • Mobil uygulamalar için Gerçek zamanlı nesne algılama ve segmentasyon
  • Sınırlı işlem gücüne sahip cihazlarda düşük gecikmeli görüntü işleme
  • Artırılmış gerçeklik (AR), analiz ve daha fazlası için yapay zeka destekli mobil uygulamalarda entegrasyon

Kullanım alanları ve performans hakkında daha fazla bilgi için SAM'den MobileSAM'e Adaptasyon ve MobileSAM uygulamaları hakkındaki Ultralytics bloguna bakın.



📅 1 yıl önce oluşturuldu ✏️ 3 ay önce güncellendi

Yorumlar