شعار نموذج تجزئة الصور خفيف الوزن MobileSAM

Mobile Segment Anything (MobileSAM)

نموذج MobileSAM هو نموذج تجزئة صور مدمج وفعال تم تصميمه خصيصاً للهواتف المحمولة وأجهزة الحافة (edge devices). تم تصميمه لنقل قوة نموذج تجزئة كل شيء من Meta (SAM) إلى البيئات ذات القدرات الحوسبية المحدودة، حيث يقدم MobileSAM تجزئة فورية تقريباً مع الحفاظ على التوافق مع خط أنابيب SAM الأصلي. سواء كنت تقوم بتطوير تطبيقات في الوقت الفعلي أو عمليات نشر خفيفة الوزن، فإن MobileSAM يوفر نتائج تجزئة مذهلة مع جزء صغير من متطلبات الحجم والسرعة مقارنة بأسلافه.



Watch: How to Run Inference with MobileSAM using Ultralytics | Step-by-Step Guide 🎉

تم اعتماد MobileSAM في مجموعة متنوعة من المشاريع، بما في ذلك Grounding-SAM و AnyLabeling و Segment Anything in 3D.

تم تدريب MobileSAM على وحدة معالجة رسومات (GPU) واحدة باستخدام مجموعة بيانات مكونة من 100 ألف صورة (1% من الصور الأصلية) في أقل من يوم واحد. سيتم إصدار كود التدريب في المستقبل.

النماذج المتاحة والمهام المدعومة وأنماط التشغيل

يوضح الجدول أدناه نموذج MobileSAM المتاح، وأوزانه المدربة مسبقاً، والمهام المدعومة، والتوافق مع أوضاع التشغيل المختلفة مثل الاستدلال (Inference)، و التحقق (Validation)، و التدريب (Training)، و التصدير (Export). يشار إلى الأوضاع المدعومة بـ ✅ والأوضاع غير المدعومة بـ ❌.

نوع النموذجالأوزان المدربة مسبقاًالمهام المدعومةالاستدلالالتحققالتدريبتصدير
MobileSAMmobile_sam.ptتجزئة المثيلات

مقارنة MobileSAM مقابل YOLO

تسلط المقارنة التالية الضوء على الاختلافات بين متغيرات SAM من Meta، وMobileSAM، ونماذج التجزئة من Ultralytics بما في ذلك YOLO26n-seg:

النموذجالحجم
(MB)
المعلمات
(M)
السرعة (CPU)
(ms/im)
Meta SAM-b37593.741703
Meta SAM2-b16280.828867
Meta SAM2-t78.138.923430
MobileSAM40.710.123802
FastSAM-s مع backbone الخاص بـ YOLOv823.911.858.0
Ultralytics YOLOv8n-seg7.1 (أصغر بـ 11.0 مرة)3.4 (أقل بـ 11.4 مرة)24.8 (أسرع بـ 945 مرة)
Ultralytics YOLO11n-seg6.2 (أصغر بـ 12.6 مرة)2.9 (أقل بـ 13.4 مرة)24.3 (أسرع بـ 964 مرة)
Ultralytics YOLO26n-seg6.7 (أصغر بـ 11.7 مرة)2.7 (أقل بـ 14.4 مرة)25.2 (أسرع بـ 930 مرة)

توضح هذه المقارنة الاختلافات الجوهرية في حجم النموذج وسرعته بين متغيرات SAM ونماذج التجزئة من YOLO. بينما توفر نماذج SAM قدرات فريدة للتجزئة التلقائية، فإن نماذج YOLO—وخاصة YOLOv8n-seg و YOLO11n-seg و YOLO26n-seg—أصغر بكثير، وأسرع، وأكثر كفاءة من الناحية الحسابية.

تم قياس سرعات SAM باستخدام PyTorch، وسرعات YOLO باستخدام ONNX Runtime. تم إجراء الاختبارات على جهاز 2025 Apple M4 Air بذاكرة وصول عشوائي (RAM) سعة 16 جيجابايت باستخدام torch==2.10.0 و ultralytics==8.4.31 و onnxruntime==1.24.4. لإعادة إنتاج هذه النتائج:

مثال
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 إلى MobileSAM

يحتفظ MobileSAM بنفس خط الأنابيب الخاص بـ SAM الأصلي، بما في ذلك المعالجة المسبقة، والمعالجة اللاحقة، وجميع الواجهات. وهذا يعني أنه يمكنك الانتقال من SAM إلى MobileSAM بأقل قدر من التغييرات في سير عملك.

الاختلاف الرئيسي هو مشفر الصور (image encoder): يستبدل MobileSAM مشفر ViT-H الأصلي (632 مليون معامل) بمشفر Tiny-ViT أصغر بكثير (5 ملايين معامل). على وحدة معالجة رسومات (GPU) واحدة، يعالج MobileSAM صورة في حوالي 12 مللي ثانية (8 مللي ثانية للمشفر، 4 مللي ثانية لفك تشفير القناع).

مقارنة مشفر الصور المستند إلى ViT

مشفر الصورSAM الأصليMobileSAM
المعاملات611 مليون5 ملايين
السرعة452 مللي ثانية8 مللي ثانية

فك تشفير القناع الموجه بالمطالبة (Prompt-Guided Mask Decoder)

فك تشفير القناعSAM الأصليMobileSAM
المعاملات3.876 مليون3.876 مليون
السرعة4 مللي ثانية4 مللي ثانية

مقارنة خط الأنابيب الكامل

خط الأنابيب الكامل (المشفر + فك التشفير)SAM الأصليMobileSAM
المعاملات615 مليون9.66 مليون
السرعة456 مللي ثانية12 مللي ثانية

يتم توضيح أداء MobileSAM و SAM الأصلي أدناه باستخدام مطالبات النقاط والمربعات.

صورة مع نقطة كمطالبة

صورة مع مربع كمطالبة

يعد MobileSAM أصغر بنحو 7 مرات وأسرع بنحو 5 مرات من FastSAM. لمزيد من التفاصيل، تفضل بزيارة صفحة مشروع MobileSAM.

اختبار MobileSAM في Ultralytics

تماماً مثل SAM الأصلي، توفر Ultralytics واجهة بسيطة لاختبار MobileSAM، مع دعم لمطالبات النقاط والمربعات.

تنزيل النموذج

قم بتنزيل أوزان MobileSAM المدربة مسبقاً من أصول Ultralytics.

مطالبة النقطة

مثال
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]])

مطالبة المربع

مثال
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]])

يتشارك كل من MobileSAM و SAM نفس الـ API. لمزيد من تفاصيل الاستخدام، راجع وثائق SAM.

بناء مجموعات بيانات التجزئة تلقائياً باستخدام نموذج الكشف

للقيام بـ تعليق مجموعتك من البيانات تلقائياً باستخدام إطار عمل Ultralytics، استخدم الدالة auto_annotate كما هو موضح أدناه:

مثال
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="mobile_sam.pt")
المعاملالنوعالافتراضيالوصف
datastrمطلوبالمسار إلى الدليل الذي يحتوي على الصور المستهدفة للترميز أو التقطيع.
det_modelstr'yolo26x.pt'مسار نموذج كشف YOLO للكشف الأولي عن الكائنات.
sam_modelstr'sam_b.pt'مسار نموذج SAM للتقطيع (يدعم SAM، ومتغيرات SAM2، ونماذج MobileSAM).
devicestr''جهاز الحوسبة (مثلاً 'cuda:0'، أو 'cpu'، أو '' للكشف التلقائي عن الجهاز).
conffloat0.25عتبة ثقة كشف YOLO لتصفية الكشوف الضعيفة.
ioufloat0.45عتبة IoU لـ Non-Maximum Suppression لتصفية الصناديق المتداخلة.
imgszint640حجم الإدخال لتغيير حجم الصور (يجب أن يكون مضاعفاً لـ 32).
max_detint300الحد الأقصى لعدد الكشوف لكل صورة لكفاءة الذاكرة.
classeslist[int]Noneقائمة بفهارس الفئات للكشف (مثلاً [0, 1] للشخص والدراجة).
output_dirstrNoneدليل الحفظ للترميزات (الافتراضي هو './labels' بالنسبة لمسار البيانات).

الاقتباسات والشكر

إذا كان MobileSAM مفيداً في بحثك أو تطويرك، فيرجى التفكير في الاستشهاد بالورقة العلمية التالية:

اقتباس
@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 كاملة على arXiv.

الأسئلة الشائعة

ما هو MobileSAM وكيف يختلف عن نموذج SAM الأصلي؟

MobileSAM هو نموذج تجزئة صور خفيف الوزن وسريع ومحسن لتطبيقات الهاتف المحمول والحافة. يحافظ على نفس خط الأنابيب الخاص بـ SAM الأصلي ولكنه يستبدل مشفر ViT-H الكبير (632 مليون معامل) بمشفر Tiny-ViT مدمج (5 ملايين معامل). ينتج عن هذا أن MobileSAM أصغر بنحو 5 مرات وأسرع بنحو 7 مرات من SAM الأصلي، حيث يعمل عند حوالي 12 مللي ثانية لكل صورة مقابل 456 مللي ثانية لـ SAM. استكشف المزيد حول تنفيذ MobileSAM في مستودع MobileSAM على GitHub.

كيف يمكنني اختبار MobileSAM باستخدام Ultralytics؟

اختبار MobileSAM في Ultralytics بسيط ومباشر. يمكنك استخدام مطالبات النقاط والمربعات للتنبؤ بالقطاعات. على سبيل المثال، باستخدام مطالبة نقطة:

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])

لمزيد من التفاصيل، راجع قسم اختبار MobileSAM في Ultralytics.

لماذا يجب أن أستخدم MobileSAM لتطبيقي المحمول؟

يعد MobileSAM مثالياً لتطبيقات الهاتف المحمول والحافة نظراً لتصميمه خفيف الوزن وسرعة استدلاله الفائقة. مقارنة بـ SAM الأصلي، فإن MobileSAM أصغر بنحو 5 مرات وأسرع بنحو 7 مرات، مما يجعله مناسباً للتجزئة في الوقت الفعلي على الأجهزة ذات الموارد الحوسبية المحدودة. تتيح كفاءته للأجهزة المحمولة إجراء تجزئة صور في الوقت الفعلي دون تأخير كبير. بالإضافة إلى ذلك، يدعم MobileSAM وضع الاستدلال (Inference mode) المحسن لأداء الهاتف المحمول.

كيف تم تدريب MobileSAM، وهل كود التدريب متاح؟

تم تدريب MobileSAM على وحدة معالجة رسومات (GPU) واحدة باستخدام مجموعة بيانات مكونة من 100 ألف صورة (1% من الصور الأصلية) في أقل من يوم. بينما سيتم إصدار كود التدريب في المستقبل، يمكنك حالياً الوصول إلى الأوزان المدربة مسبقاً وتفاصيل التنفيذ من مستودع MobileSAM على GitHub.

ما هي حالات الاستخدام الأساسية لـ MobileSAM؟

تم تصميم MobileSAM لتجزئة الصور بشكل سريع وفعال في بيئات الهاتف المحمول والحافة. تشمل حالات الاستخدام الأساسية ما يلي:

  • كشف وتجزئة الكائنات في الوقت الفعلي لتطبيقات الهاتف المحمول
  • معالجة صور ذات زمن انتقال منخفض على الأجهزة ذات القدرات الحوسبية المحدودة
  • التكامل في تطبيقات الهاتف المحمول المدعومة بالذكاء الاصطناعي للواقع المعزز (AR)، والتحليلات، والمزيد

لمزيد من التفاصيل حول حالات الاستخدام والأداء، راجع التكيف من SAM إلى MobileSAM و مدونة Ultralytics حول تطبيقات MobileSAM.

التعليقات