تخطي إلى المحتوى

شعار MobileSAM

تقسيم أي شيء للجوال (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 الأصلي باستخدام مطالبات النقطة والمربع.

صورة مع نقطة كـ Prompt

صورة مع مربع كـ Prompt

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.



📅 أُنشئ منذ سنة واحدة ✏️ تم التحديث منذ 3 أشهر

تعليقات