تقسيم أي شيء للجوال (MobileSAM)
MobileSAM هو نموذج تجزئة صور مضغوط وفعال مصمم خصيصًا للأجهزة المحمولة والحافة. تم تصميمه لتقديم قوة نموذج تجزئة أي شيء الخاص بـ Meta (SAM) إلى البيئات ذات الحوسبة المحدودة، ويوفر MobileSAM تجزئة شبه فورية مع الحفاظ على التوافق مع خط أنابيب SAM الأصلي. سواء كنت تقوم بتطوير تطبيقات في الوقت الفعلي أو عمليات نشر خفيفة الوزن، فإن MobileSAM يوفر نتائج تجزئة رائعة مع جزء صغير من متطلبات الحجم والسرعة لأسلافه.
شاهد: كيفية تشغيل الاستدلال باستخدام MobileSAM باستخدام Ultralytics | دليل خطوة بخطوة 🎉
تم اعتماد MobileSAM في مجموعة متنوعة من المشاريع، بما في ذلك Grounding-SAM و AnyLabeling و Segment Anything in 3D.
تم تدريب MobileSAM على وحدة معالجة رسومات واحدة باستخدام مجموعة بيانات صور مكونة من 100 ألف صورة (1٪ من الصور الأصلية) في أقل من يوم. سيتم إصدار كود التدريب في المستقبل.
النماذج المتاحة والمهام المدعومة وأنماط التشغيل
يحدد الجدول أدناه نموذج MobileSAM المتاح، والأوزان المدربة مسبقًا الخاصة به، والمهام المدعومة، والتوافق مع أوضاع التشغيل المختلفة مثل الاستدلال و التحقق و التدريب و التصدير. تتم الإشارة إلى الأوضاع المدعومة بـ ✅ والأوضاع غير المدعومة بـ ❌.
نوع النموذج | الأوزان المدربة مسبقًا | المهام المدعومة | الاستدلال | التحقق | التدريب | تصدير |
---|---|---|---|---|---|---|
MobileSAM | mobile_sam.pt | تجزئة المثيل | ✅ | ❌ | ❌ | ❌ |
مقارنة MobileSAM مقابل YOLO
تسلط المقارنة التالية الضوء على الاختلافات بين متغيرات SAM الخاصة بـ Meta و MobileSAM ونماذج تجزئة Ultralytics الأصغر، بما في ذلك YOLO11n-seg:
النموذج | الحجم (ميجابايت) |
المعلمات (M) |
السرعة (وحدة المعالجة المركزية (CPU)) (بالمللي ثانية/صورة) |
---|---|---|---|
Meta SAM-b | 375 | 93.7 | 49401 |
Meta SAM2-b | 162 | 80.8 | 31901 |
Meta SAM2-t | 78.1 | 38.9 | 25997 |
MobileSAM | 40.7 | 10.1 | 25381 |
FastSAM-s مع العمود الفقري YOLOv8 | 23.7 | 11.8 | 55.9 |
Ultralytics YOLOv8n-seg | 6.7 (أصغر بـ 11.7 مرة) | 3.4 (أقل بـ 11.4 مرة) | 24.5 (أسرع بـ 1061 مرة) |
Ultralytics YOLO11n-seg | 5.9 (أصغر بـ 13.2 مرة) | 2.9 (أقل بـ 13.4 مرة) | 30.1 (أسرع بـ 864 مرة) |
توضح هذه المقارنة الاختلافات الكبيرة في حجم النموذج وسرعته بين متغيرات SAM ونماذج تجزئة YOLO. في حين أن نماذج SAM توفر قدرات تجزئة تلقائية فريدة، فإن نماذج YOLO - وخاصة YOLOv8n-seg و YOLO11n-seg - أصغر وأسرع وأكثر كفاءة من الناحية الحسابية.
أُجريت الاختبارات على جهاز Apple M4 Pro 2025 بذاكرة وصول عشوائي (RAM) سعة 24 جيجابايت باستخدام torch==2.6.0
و ultralytics==8.3.90
: لإعادة إنتاج هذه النتائج:
مثال
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
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt"]:
model = YOLO(file_name)
model.info()
model(ASSETS)
التكيف من SAM إلى MobileSAM
يحتفظ MobileSAM بنفس خط الأنابيب الخاص بـ SAM الأصلي، بما في ذلك المعالجة المسبقة والمعالجة اللاحقة وجميع الواجهات. هذا يعني أنه يمكنك الانتقال من SAM إلى MobileSAM بأقل قدر من التغييرات في سير عملك.
الفرق الرئيسي هو مشفر الصور: يستبدل MobileSAM مشفر ViT-H الأصلي (632 مليون معلمة) بمشفر Tiny-ViT أصغر بكثير (5 ملايين معلمة). على وحدة معالجة رسومات واحدة (GPU)، يعالج MobileSAM صورة في حوالي 12 مللي ثانية (8 مللي ثانية للمشفر، 4 مللي ثانية لفك تشفير القناع).
مقارنة ترميز الصور المستند إلى ViT
مشفر الصور | SAM الأصلي | MobileSAM |
---|---|---|
المعلمات | 611M | 5M |
السرعة | 452 مللي ثانية | 8 مللي ثانية |
فك ترميز القناع الموجه بالمطالبات
فك تشفير القناع | SAM الأصلي | MobileSAM |
---|---|---|
المعلمات | 3.876M | 3.876M |
السرعة | 4 مللي ثانية | 4 مللي ثانية |
مقارنة خط الأنابيب بأكمله
خط الأنابيب بأكمله (Enc+Dec) | SAM الأصلي | MobileSAM |
---|---|---|
المعلمات | 615M | 9.66M |
السرعة | 456 مللي ثانية | 12 مللي ثانية |
يوضح ما يلي أداء MobileSAM و SAM الأصلي باستخدام مطالبات النقطة والمربع.
MobileSAM أصغر بحوالي 5 مرات وأسرع بـ 7 مرات من 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.
بناء مجموعات بيانات التجزئة تلقائيًا باستخدام نموذج الكشف
لشرح بياناتك تلقائيًا باستخدام إطار عمل Ultralytics، استخدم auto_annotate
الدالة كما هو موضح أدناه:
مثال
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="mobile_sam.pt")
الوسيطة | النوع | افتراضي | الوصف |
---|---|---|---|
data |
str |
مطلوب | مسار الدليل الذي يحتوي على الصور المستهدفة للشرح أو التجزئة. |
det_model |
str |
'yolo11x.pt' |
مسار نموذج الكشف عن YOLO للكشف الأولي عن الكائنات. |
sam_model |
str |
'sam_b.pt' |
مسار نموذج SAM للتجزئة (يدعم متغيرات SAM و SAM2 ونماذج mobile_sam). |
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 أمر مباشر. يمكنك استخدام مطالبات النقطة والمربع للتنبؤ بالقطاعات. على سبيل المثال، باستخدام مطالبة نقطة:
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 على وحدة معالجة رسومات واحدة مع مجموعة بيانات صور مكونة من 100 ألف صورة (1٪ من الصور الأصلية) في أقل من يوم. بينما سيتم إصدار كود التدريب في المستقبل، يمكنك حاليًا الوصول إلى الأوزان المدربة مسبقًا وتفاصيل التنفيذ من مستودع MobileSAM على GitHub.
ما هي حالات الاستخدام الأساسية لـ MobileSAM؟
تم تصميم MobileSAM لتجزئة الصور بسرعة وكفاءة في بيئات الجوال والحافة. تشمل حالات الاستخدام الأساسية ما يلي:
- الكشف عن العناصر وتقسيمها في الوقت الفعلي لتطبيقات الهاتف المحمول
- معالجة الصور بزمن انتقال منخفض على الأجهزة ذات القدرة الحاسوبية المحدودة
- التكامل في تطبيقات الهاتف المحمول المدعومة بالذكاء الاصطناعي للواقع المعزز (AR) والتحليلات والمزيد
لمزيد من التفاصيل حول حالات الاستخدام والأداء، راجع التكيف من SAM إلى MobileSAM و مدونة Ultralytics حول تطبيقات MobileSAM.