رؤية YOLO 2026:

MobileSAM lightweight image segmentation model logo

Mobile Segment Anything (MobileSAM)#

MobileSAM هو نموذج تجزئة صور مدمج وفعال مصمم خصيصاً للهواتف المحمولة والأجهزة الطرفية. صُمم لجلب قوة نموذج Segment Anything الخاص بـ 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:

النموذجالحجم
(ميغابايت)
المعلمات
(مليون)
السرعة (وحدة المعالجة المركزية)
(ميلي ثانية/صورة)
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.0x)3.4 (أقل بـ 11.4x)24.8 (أسرع بـ 945x)
Ultralytics YOLO11n-seg6.2 (أصغر بـ 12.6x)2.9 (أقل بـ 13.4x)24.3 (أسرع بـ 964x)
Ultralytics YOLO26n-seg6.7 (أصغر بـ 11.7x)2.7 (أقل بـ 14.4x)25.2 (أسرع بـ 930x)

تُظهر هذه المقارنة الاختلافات الجوهرية في حجم وسرعة النموذج بين متغيرات 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 بأقل قدر من التغييرات في سير العمل الخاص بك.

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

مقارنة مشفر الصور القائم على ViT#

مشفر الصورSAM الأصليMobileSAM
المعاملات637M5M
السرعة452ms8ms

فك تشفير القناع الموجه بالمطالبة#

فك تشفير القناعSAM الأصليMobileSAM
المعاملات3.876M3.876M
السرعة4ms4ms

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

خط الأنابيب بالكامل (المشفر+فك التشفير)SAM الأصليMobileSAM
المعاملات641M9.66M
السرعة456ms12ms

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

Image with Point as Prompt

Image with Box as Prompt

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

اختبار MobileSAM في Ultralytics#

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

تحميل النموذج#

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

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

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

يشترك كل من MobileSAM وSAM في نفس واجهة برمجة التطبيقات (API). لمزيد من تفاصيل الاستخدام، راجع SAM documentation.

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

للتعليق التلقائي على annotate your dataset باستخدام إطار عمل 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 وSAM 2 وMobileSAM وSAM 3).
devicestr''جهاز الحوسبة (مثلاً 'cuda:0' أو 'cpu' أو '' للاكتشاف التلقائي للجهاز).
conffloat0.25عتبة ثقة كشف YOLO لتصفية الاكتشافات الضعيفة.
ioufloat0.45عتبة IoU لـ Non-Maximum Suppression لتصفية المربعات المتداخلة.
imgszint640حجم الإدخال لتغيير حجم الصور (يجب أن يكون من مضاعفات 32).
max_detint300الحد الأقصى لعدد الاكتشافات لكل صورة لتحسين كفاءة الذاكرة.
classeslist[int]Noneقائمة مؤشرات الفئات المراد اكتشافها (على سبيل المثال، [0, 1] للشخص والدراجة).
output_dirstrNoneحفظ دليل التعليقات التوضيحية (افتراضي: <data>_auto_annotate_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 paper on arXiv بالكامل.

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

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

  • اختبار 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])

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

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

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

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

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

    لمزيد من التفاصيل حول حالات الاستخدام والأداء، راجع Adapting from SAM to MobileSAM وUltralytics blog on MobileSAM applications.

التعليقات