أي شيء قطاع الجوال أي شيء (MobileSAM)
الورقة البحثية MobileSAM متاحة الآن على موقع arXiv.
يمكن الوصول إلى عرض توضيحي لـ MobileSAM الذي يعمل على وحدة المعالجة CPU على هذا الرابط التجريبي. يستغرق الأداء على CPU Mac i5 حوالي 3 ثوانٍ تقريبًا. على Hugging Face التوضيحي، تساهم الواجهة ووحدات المعالجة المركزية منخفضة الأداء في إبطاء الاستجابة، لكنها تستمر في العمل بفعالية.
شاهد: كيفية تشغيل الاستدلال باستخدام MobileSAM باستخدام Ultralytics | دليل خطوة بخطوة 🎉
MobileSAM في مشاريع مختلفة بما في ذلك Grounding-SAM ، و AnyLabeling، و Segment Anything in 3D.
MobileSAM تم تدريبه على موقع واحد GPU بمجموعة بيانات 100 ألف (1% من الصور الأصلية) في أقل من يوم واحد. سيتم توفير الكود الخاص بهذا التدريب في المستقبل.
النماذج المتوفرة والمهام المدعومة وأوضاع التشغيل
يعرض هذا الجدول النماذج المتاحة مع أوزانها المحددة المدربة مسبقًا والمهام التي تدعمها وتوافقها مع أوضاع التشغيل المختلفة مثل الاستدلال والتحقق من الصحة والتدريب والتصدير، ويُشار إليها بـ ✅ رموز تعبيرية للأوضاع المدعومة و❌ رموز تعبيرية للأوضاع غير المدعومة.
نوع الموديل | الأوزان المدربة مسبقاً | المهام المدعومة | الاستدلال | التحقق من الصحة | التدريب | التصدير |
---|---|---|---|---|---|---|
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 مزود بذاكرة وصول عشوائي (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 يعمل بشكل مماثل للأصل SAM ويحتفظ بنفس خط الأنابيب باستثناء تغيير في مشفر الصورة. وعلى وجه التحديد، نستبدل مشفر ViT-H الأصلي ثقيل الوزن (632 ميجا) بمشفر Tiny-ViT (5 ميجا) أصغر حجمًا. على جهاز واحد GPU ، MobileSAM يعمل في حوالي 12 مللي ثانية لكل صورة: 8 مللي ثانية على مشفر الصورة و4 مللي ثانية على وحدة فك تشفير القناع.
يقدم الجدول التالي مقارنة بين برامج تشفير الصور المستندة إلى تقنية VT:
أداة ترميز الصور | الأصل SAM | MobileSAM |
---|---|---|
المعلمات | 611M | 5M |
السرعة | 452 مللي ثانية | 8 مللي ثانية |
يستخدم كل من الموقعين الأصليين SAM و MobileSAM نفس وحدة فك ترميز القناع الموجه بالموجه:
فك ترميز القناع | الأصل 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 بما في ذلك أوضاع لكل من المطالبات النقطية والمربع.
تنزيل النموذج
يمكنك تنزيل النموذج من هنا.
موجه النقاط
مثال على ذلك
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
كما هو موضح أدناه:
مثال على ذلك
الجدال | النوع | افتراضي | الوصف |
---|---|---|---|
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 مفيداً في أعمالك البحثية أو التطويرية، يرجى النظر في الاستشهاد بورقتنا البحثية:
الأسئلة الشائعة
ما هو MobileSAM وكيف يختلف عن النموذج الأصلي SAM ؟
MobileSAM هو نموذج خفيف الوزن وسريع لتجزئة الصور مصمم للتطبيقات المحمولة. وهو يحتفظ بنفس خط الأنابيب مثل النموذج الأصلي SAM ولكنه يستبدل مشفر ViT-H ثقيل الوزن (632 مليون معلمة) بمشفر Tiny-ViT أصغر (5 مليون معلمة). ينتج عن هذا التغيير أن يكون MobileSAM أصغر بحوالي 5 أضعاف وأسرع 7 مرات من الأصل SAM. على سبيل المثال، يعمل MobileSAM بسرعة 12 مللي ثانية تقريبًا لكل صورة، مقارنةً بـ 456 مللي ثانية في الأصل SAM. يمكنك معرفة المزيد عن تطبيق MobileSAM في مشاريع مختلفة هنا.
كيف يمكنني اختبار 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 لمزيد من التفاصيل.
لماذا يجب أن أستخدم MobileSAM لتطبيق الهاتف المحمول الخاص بي؟
MobileSAM مثالية لتطبيقات الأجهزة المحمولة نظرًا لبنيتها خفيفة الوزن وسرعة الاستدلال السريعة. ومقارنةً بالنسخة الأصلية SAM ، فإن MobileSAM أصغر بحوالي 5 أضعاف وأسرع بـ 7 أضعاف، مما يجعله مناسبًا للبيئات التي تكون فيها الموارد الحاسوبية محدودة. تضمن هذه الكفاءة أن الأجهزة المحمولة يمكنها إجراء تجزئة للصور في الوقت الفعلي دون تأخير كبير. وبالإضافة إلى ذلك، تم تحسين نماذج MobileSAM ، مثل Inference، لتناسب أداء الأجهزة المحمولة.
كيف تم تدريب MobileSAM ، وهل رمز التدريب متاح؟
MobileSAM تم تدريبه على موقع GPU واحد بمجموعة بيانات 100 ألف، أي 1% من الصور الأصلية، في أقل من يوم واحد. بينما سيتم إتاحة كود التدريب في المستقبل، يمكنك حاليًا استكشاف جوانب أخرى من MobileSAM في مستودعMobileSAM GitHub. يتضمن هذا المستودع أوزانًا مُدرَّبة مسبقًا وتفاصيل التنفيذ لتطبيقات مختلفة.
ما هي حالات الاستخدام الأساسية لـ MobileSAM ؟
MobileSAM مصمم لتجزئة الصور بسرعة وكفاءة في البيئات المتنقلة. تشمل حالات الاستخدام الأساسية ما يلي:
- الكشف عن الأجسام وتجزئتها في الوقت الحقيقي لتطبيقات الأجهزة المحمولة.
- معالجة الصور ذات الكمون المنخفض في الأجهزة ذات الموارد الحاسوبية المحدودة.
- التكامل في تطبيقات الأجهزة المحمولة التي تعتمد على الذكاء الاصطناعي لمهام مثل الواقع المعزز (AR) والتحليلات في الوقت الفعلي.
لمزيد من حالات الاستخدام التفصيلية ومقارنات الأداء، راجع القسم الخاص بالتكيف من SAM إلى MobileSAM.