أي شيء قطاع الجوال أي شيء (MobileSAM)
MobileSAM هو نموذج تجزئة صور مدمج وفعال مصمم خصيصًا للأجهزة المحمولة والأجهزة المتطورة. صُمم لجلب قوة نموذج Meta's Segment Anything Model (SAM) إلى البيئات ذات الحوسبة المحدودة، يوفر MobileSAM تجزئة شبه فورية مع الحفاظ على التوافق مع خط أنابيب SAM الأصلي. سواء كنت تقوم بتطوير تطبيقات في الوقت الحقيقي أو عمليات نشر خفيفة الوزن، يوفر MobileSAM نتائج تجزئة مبهرة مع جزء بسيط من متطلبات الحجم والسرعة التي كانت تتطلبها سابقاتها.
شاهد: كيفية تشغيل الاستدلال باستخدام MobileSAM باستخدام Ultralytics | دليل خطوة بخطوة 🎉
تم اعتماد MobileSAM في مجموعة متنوعة من المشاريع، بما في ذلك SAM و AnyLabeling و Segment Anything in 3D.
تم تدريب MobileSAM على GPU واحدة باستخدام مجموعة بيانات 100 ألف صورة (1% من الصور الأصلية) في أقل من يوم واحد. سيتم إصدار كود التدريب في المستقبل.
النماذج المتوفرة والمهام المدعومة وأوضاع التشغيل
يوضح الجدول أدناه نموذج MobileSAM المتاح، وأوزانها المدربة مسبقًا، والمهام المدعومة، وتوافقها مع أوضاع التشغيل المختلفة مثل الاستدلال والتحقق من الصحة والتدريب والتصدير. يُشار إلى الأوضاع المدعومة بالرمز ✅ والأوضاع غير المدعومة بالرمز ❌.
نوع الموديل | الأوزان المدربة مسبقاً | المهام المدعومة | الاستدلال | التحقق من الصحة | التدريب | التصدير |
---|---|---|---|---|---|---|
MobileSAM | موبايل_سام | تجزئة المثيل | ✅ | ❌ | ❌ | ❌ |
مقارنة بين MobileSAM و YOLO
تسلط المقارنة التالية الضوء على الاختلافات بين متغيرات SAM من Meta MobileSAM ونماذج التجزئة الأصغر من Ultralytics بما في ذلك YOLO11n-seg:
الطراز | الحجم (ميغابايت) |
المعلمات (م) |
السرعة (CPU) (م/م) (م/م) |
---|---|---|---|
ميتا SAM-ب | 375 | 93.7 | 49401 |
ميتا SAM2-ب | 162 | 80.8 | 31901 |
ميتا SAM2-t | 78.1 | 38.9 | 25997 |
MobileSAM | 40.7 | 10.1 | 25381 |
FastSAM معالعمود الفقري YOLOv8 | 23.7 | 11.8 | 55.9 |
Ultralytics YOLOv8n | 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 و YOLO11n-seg - أصغر وأسرع وأكثر كفاءة من الناحية الحسابية.
أُجريت الاختبارات على جهاز Apple M4 Pro 2025 مزود بذاكرة وصول عشوائي سعتها 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 SAM مُشفّر ViT-H الأصلي (632 مليون معلمة) بمُشفّر Tiny-ViT أصغر بكثير (5 مليون معلمة). على GPU واحدة، يعالج MobileSAM صورة في حوالي 12 مللي ثانية (8 مللي ثانية للمشفّر و4 مللي ثانية لوحدة فك تشفير القناع).
مقارنة بين برنامج تشفير الصور القائم على تقنية VT
أداة ترميز الصور | الأصل 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
تشترك في نفس واجهة برمجة التطبيقات. لمزيد من تفاصيل الاستخدام، راجع وثائق 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 ونماذج SAM2 المتنقلة). |
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 |
حفظ الدليل للتعليقات التوضيحية (افتراضيًا إلى "./ملصقات" بالنسبة إلى مسار البيانات). |
الاستشهادات والشكر والتقدير
إذا كانت 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 على GPU واحدة باستخدام مجموعة بيانات 100 ألف صورة (1% من الصور الأصلية) في أقل من يوم واحد. في حين سيتم إصدار كود التدريب في المستقبل، يمكنك حاليًا الوصول إلى الأوزان المدرّبة مسبقًا وتفاصيل التنفيذ من مستودعMobileSAM على GitHub.
ما هي حالات الاستخدام الأساسية ل MobileSAM
تم تصميم MobileSAM لتجزئة الصور بسرعة وفعالية في البيئات المتنقلة والمتطرفة. تشمل حالات الاستخدام الأساسية ما يلي:
- اكتشاف الكائنات وتجزئتها في الوقت الحقيقي لتطبيقات الأجهزة المحمولة
- معالجة الصور ذات الكمون المنخفض على الأجهزة ذات الحوسبة المحدودة
- التكامل في تطبيقات الهاتف المحمول التي تعمل بالذكاء الاصطناعي للواقع المعزز (AR) والتحليلات وغيرها
للمزيد من التفاصيل حول حالات الاستخدام والأداء، راجع التكيف من SAM إلى MobileSAM ومدونةUltralytics على تطبيقات MobileSAM .