Mobil Segment Anything (MobileSAM)
MobileSAM makalesi artık arXiv'de mevcuttur.
Bir CPU üzerinde çalışan MobileSAM 'in bir gösterimine bu demo bağlantısından erişilebilir. Mac i5 CPU 'da performans yaklaşık 3 saniye sürer. Üzerinde Hugging Face Demo, arayüz ve düşük performanslı CPU'lar daha yavaş yanıt verilmesine katkıda bulunur, ancak etkili bir şekilde çalışmaya devam eder.
İ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 gibi çeşitli projelerde uygulanmaktadır.
MobileSAM tek bir GPU üzerinde 100 bin veri kümesiyle (orijinal görüntülerin %1'i) bir günden daha kısa bir sürede eğitilmiştir. Bu eğitimin kodu gelecekte kullanıma sunulacaktır.
Mevcut Modeller, Desteklenen Görevler ve Çalışma Modları
Bu tablo, önceden eğitilmiş belirli ağırlıklarıyla birlikte mevcut modelleri, destekledikleri görevleri ve desteklenen modlar için ✅ emojisi ve desteklenmeyen modlar için ❌ emojisi ile gösterilen Çıkarım, Doğrulama, Eğitim ve Dışa Aktarma gibi farklı çalışma modlarıyla uyumluluklarını sunar.
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ı
Burada Meta'nın MobileSAM dahil SAM varyantlarını Ultralytics 'in en küçük segmentasyon modeli olan YOLO11n-seg ile karşılaştırıyoruz:
Model | Boyut (MB) | Parametreler (M) | HızCPU) (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ındaki model boyutları ve hızlarındaki önemli farklılıkları göstermektedir. SAM benzersiz otomatik segmentasyon yetenekleri sunarken, YOLO modelleri, özellikle de 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 testi 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 adresinden MobileSAM
MobileSAM orijinal SAM ile aynı boru hattını koruduğundan, orijinalin ön işleme, son işleme ve diğer tüm arayüzlerini dahil ettik. Sonuç olarak, şu anda orijinal SAM 'u kullananlar minimum çabayla MobileSAM 'a geçiş yapabilirler.
MobileSAM orijinal SAM ile karşılaştırılabilir bir performans sergiliyor ve görüntü kodlayıcısındaki bir değişiklik dışında aynı işlem hattını koruyor. Özellikle, orijinal ağır ViT-H kodlayıcıyı (632M) daha küçük bir Tiny-ViT (5M) ile değiştiriyoruz. Tek bir GPU adresinde, MobileSAM görüntü başına yaklaşık 12 ms'de çalışır: Görüntü kodlayıcıda 8 ms ve maske kod çözücüde 4 ms.
Aşağıdaki tablo ViT tabanlı görüntü kodlayıcıların bir karşılaştırmasını sunmaktadır:
Görüntü Kodlayıcı | Orijinal SAM | MobileSAM |
---|---|---|
Parametreler | 611M | 5M |
Hız | 452ms | 8ms |
Hem orijinal SAM hem de MobileSAM aynı istem güdümlü maske çözücüyü kullanmaktadır:
Maske Çözücü | Orijinal SAM | MobileSAM |
---|---|---|
Parametreler | 3.876M | 3.876M |
Hız | 4ms | 4ms |
İşte tüm boru hattının 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 'un performansı hem bir nokta hem de bir kutu ipucu olarak kullanılarak gösterilmiştir.
Üstün performansıyla MobileSAM , mevcut FastSAM adresinden yaklaşık 5 kat daha küçük ve 7 kat daha hızlıdır. Daha fazla ayrıntı MobileSAM proje sayfasında mevcuttur.
Test MobileSAM içinde Ultralytics
Tıpkı orijinali gibi SAMUltralytics'te hem Nokta hem de Kutu istemleri için modlar da dahil olmak üzere basit bir test yöntemi sunuyoruz.
Model İndir
MobileSAM ön eğitimli ağırlıkları ultralytics adresinden indirebilirsiniz.
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]])
Biz uyguladık MobileSAM
ve SAM
aynı API'yi kullanarak. Daha fazla kullanım bilgisi için lütfen SAM Sayfa.
Bir Algılama Modelinden Yararlanarak Segmentasyon Veri Setlerini Otomatik Olarak Oluşturma
Veri kümenize Ultralytics çerçevesini kullanarak otomatik olarak açıklama eklemek için auto_annotate
fonksiyonu aşağıda gösterildiği gibi:
Örnek
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
Araştırma veya geliştirme çalışmalarınızda MobileSAM adresini faydalı bulursanız, lütfen makalemize atıfta bulunmayı düşünün:
SSS
MobileSAM nedir ve orijinal SAM modelinden farkı nedir?
MobileSAM , mobil uygulamalar için tasarlanmış hafif, hızlı bir görüntü segmentasyon modelidir. Orijinal SAM ile aynı işlem hattını korur ancak ağır ViT-H kodlayıcıyı (632M parametre) daha küçük bir Tiny-ViT kodlayıcı (5M parametre) ile değiştirir. Bu değişiklik, MobileSAM 'in orijinal SAM'den yaklaşık 5 kat daha küçük ve 7 kat daha hızlı olmasıyla sonuçlanır. Örneğin MobileSAM , orijinal SAM'in 456 ms'lik hızına kıyasla görüntü başına yaklaşık 12 ms'de çalışır. MobileSAM GitHub deposundaki çeşitli projelerde MobileSAM uygulaması hakkında daha fazla bilgi edinebilirsiniz.
Ultralytics kullanarak MobileSAM adresini nasıl test edebilirim?
MobileSAM adresini Ultralytics adresinde test etmek basit yöntemlerle gerçekleştirilebilir. Segmentleri tahmin etmek için Nokta ve Kutu istemlerini kullanabilirsiniz. İşte Nokta istemini kullanan bir örnek:
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 Test MobileSAM bölümüne de bakabilirsiniz.
Mobil uygulamam için neden MobileSAM kullanmalıyım?
MobileSAM hafif mimarisi ve yüksek çıkarım hızı nedeniyle mobil 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 hesaplama kaynaklarının sınırlı olduğu ortamlar için uygun hale getirir. Bu verimlilik, mobil cihazların önemli bir gecikme olmadan gerçek zamanlı görüntü segmentasyonu yapabilmesini sağlar. Ayrıca, MobileSAM'un Çıkarım gibi modelleri mobil performans için optimize edilmiştir.
MobileSAM nasıl eğitildi ve eğitim kodu mevcut mu?
MobileSAM orijinal görüntülerin %1'i olan 100 bin veri kümesiyle tek bir GPU üzerinde bir günden daha kısa bir sürede eğitilmiştir. Eğitim kodu gelecekte kullanıma sunulacak olsa da, şu anda MobileSAM 'un diğer yönlerini MobileSAM GitHub deposunda keşfedebilirsiniz. Bu depo, çeşitli uygulamalar için önceden eğitilmiş ağırlıkları ve uygulama ayrıntılarını içerir.
MobileSAM için başlıca kullanım alanları nelerdir?
MobileSAM mobil 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ı hesaplama kaynaklarına sahip cihazlarda düşük gecikmeli görüntü işleme.
- Artırılmış gerçeklik (AR) ve gerçek zamanlı analitik gibi görevler için yapay zeka odaklı mobil uygulamalara entegrasyon.
Daha ayrıntılı kullanım örnekleri ve performans karşılaştırmaları için SAM adresinden MobileSAM adresine uyarlama bölümüne bakın.