
تقسيم أي شيء للأجهزة المحمولة (MobileSAM)#
MobileSAM هو نموذج مدمج وفعّال لتقسيم الصور، صُمم خصيصًا للأجهزة المحمولة وأجهزة الحافة. وقد صُمم لجلب إمكانات نموذج 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 المتاح، وأوزانه المدرّبة مسبقًا، والمهام المدعومة، والتوافق مع أنماط التشغيل المختلفة مثل الاستدلال والتحقق والتدريب والتصدير. ويُشار إلى الأنماط المدعومة بالرمز ✅، وإلى الأنماط غير المدعومة بالرمز ❌.
| نوع النموذج | الأوزان المدرّبة مسبقًا | المهام المدعومة | التدريب | التحقق | الاستدلال | التصدير |
|---|---|---|---|---|---|---|
| MobileSAM | mobile_sam.pt | تقسيم الكائنات | ❌ | ❌ | ✅ | ❌ |
مقارنة MobileSAM مع YOLO#
تسلّط المقارنة التالية الضوء على الفروق بين متغيرات SAM من Meta وMobileSAM ونماذج Ultralytics لتقسيم الصور، بما في ذلك YOLO26n-seg:
| النموذج | الحجم (ميغابايت) | المعلمات (مليون) | السرعة (CPU) (مللي ثانية/صورة) |
|---|---|---|---|
| Meta SAM-b | 375 | 93.7 | 41703 |
| Meta SAM2-b | 162 | 80.8 | 28867 |
| Meta SAM2-t | 78.1 | 38.9 | 23430 |
| MobileSAM | 40.7 | 10.1 | 23802 |
| FastSAM-s مع العمود الفقري لـ YOLOv8 | 23.9 | 11.8 | 58.0 |
| Ultralytics YOLOv8n-seg | 7.1 (أصغر بـ 11.0x) | 3.4 (أقل بـ 11.4x) | 24.8 (أسرع بـ 945x) |
| Ultralytics YOLO11n-seg | 6.2 (أصغر بمقدار 12.6 مرة) | 2.9 (أقل بـ 13.4x) | 24.3 (أسرع بمقدار 964 مرة) |
| Ultralytics YOLO26n-seg | 6.7 (أصغر بـ 11.7x) | 2.7 (معلمات أقل بمقدار 14.4 مرة) | 25.2 (أسرع بـ 930x) |
تُظهر هذه المقارنة الفروق الكبيرة في حجم النماذج وسرعتها بين متغيرات SAM ونماذج YOLO لتقسيم الصور. وعلى الرغم من أن نماذج SAM توفر إمكانات فريدة للتقسيم التلقائي، فإن نماذج YOLO—وخاصة YOLOv8n-seg وYOLO11n-seg وYOLO26n-seg—أصغر بكثير وأسرع وأكثر كفاءة حوسبيًا.
قِيست سرعات SAM باستخدام PyTorch، وقِيست سرعات YOLO باستخدام ONNX Runtime. أُجريت الاختبارات على جهاز Apple M4 Air لعام 2025 مزود بذاكرة RAM سعتها 16GB، باستخدام 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, nms=False) # YOLO26 NMS-free head; no-op for YOLOv8/YOLO11
model = YOLO(onnx_path)
model(ASSETS)التكيّف من SAM إلى MobileSAM#
يحتفظ MobileSAM بخط الأنابيب نفسه المستخدم في SAM الأصلي، بما في ذلك المعالجة المسبقة والمعالجة اللاحقة وجميع الواجهات. وهذا يعني أنه يمكنك الانتقال من SAM إلى MobileSAM مع إجراء تغييرات طفيفة على سير عملك.
يكمن الاختلاف الأساسي في مُرمّز الصور: إذ يستبدل MobileSAM مُرمّز ViT-H الأصلي (637 مليون معلمة) بمُرمّز Tiny-ViT أصغر بكثير (5 ملايين معلمة). وعلى وحدة GPU واحدة، يعالج MobileSAM الصورة في نحو 12 مللي ثانية (8 مللي ثوانٍ للمُرمّز و4 مللي ثوانٍ لفك ترميز القناع).
مقارنة مُرمّزات الصور المعتمدة على ViT#
| مُرمّز الصور | SAM الأصلي | MobileSAM |
|---|---|---|
| المعلمات | 637M | 5M |
| السرعة | 452ms | 8ms |
فك ترميز القناع الموجّه بالمحفّزات#
| فك ترميز القناع | SAM الأصلي | MobileSAM |
|---|---|---|
| المعلمات | 3.876M | 3.876M |
| السرعة | 4ms | 4ms |
مقارنة خط الأنابيب الكامل#
| خط الأنابيب الكامل (Enc+Dec) | SAM الأصلي | MobileSAM |
|---|---|---|
| المعلمات | 641M | 9.66M |
| السرعة | 456ms | 12ms |
يوضح أدناه أداء 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 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.
إنشاء مجموعات بيانات التقسيم تلقائيًا باستخدام نموذج كشف#
لتنفيذ التعليق التوضيحي على مجموعة بياناتك تلقائيًا باستخدام إطار عمل 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")| الوسيطة | النوع | الافتراضي | الوصف |
|---|---|---|---|
data | str | مطلوب | مسار الدليل الذي يحتوي على الصور المستهدفة لإضافة التعليقات التوضيحية أو التقسيم. |
det_model | str | 'yolo26x.pt' | مسار نموذج اكتشاف YOLO لاكتشاف الكائنات مبدئيًا. |
sam_model | str | 'sam_b.pt' | مسار نموذج SAM للتقسيم (يدعم أوزان SAM وSAM 2 وMobileSAM وSAM 3). |
device | str | '' | جهاز الحساب (مثل 'cuda:0' أو 'cpu' أو '' لاكتشاف الجهاز تلقائيًا). |
conf | float | 0.25 | عتبة الثقة لاكتشاف YOLO لتصفية الاكتشافات الضعيفة. |
iou | float | 0.45 | عتبة IoU الخاصة بـ Non-Maximum Suppression لتصفية المربعات المتداخلة. |
imgsz | int | 640 | حجم الإدخال لتغيير حجم الصور (يجب أن يكون من مضاعفات 32). |
max_det | int | 300 | الحد الأقصى لعدد الاكتشافات لكل صورة لتحسين كفاءة الذاكرة. |
classes | list[int] | None | قائمة فهارس الفئات المراد اكتشافها (مثل [0, 1] للشخص والدراجة). |
output_dir | str | None | دليل حفظ التعليقات التوضيحية (الافتراضي: الدليل الشقيق لـ <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 كاملة على arXiv.
الأسئلة الشائعة#
MobileSAM هو نموذج تجزئة الصور خفيف الوزن وسريع ومُحسَّن لتطبيقات الهواتف المحمولة وتطبيقات الحوسبة الطرفية. يحتفظ MobileSAM بنفس خط الأنابيب الخاص بن نموذج SAM الأصلي ولكنه يستبدل مشفر ViT-H الكبير (637 مليون معلمة) بمشفر Tiny-ViT مدمج (5 ملايين معلمة). هذا يجعل خط أنابيب MobileSAM بالكامل أصغر بحوالي 66 مرة من نموذج SAM الأصلي (9.66 مليون مقابل 641 مليون معلمة) وأسرع بحوالي 38 مرة، حيث يعمل في حوالي 12 مللي ثانية لكل صورة مقابل 456 مللي ثانية لنموذج SAM. استكشف المزيد حول تنفيذ MobileSAM على مستودع GitHub الخاص بـ MobileSAM.
اختبار 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 مثالي لتطبيقات الهواتف المحمولة وتطبيقات الحوسبة الطرفية نظراً لتصميمه خفيف الوزن وسرعة الاستدلال الفائقة. مقارنةً بنموذج SAM الأصلي، يمتلك MobileSAM معاملات أقل بحوالي 66 مرة ويعمل أسرع بحوالي 38 مرة، مما يجعله مناسباً للتجزئة في الوقت الفعلي على الأجهزة ذات موارد الحوسبة المحدودة. تتيح كفاءة MobileSAM للأجهزة المحمولة إجراء تجزئة الصور في الوقت الفعلي دون تأخير كبير. بالإضافة إلى ذلك، يدعم MobileSAM وضع الاستدلال المُحسَّن لأداء الهواتف المحمولة.
تم تدريب MobileSAM على وحدة معالجة رسومية (GPU) واحدة باستخدام مجموعة بيانات تضم 100 ألف صورة (1% من صور SA-1B الأصلية) في أقل من يوم، من خلال تقطير مشفر صور SAM من نوع ViT-H إلى مشفر Tiny-ViT. الأوزان المدربة مسبقاً وتفاصيل التنفيذ متاحة من مستودع GitHub الخاص بـ MobileSAM.
صُمم MobileSAM لتقسيم الصور بسرعة وكفاءة في بيئات الأجهزة المحمولة وأجهزة الحافة. وتشمل حالات الاستخدام الأساسية:
- كشف الكائنات وتقسيمها في الوقت الفعلي لتطبيقات الأجهزة المحمولة
- معالجة الصور بزمن استجابة منخفض على الأجهزة ذات قدرات الحوسبة المحدودة
- التكامل في تطبيقات الأجهزة المحمولة المدعومة بالذكاء الاصطناعي للواقع المعزز (AR) والتحليلات وغير ذلك
لمزيد من التفاصيل حول حالات الاستخدام والأداء، راجع التكيّف من SAM إلى MobileSAM ومدونة Ultralytics حول تطبيقات MobileSAM.