
نموذج Mobile Segment Anything (MobileSAM)
MobileSAM هو نموذج تقسيم صور مدمج وعالي الكفاءة مصمم خصيصاً للأجهزة المحمولة وأجهزة الحافة (edge devices). صُمم ليقدم قوة نموذج Meta's Segment Anything Model (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, التحقق, التدريب، و التصدير (Export). تتم الإشارة إلى الأنماط المدعومة بـ ✅ والأنماط غير المدعومة بـ ❌.
| نوع النموذج | الأوزان المدربة مسبقاً | المهام المدعومة | Inference | التحقق | التدريب | التصدير (Export) |
|---|---|---|---|---|---|---|
| MobileSAM | mobile_sam.pt | تجزئة المثيلات | ✅ | ❌ | ❌ | ❌ |
مقارنة MobileSAM مقابل YOLO
تُبرز المقارنة التالية الاختلافات بين متغيرات SAM من Meta، وMobileSAM، ونماذج التقسيم من Ultralytics بما في ذلك YOLO26n-seg:
| النموذج | الحجم (MB) | المعلمات (Parameters) (M) | السرعة (CPU) (ms/im) |
|---|---|---|---|
| Meta SAM-b | 375 | 93.7 | 41703 |
| Meta SAM2-b | 162 | 80.8 | 28867 |
| Meta SAM2-t | 1.6 | 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 | 2.8 ± 0.0 (أصغر بـ 12.6 مرة) | 2.9 (أقل بـ 13.4 مرة) | 24.3 (أسرع بـ 964 مرة) |
| Ultralytics YOLO26n-seg | 7.9 ± 0.2 (أصغر بـ 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) سعة 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 |
|---|---|---|
| المعلمات (Parameters) | 611M | 5M |
| السرعة | 452ms | 8ms |
فك قناع التقسيم الموجه بالمطالبات (Prompt-Guided Mask Decoder)
| فك قناع التقسيم | SAM الأصلي | MobileSAM |
|---|---|---|
| المعلمات (Parameters) | 3.876M | 3.876M |
| السرعة | 4ms | 4ms |
مقارنة خط الأنابيب بالكامل
| خط الأنابيب بالكامل (Enc+Dec) | SAM الأصلي | MobileSAM |
|---|---|---|
| المعلمات (Parameters) | 615M | 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 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.
بناء مجموعات بيانات التقسيم تلقائياً باستخدام نموذج كشف
للقيام بـ تعليق مجموعة بياناتك (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")| الوسيط (Argument) | النوع (Type) | الافتراضي (Default) | الوصف (Description) |
|---|---|---|---|
data | str | مطلوب | مسار الدليل الذي يحتوي على الصور المستهدفة للتعليق أو التقسيم. |
det_model | str | 'yolo26x.pt' | مسار نموذج كشف YOLO للكشف الأولي عن الكائنات. |
sam_model | str | 'sam_b.pt' | مسار نموذج SAM للتقسيم (يدعم متغيرات SAM وSAM2 ونماذج MobileSAM). |
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 | دليل الحفظ للتعليقات التوضيحية (الافتراضي هو './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 أمر مباشر. يمكنك استخدام مطالبات النقاط (Point) والمربعات (Box) للتنبؤ بالقطاعات. على سبيل المثال، باستخدام مطالبة النقطة:
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 وضع الاستدلال المحسن لأداء الأجهزة المحمولة.
كيف تم تدريب MobileSAM، وهل كود التدريب متاح؟
تم تدريب MobileSAM على GPU واحد باستخدام مجموعة بيانات مكونة من 100 ألف صورة (1% من الصور الأصلية) في أقل من يوم. بينما سيتم إصدار كود التدريب في المستقبل، يمكنك حالياً الوصول إلى الأوزان المدربة مسبقاً وتفاصيل التنفيذ من مستودع MobileSAM على GitHub.
ما هي حالات الاستخدام الأساسية لـ MobileSAM؟
تم تصميم MobileSAM لتجزئة الصور بسرعة وكفاءة في بيئات الأجهزة المحمولة والحافة. تشمل حالات الاستخدام الأساسية:
- في الوقت الفعلي اكتشاف وتجزئة الكائنات لتطبيقات الهاتف المحمول
- معالجة الصور ذات التأخير المنخفض على الأجهزة ذات القدرة الحوسبية المحدودة
- التكامل في تطبيقات الهاتف المحمول المدعومة بالذكاء الاصطناعي للواقع المعزز (AR)، والتحليلات، والمزيد
لمزيد من التفاصيل حول حالات الاستخدام والأداء، انظر التكيف من SAM إلى MobileSAM و مدونة Ultralytics حول تطبيقات MobileSAM.