
نموذج تقسيم أي شيء للأجهزة المحمولة (MobileSAM)#
MobileSAM نموذج مدمج وفعّال لتقسيم الصور، صُمم خصيصًا للأجهزة المحمولة والأجهزة الطرفية. وقد صُمم لنقل إمكانات نموذج تقسيم أي شيء من Meta (SAM) إلى البيئات محدودة القدرة الحاسوبية، ويوفر MobileSAM تقسيمًا شبه فوري مع الحفاظ على التوافق مع مسار المعالجة الأصلي لـ SAM. وسواء كنت تطور تطبيقات آنية أو عمليات نشر خفيفة، يقدم MobileSAM نتائج تقسيم مبهرة مع احتياجات أقل بكثير من حيث الحجم والسرعة مقارنةً بأسلافه.
شاهد: كيفية تنفيذ الاستدلال باستخدام MobileSAM عبر Ultralytics | دليل خطوة بخطوة 🎉
اعتُمد MobileSAM في مجموعة متنوعة من المشاريع، بما فيها Grounding-SAM وAnyLabeling وSegment Anything in 3D.
دُرّب MobileSAM على GPU واحد باستخدام مجموعة بيانات تضم 100k صورة (1% من الصور الأصلية) في أقل من يوم.
النماذج المتاحة والمهام المدعومة وأوضاع التشغيل#
يوضح الجدول أدناه نموذج MobileSAM المتاح وأوزانه المدرّبة مسبقًا والمهام المدعومة ومدى توافقه مع أوضاع التشغيل المختلفة مثل الاستدلال والتحقق والتدريب والتصدير. يُشار إلى الأوضاع المدعومة بالرمز ✅ وغير المدعومة بالرمز ❌.
| نوع النموذج | الأوزان المدرّبة مسبقاً | المهام المدعومة | التدريب | التحقق | الاستدلال | التصدير |
|---|---|---|---|---|---|---|
| MobileSAM | mobile_sam.pt | تجزئة الكائنات | ❌ | ❌ | ✅ | ❌ |
مقارنة MobileSAM بـ YOLO#
تسلط المقارنة التالية الضوء على الاختلافات بين متغيرات SAM من Meta وMobileSAM ونماذج التقسيم من Ultralytics، بما فيها YOLO26n-seg:
| النموذج | الحجم (MB) | المعلمات (M) | السرعة (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.0 مرة) | 3.4 (أقل 11.4 مرة) | 24.8 (أسرع 945 مرة) |
| Ultralytics YOLO11n-seg | 6.2 (أصغر 12.6 مرة) | 2.9 (أقل 13.4 مرة) | 24.3 (أسرع 964 مرة) |
| Ultralytics YOLO26n-seg | 6.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. أُجريت الاختبارات على جهاز 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
# تحليل أداء 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)
# أنشئ ملفًا تعريفيًا لـ FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)
# تحليل أداء نماذج YOLO (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) # رأس NMS-free في YOLO26؛ لا إجراء لـ YOLOv8/YOLO11
model = YOLO(onnx_path)
model(ASSETS)الانتقال من SAM إلى MobileSAM#
يحافظ MobileSAM على خط المعالجة نفسه الذي يستخدمه SAM الأصلي، بما في ذلك المعالجة المسبقة والمعالجة اللاحقة وجميع الواجهات. وهذا يعني أنه يمكنك الانتقال من SAM إلى MobileSAM مع إجراء تغييرات طفيفة على سير عملك.
يكمن الاختلاف الأساسي في مشفّر الصور: إذ يستبدل MobileSAM مشفّر ViT-H الأصلي (637M معلمة) بمشفّر Tiny-ViT أصغر بكثير (5M معلمات). وعلى وحدة GPU واحدة، يعالج MobileSAM الصورة في نحو 12ms (8ms للمشفّر و4ms لفك ترميز القناع).
مقارنة مشفّرات الصور القائمة على ViT#
| مشفّر الصور | SAM الأصلي | MobileSAM |
|---|---|---|
| المعلمات | 637M | 5M |
| السرعة | 452ms | 8ms |
مفكّك ترميز الأقنعة الموجّه بالمطالبات#
| مفكّك ترميز الأقنعة | SAM الأصلي | MobileSAM |
|---|---|---|
| المعلمات | 3.876M | 3.876M |
| السرعة | 4ms | 4ms |
مقارنة خط المعالجة الكامل#
| خط المعالجة الكامل (المشفّر + مفكّك الترميز) | 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
# حمّل النموذج
model = SAM("mobile_sam.pt")
# تنبأ بقسم اعتمادًا على مطالبة نقطة واحدة
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])
# تنبأ بأقسام متعددة اعتمادًا على مطالبات نقاط متعددة
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])
# تنبأ بقسم اعتمادًا على مطالبات نقاط متعددة لكل كائن
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])
# تنبأ بقسم باستخدام مطالبات إيجابية وسلبية معًا.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])مطالبة المربع#
from ultralytics import SAM
# حمّل النموذج
model = SAM("mobile_sam.pt")
# تنبأ بقسم اعتمادًا على مطالبة مربع واحد
model.predict("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])
# تنبأ بأقسام متعددة اعتمادًا على مطالبات مربعات متعددة
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 لكبت غير الأقصى لتصفية المربعات المتداخلة. |
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 نموذج خفيف وسريع لـتجزئة الصور، ومحسّن للتطبيقات على الأجهزة المحمولة والحوسبة الطرفية. ويحافظ على خط المعالجة نفسه الذي يستخدمه SAM الأصلي، لكنه يستبدل مشفّر ViT-H الكبير (637M معلمة) بمشفّر Tiny-ViT مدمج (5M معلمات). وهذا يجعل خط معالجة MobileSAM الكامل أصغر بنحو 66 مرة من خط معالجة SAM الأصلي (9.66M مقابل 641M معلمة)، وأسرع بنحو 38 مرة، إذ يعالج الصورة في نحو 12 ms مقابل 456 ms في SAM. اكتشف المزيد عن تنفيذ MobileSAM في مستودع MobileSAM على GitHub.
اختبار MobileSAM في Ultralytics أمرٌ مباشر. يمكنك استخدام مطالبات النقاط والمربعات للتنبؤ بالأقسام. على سبيل المثال، باستخدام مطالبة نقطة:
from ultralytics import SAM # حمّل النموذج model = SAM("mobile_sam.pt") # تنبأ بقسم اعتمادًا على مطالبة نقطة model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])لمزيد من التفاصيل، راجع قسم اختبار MobileSAM في Ultralytics.
يُعد MobileSAM مثاليًا للتطبيقات على الأجهزة المحمولة والحوسبة الطرفية بفضل تصميمه الخفيف وسرعة الاستدلال العالية. وبالمقارنة مع SAM الأصلي، يحتوي MobileSAM على عدد معلمات أقل بنحو 66 مرة ويعمل بسرعة أكبر بنحو 38 مرة، ما يجعله مناسبًا لتجزئة الصور في الوقت الفعلي على الأجهزة ذات الموارد الحاسوبية المحدودة. وتتيح كفاءته للأجهزة المحمولة إجراء تجزئة الصور في الوقت الفعلي دون زمن استجابة ملحوظ. بالإضافة إلى ذلك، يدعم MobileSAM وضع الاستدلال المحسّن لأداء الأجهزة المحمولة.
دُرّب MobileSAM على وحدة GPU واحدة باستخدام مجموعة بيانات تضم 100k صورة (1% من صور SA-1B الأصلية)، واستغرق ذلك أقل من يوم، مع تقطير مشفّر الصور ViT-H في SAM إلى مشفّر Tiny-ViT. تتوفر الأوزان المدرّبة مسبقًا وتفاصيل التنفيذ في مستودع MobileSAM على GitHub.
صُمم MobileSAM لتجزئة الصور بسرعة وكفاءة في البيئات المحمولة والطرفية. وتشمل حالات الاستخدام الأساسية:
- كشف الكائنات وتجزئتها في الوقت الفعلي للتطبيقات المحمولة
- معالجة الصور بزمن استجابة منخفض على الأجهزة ذات القدرات الحاسوبية المحدودة
- التكامل في تطبيقات الأجهزة المحمولة المدعومة بالذكاء الاصطناعي للواقع المعزز (AR) والتحليلات وغير ذلك
لمزيد من التفاصيل حول حالات الاستخدام والأداء، راجع الانتقال من SAM إلى MobileSAM ومدونة Ultralytics حول تطبيقات Segment Anything.