Meet YOLO26: next-gen vision AI.

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

Link to this sectionMobile Segment Anything (MobileSAM)#

MobileSAM هو نموذج تجزئة صور مدمج وفعال مصمم خصيصًا للأجهزة المحمولة وأجهزة الحافة (edge devices). صُمم لجلب قوة نموذج 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% من الصور الأصلية) في أقل من يوم واحد. سيتم إصدار كود التدريب في المستقبل.

Link to this sectionالنماذج المتاحة، والمهام المدعومة، وأوضاع التشغيل#

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

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

Link to this sectionمقارنة 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. تم إجراء الاختبارات على جهاز Apple M4 Air لعام 2025 بذاكرة وصول عشوائي (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)

Link to this sectionالتكيف من SAM إلى MobileSAM#

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

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

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

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

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

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

Link to this sectionمقارنة خط الأنابيب بالكامل#

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

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

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

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

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

Link to this sectionاختبار MobileSAM في Ultralytics#

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

Link to this sectionتحميل النموذج#

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

Link to this sectionمطالبة نقطية#

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

Link to this sectionمطالبة مربعة#

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

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

للقيام بـ تعليق مجموعة بياناتك تلقائيًا باستخدام إطار عمل 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).

Link to this sectionالاقتباسات والشكر#

إذا كان 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.

Link to this sectionالأسئلة الشائعة#

Link to this sectionما هو MobileSAM وكيف يختلف عن نموذج SAM الأصلي؟#

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

Link to this sectionكيف يمكنني اختبار 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.

Link to this sectionلماذا يجب أن أستخدم MobileSAM لتطبيقي المحمول؟#

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

Link to this sectionكيف تم تدريب MobileSAM، وهل كود التدريب متاح؟#

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

Link to this sectionما هي حالات الاستخدام الأساسية لـ MobileSAM؟#

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

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

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

التعليقات