خطوات الاستخدام
الخطوة 1: فهم المدخلات الأساسية. تقوم حاسبة كفاءة Segment Anything بتقدير وقت المعالجة بناءً على ثلاثة عوامل رئيسية: عدد بكسلات الصورة (imagePixels) بالملايين، أي العرض × الارتفاع مقسومًا على مليون، وعدد النقاط (points) المستخدمة في التوجيه، وعدد الأقنعة (masks) الناتجة. كلما زادت هذه القيم، زاد الحمل الحسابي على نموذج SAM، مما يزيد من وقت المعالجة. يجب إدخال هذه القيم بدقة للحصول على تقدير واقعي.
الخطوة 2: إدخال عدد بكسلات الصورة بالملايين. اضرب العرض في الارتفاع ثم اقسم على مليون: صورة 1920×1080 فيها 2,073,600 بكسل فتُدخل 2.0736، وصورة 4K (3840×2160) تُدخل 8.2944. هذا الرقم يؤثر مباشرة على مرحلة تشفير الصورة (Image Encoder) في SAM، حيث يستخدم نموذج محول الرؤية (ViT) الذي يتناسب تعقيده الحسابي مع مساحة الصورة. تذكر أن SAM يقسم الصورة إلى بقع (patches) بحجم 16×16، لذا فإن عدد البقع يساوي عدد البكسلات / 256، ويؤثر هذا على وقت المعالجة الأولي.
الخطوة 3: إدخال عدد النقاط. أدخل عدد النقاط الموجبة والسالبة المستخدمة لتوجيه النموذج (على سبيل المثال، 5 نقاط لكل قناع). كل نقطة تُعالج بواسطة مشفر النقاط (Point Encoder) وتُدمج مع تضمين الصورة. في النماذج الحديثة، تُرسل النقاط دفعة واحدة، لذا فإن الزيادة الخطية في عدد النقاط تؤدي إلى زيادة شبه خطية في وقت المعالجة، خاصة في مرحلة فك التشفير (Mask Decoder).
الخطوة 4: إدخال عدد الأقنعة. أدخل عدد الأقنعة المطلوب إخراجها (عادةً 1-3 أقنعة لكل نقطة توجيه). يولد SAM أقنعة متعددة لحل حالات الغموض، وكل قناع إضافي يزيد وقت الحساب لأن فك التشفير يُعاد لكل قناع. في الممارسة العملية، يُوصى بإخراج قناع واحد إذا كان المستخدم واثقًا من الهدف، أو 3 أقنعة إذا كان الهدف غير واضح.
الخطوة 5: تفسير النتيجة. بعد إدخال القيم، تعرض الحاسبة وقت المعالجة المقدر بالمللي ثانية. يعتمد هذا التقدير على نموذج أساسي (مثل SAM-B) ويعمل على GPU متوسطة (مثل NVIDIA V100). إذا كنت تستخدم نموذجًا أكبر (مثل SAM-H) أو GPU أبطأ، قد يختلف الوقت الفعلي. استخدم هذه القيمة كمقياس نسبي لمقارنة سيناريوهات مختلفة.
أمثلة محلولة
تطبيقات عملية على كفاءة Segment Anything بخطوات الحل كاملة.
الحل
المدخلات: imagePixels = 8.2944 مليون بكسل (3840×2160 = 8,294,400)، points = 15 (10 موجبة + 5 سالبة)، masks = 3. أولاً، نحسب عدد البقع: 8,294,400 / 256 = 32,400 بقعة. يستهلك تشفير الصورة باستخدام ViT وقتًا يتناسب مع (عدد البقع)^2 تقريبًا، ولكن نظرًا لاستخدام الاهتمام المُخفف (windowed attention)، يكون التعقيد خطيًا تقريبًا بالنسبة لعدد البقع. لنفترض أن زمن تشفير الصورة هو 200 مللي ثانية لصورة 1K (1,048,576 بكسل). لصورة 4K، يكون الزمن تقريبًا 8,294,400 / 1,048,576 × 200 = 1,582 مللي ثانية. ثم مرحلة فك التشفير: تعتمد على عدد النقاط والأقنعة. كل قناع يتطلب تمرير النقاط عبر المشفر ودمجها مع التضمين، ثم إنتاج القناع. لكل نقطة عملية حسابية صغيرة، وتُدمج النقاط في تضمين واحد. الزمن التقريبي لكل قناع مع 15 نقطة هو 2 + 0.2 × 15 = 5 مللي ثانية. مع 3 أقنعة، يصبح 15 مللي ثانية. الإجمالي ≈ 1,582 + 15 = 1,597 مللي ثانية ≈ 1.6 ثانية. هذا تقدير تقريبي؛ القيمة الفعلية قد تختلف بناءً على التحسينات مثل batch processing.
الحل
المدخلات: imagePixels = 0.262144 مليون بكسل (512×512 = 262,144)، points = 1، masks = 1. عدد البقع: 262,144 / 256 = 1,024 بقعة. زمن تشفير الصورة: 262,144 / 1,048,576 × 200 = 50 مللي ثانية. زمن فك التشفير: نقطة واحدة تولد تضمينًا واحدًا، والقناع الواحد يحتاج 2 + 0.2 × 1 = 2.2 مللي ثانية. الإجمالي ≈ 50 + 2.2 = 52.2 مللي ثانية. هذا مناسب للتطبيقات التفاعلية التي تتطلب استجابة دون 100 مللي ثانية. يوضح هذا كيف أن تقليل حجم الصورة وعدد النقاط والأقنعة يقلل الزمن جذريًا. يمكن تحسين الأداء أكثر باستخدام نماذج أصغر مثل SAM-Tiny.
أمثلة محسوبة
قيم مُدخَلة ونتيجة محسوبة فعليًا بواسطة كفاءة Segment Anything.
مثال 1: صورة 4K مع 15 نقطة و3 أقنعة = 1597.03 مللي ثانية
- بكسلات الصورة (بالملايين — 4K ≈ 8.2944)
- 8.29
- عدد النقاط
- 15
- عدد الأقنعة
- 3
5 ميجابكسل مع 40 نقطة وقناعين: 973.67 بدل 220.01
- بكسلات الصورة (بالملايين — 4K ≈ 8.2944)
- 5
- عدد النقاط
- 40
- عدد الأقنعة
- 2
صورة 12 ميجابكسل: التشفير يهيمن على 98% من الزمن
- بكسلات الصورة (بالملايين — 4K ≈ 8.2944)
- 12
- عدد النقاط
- 40
- عدد الأقنعة
- 3