Ultralytics YOLO27:

الاستدلال#

توفر Ultralytics Platform استدلالًا عبر المتصفح لاختبار النماذج المدرَّبة، ونقاط نهاية مخصصة للوصول البرمجي.

علامة تبويب التنبؤ في Ultralytics Platform مع تراكب الاكتشافات

علامة تبويب التنبؤ#

يتضمن كل نموذج ذي أوزان علامة تبويب Predict للاستدلال عبر المتصفح:

  1. انتقل إلى نموذجك
  2. انقر فوق علامة التبويب Predict
  3. حمّل صورة، أو استخدم مثالًا، أو افتح كاميرا الويب
  4. راجع التراكب الخاص بالمهمة، وملخص التنبؤ، والتوقيت، والاستجابة الخام

تُظهر النماذج التي لا تحتوي على أوزان حالة فارغة بدلًا من ذلك — درِّب النموذج أو حمّل الأوزان أولًا.

منطقة إسقاط تحميل الصور في علامة تبويب التنبؤ في Ultralytics Platform

طرق الإدخال#

تدعم لوحة التنبؤ طرق إدخال متعددة:

الطريقةالوصف
تحميل صورةاسحب صورة وأفلتها أو انقر لتحميلها
صور المثالانقر فوق الأمثلة المضمّنة (صور مجموعة البيانات أو الصور الافتراضية)
التقاط من كاميرا الويببث مباشر من الكاميرا مع التقاط إطار واحد
graph LR
    A[Upload Image]:::start --> D[Auto-Inference]:::proc
    B[Example Image]:::start --> D
    C[Webcam Capture]:::start --> D
    D --> E[Results + Overlays]:::out

    classDef start fill:#4CAF50,color:#fff
    classDef proc fill:#2196F3,color:#fff
    classDef out fill:#9C27B0,color:#fff

تحميل صورة#

اسحب صورة وأفلتها أو انقر لتحميلها:

  • التنسيقات المدعومة: JPEG، PNG، WebP، AVIF، HEIC، JP2، TIFF، BMP
  • الحد الأقصى للحجم: 10 MB
  • الاستدلال التلقائي: تظهر النتائج تلقائيًا بعد التحميل
الاستدلال التلقائي

تُجري لوحة التنبؤ الاستدلال تلقائيًا عند تحميل صورة، أو تحديد مثال، أو التقاط إطار من كاميرا الويب. لا حاجة إلى النقر فوق أي زر.

تغيير الحجم من جهة العميل

قبل التحميل، تغيّر اللوحة حجم الصورة بحيث يطابق أطول جانب فيها Image Size المحدد، وتطلب إحداثيات مُطبَّعة. يحافظ ذلك على سرعة الاختبار في المتصفح؛ أما الطلبات التي ترسلها بنفسك فلا يُغيَّر حجمها.

صور المثال#

تعرض لوحة التنبؤ ما يصل إلى صورتين مثاليتين من مجموعة البيانات المرتبطة بنموذجك، مع تفضيل التقسيم val، ثم test، ثم train. إذا لم تكن هناك مجموعة بيانات مرتبطة، تُستخدم الأمثلة الافتراضية:

الصورةالمحتوى
bus.jpgمشهد شارع يضم مركبات
zidane.jpgمشهد رياضي يضم أشخاصًا

بالنسبة إلى نماذج OBB، تُعرض بدلًا من ذلك صور جوية لقوارب ومطار.

الصور المحمّلة مسبقًا

تُحمّل صور المثال مسبقًا عند تحميل الصفحة، لذا يؤدي النقر فوق مثال إلى تشغيل الاستدلال شبه الفوري من دون انتظار التنزيل.

كاميرا الويب#

انقر فوق بطاقة كاميرا الويب لبدء بث مباشر من الكاميرا:

  1. امنح إذن الوصول إلى الكاميرا عند مطالبتك بذلك
  2. انقر فوق معاينة الفيديو لالتقاط إطار
  3. يُجرى الاستدلال تلقائيًا على الإطار الملتقط
  4. انقر مرة أخرى لإعادة تشغيل كاميرا الويب

عرض النتائج#

تعرض نتائج الاستدلال المخرجات المناسبة لمهمة النموذج: المربعات، أو الأقنعة، أو النقاط الأساسية، أو المربعات الموجّهة، أو درجات التصنيف، أو التغطية الدلالية، أو خريطة العمق. تستخدم نتائج الكائنات ألوان الفئات الخاصة بمجموعة البيانات عند توفرها. وتعرض اللوحة أيضًا توقيت المعالجة المسبقة، والاستدلال، والمعالجة اللاحقة، والشبكة.

نتائج علامة تبويب التنبؤ في منصة Ultralytics مع الكشف وإحصاءات السرعة

تُظهر لوحة النتائج ما يلي:

الحقلالوصف
ملخص النتائجقائمة بكل اكتشاف، أو أعلى 5 فئات لنماذج التصنيف والنماذج الدلالية
إحصاءات السرعةالمعالجة المسبقة، والاستدلال، والمعالجة اللاحقة، والشبكة (ms)
الإصداراتإصدارات Ultralytics وPyTorch، بالإضافة إلى نطاق العمق أو حجم القناع عند الاقتضاء
استجابة JSONاستجابة API الخام داخل كتلة تعليمات برمجية، مع حذف بيانات الخريطة المشفّرة بصيغة base64

يوجد عنصران للتحكم فوق المعاينة بعد ظهور النتائج: انقر فوق الصورة لتكبيرها مع إبقاء التراكبات intact، واستخدم زر التنزيل لحفظ صورة JPEG مشروحة للنتيجة الحالية.

معلمات الاستدلال#

اضبط سلوك الاستدلال باستخدام أشرطة التمرير الثلاثة أسفل الصورة:

أشرطة تمرير المعلمات في علامة تبويب التنبؤ في Ultralytics Platform

المعلمةالنطاقالافتراضيالوصف
الثقة0.01 – 1.0، بخطوات مقدارها 0.010.25الحد الأدنى لعتبة الثقة
IoU0.0 – 0.95، بخطوات مقدارها 0.010.7عتبة IoU الخاصة بـ NMS
حجم الصورة32 – 1280، بخطوات مقدارها 32640بُعد تغيير حجم الإدخال
إعادة التشغيل التلقائي

يؤدي تغيير أي معلمة إلى إعادة تشغيل الاستدلال تلقائيًا على الصورة الحالية مع تأخير قدره 500ms. لا حاجة إلى إعادة التحميل.

عتبة الثقة#

صفِّ التنبؤات حسب الثقة:

  • أعلى (0.5+): تنبؤات أقل وأكثر يقينًا
  • أقل (0.1-0.25): تنبؤات أكثر، مع بعض الضوضاء
  • الافتراضية (0.25): متوازنة لمعظم حالات الاستخدام

عتبة IoU#

تحكّم في الإخماد غير الأقصى:

  • أعلى (0.7+): السماح بمزيد من المربعات المتداخلة
  • أقل (0.3-0.5): قمع الاكتشافات المتداخلة بدرجة أكبر
  • الافتراضية (0.7): سلوك NMS متوازن لمعظم حالات الاستخدام

التنبؤ عبر النشر#

تتضمن كل نقطة نهاية مخصصة قيد التشغيل علامة تبويب Predict مباشرةً على بطاقة النشر الخاصة بها. ويستخدم ذلك خدمة الاستدلال الخاصة بالنشر بدلًا من خدمة التنبؤ المشتركة، ما يتيح لك اختبار نقطة النهاية المنشورة من المتصفح.

في نقطة نهاية مدفوعة مع تمكين المراقبة، تسهم الصور المعالجة أيضاً في علامة تبويب المراقبة. إن أمثلتها المعينة بعينات والرسوم البيانية التجميعية هي بيانات خفيفة الوزن ومؤقتة محتفظ بها في الذاكرة؛ إذ يمكن أن يؤدي إيقاف النموذج، أو إعادة تشغيله، أو إعادة نشره، أو تغيير حجمه، أو استبداله إلى مسحها. احفظ أمثلة علامة تبويب المراقبة في مجموعة بيانات للاحتفاظ بها.

واجهة API لنقطة النهاية المخصصة#

تحتوي بطاقة API Docs في علامة تبويب النموذج Predict على طلبات نموذجية باستخدام Python وJavaScript وcURL، مع تعبئتها مسبقًا بقيم الثقة وIoU وحجم الصورة المضبوطة حاليًا على أشرطة التمرير. يظل عنوان URL والمفتاح عنصرين نائبين إلى أن تنشر النموذج — وينقلك زر Deploy بجوار علامات تبويب التعليمات البرمجية إلى علامة تبويب النموذج Deploy. بعد النشر، تُعبّئ علامة تبويب Code في بطاقة النشر عنوان URL لنقطة النهاية هذه، ومفتاح API المرتبط بها لمالكي مساحة العمل، ويصبحان جاهزين للنسخ والتشغيل.

المصادقة#

ضمّن مفتاح API الخاص بك في الطلبات:

Authorization: Bearer YOUR_API_KEY
مفتاح API مطلوب

لتشغيل الاستدلال من نصوصك البرمجية أو دفاتر الملاحظات أو تطبيقاتك، ضمّن مفتاح API. أنشئ واحدًا في Settings > API Keys. تقبل نقطة النهاية المخصصة المفتاح الواحد الذي أُنشئت به فقط؛ بينما تقبل واجهة API المشتركة للنموذج أي مفتاح نشط في مساحة العمل، كما تقبل النماذج العامة الطلبات المجهولة.

نقطة النهاية#

تستقبل نقاط النهاية المخصصة الطلبات على عنوان URL الخاص بها:

POST https://YOUR_DEPLOYMENT_URL.run.app/predict

يستخدم الاستدلال المشترك Platform API مع المسار الكامل للنموذج:

POST https://platform.ultralytics.com/api/models/{owner}/{project}/{model}/predict

يقبل كلاهما نص الطلب multipart/form-data نفسه ويعيدان بنية الاستجابة نفسها. باستخدام Python SDK، استخدم client.models.predict(owner, project, model, body=...) للاستدلال المشترك أو client.deployments.predict(owner, deployment, body=...) لنشر مخصص:

from ultralytics_platform import Platform

client = Platform()  # reads ULTRALYTICS_API_KEY
with open("image.jpg", "rb") as f:
    results = client.models.predict("acme-vision", "inspection", "v3", body={"file": f, "conf": 0.25})

الطلب#

import requests

url = "https://YOUR_DEPLOYMENT_URL.run.app/predict"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
data = {"conf": 0.25, "iou": 0.7, "imgsz": 640}

with open("image.jpg", "rb") as image_file:
    response = requests.post(url, headers=headers, files={"file": image_file}, data=data)
print(response.json())

أمثلة التعليمات البرمجية في علامة تبويب التنبؤ في Ultralytics Platform، علامة Python

معلمات الطلب#

المعلمةالنوعالافتراضيالنطاقالوصف
filefile--ملف صورة أو فيديو (مطلوب ما لم يتم تعيين source)
conffloat0.250.01 – 1.0الحد الأدنى لعتبة الثقة
ioufloat0.70.0 – 0.95عتبة IoU الخاصة بـ NMS
imgszint64032 – 1280حجم صورة الإدخال بالبكسل
normalizeboolfalse-إرجاع إحداثيات المربع المحيط ضمن النطاق 0 – 1
decimalsint50 – 10الدقة العشرية لقيم الإحداثيات
bitsint88, 12, 16تكميم خريطة العمق، لنماذج العمق فقط
sourcestring--عنوان URL للصورة أو سلسلة base64 (بديل عن file)

الاستجابة#

{
    "images": [
        {
            "shape": [1080, 1920],
            "results": [
                {
                    "class": 0,
                    "name": "person",
                    "confidence": 0.92,
                    "box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
                },
                {
                    "class": 2,
                    "name": "car",
                    "confidence": 0.87,
                    "box": { "x1": 400, "y1": 200, "x2": 600, "y2": 350 }
                }
            ],
            "speed": {
                "preprocess": 1.2,
                "inference": 12.5,
                "postprocess": 2.3
            }
        }
    ],
    "metadata": {
        "imageCount": 1,
        "functionTimeAlive": 1284.51,
        "functionTimeCall": 0.018,
        "task": "detect",
        "version": {
            "ultralytics": "8.x.x",
            "torch": "2.6.0",
            "torchvision": "0.21.0",
            "python": "3.13.0"
        }
    }
}

عرض استجابة JSON في علامة تبويب التنبؤ في Ultralytics Platform

حقول الاستجابة#

الحقلالنوعالوصف
imagesمصفوفةقائمة بالصور المعالجة، مع إدخال واحد لكل إطار فيديو في مقاطع الفيديو
images[].shapeمصفوفةأبعاد الصورة [الارتفاع، العرض]
images[].resultsمصفوفةقائمة الاكتشافات
images[].results[].classintفهرس الفئة (المعرّف الصحيح)
images[].results[].namestringاسم الفئة
images[].results[].confidencefloatثقة الاكتشاف (0-1)
images[].results[].boxكائنإحداثيات المربع المحيط
images[].semantic_maskكائنخريطة الفئات لكل بكسل (للنماذج الدلالية فقط)
images[].depthكائنخريطة العمق لكل بكسل (لنماذج العمق فقط)
images[].speedكائنأوقات المعالجة بالمللي ثانية
metadataكائنعدد الصور، وأوقات الخدمة، والمهمة، وإصدارات Ultralytics/PyTorch

الاستجابات الخاصة بالمهمة#

يختلف تنسيق الاستجابة باختلاف المهمة:

{
  "class": 0,
  "name": "person",
  "confidence": 0.92,
  "box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400}
}

حدود معدل الطلبات#

تقتصر واجهة النماذج المشتركة على 20 طلبًا/دقيقة لكل مفتاح API أو متصل سجّل دخوله أو عنوان IP مجهول. عند تقييد المعدل، تعيد واجهة API القيمة 429 مع ترويسة Retry-After. راجع مرجع حدود المعدل الكامل لجميع فئات نقاط النهاية.

هل تحتاج إلى معدل نقل أعلى؟

لا تمر الطلبات المرسلة مباشرةً إلى نقطة نهاية مخصصة عبر محدِّد معدل Platform API. ومع ذلك، تظل نقطة النهاية تخفف الحمل باستخدام 429 وترويسة Retry-After عندما تبلغ سعتها الحد الأقصى مؤقتًا. للاستدلال المحلي واسع النطاق، راجع دليل وضع Predict.

معالجة الأخطاء#

استجابات الأخطاء الشائعة:

الرمزالرسالةالحل
400الصورة غير صالحةتحقق من تنسيق الملف أو من أن النموذج يحتوي على أوزان مدرَّبة
401غير مصرّح بهتحقق من مفتاح API
404النموذج غير موجودتحقق من أسماء المالك والمشروع والنموذج
413الإدخال كبير جدًاخفّض حجم الملف إلى ما دون حد نقطة النهاية
429تم بلوغ حد المعدلانتظر وأعد المحاولة، أو أرسل الطلبات مباشرةً إلى نقطة نهاية مخصصة
500خطأ في الخادمأعد محاولة الطلب
503الخدمة غير متاحةخدمة Predict قيد بدء التشغيل أو يتعذر الوصول إليها؛ انتظر قليلًا ثم أعد المحاولة

الأسئلة الشائعة#

  • تقبل طريقتا الاستدلال كلتاهما ملفات الفيديو:

    • تقبل نقاط النهاية المخصصة ملفات الفيديو مباشرةً. التنسيقات المدعومة (حتى 100 ميغابايت): ASF، AVI، GIF، M4V، MKV، MOV، MP4، MPEG، MPG، TS، WEBM، WMV. تتم معالجة كل إطار على حدة، وتُعاد النتائج لكل إطار. راجع نقاط النهاية المخصصة للحصول على التفاصيل.
    • يستخدم الاستدلال المشترك (POST /api/models/{owner}/{project}/{model}/predict) خدمة التنبؤ نفسها ويقبل تنسيقات الفيديو نفسها. لا يتيح تبويب Predict في المتصفح سوى اختيار الصور، لذا استخدم API أو نقطة نهاية مخصصة للفيديو.
  • في تبويب Predict، يحفظ زر التنزيل الموجود فوق المعاينة النتيجة الحالية بصيغة JPEG مشروحة. وتعيد واجهة API نفسها تنبؤات بتنسيق JSON. لتصوير هذه التنبؤات:

    1. استخدم التنبؤات لرسم المربعات محليًا
    2. استخدم طريقة plot() في Ultralytics:
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    results = model("image.jpg")
    results[0].save("annotated.jpg")

    راجع وثائق وضع Predict للاطلاع على واجهة النتائج الكاملة وخيارات التصوير.

    • حد تبويب Predict: 10 ميغابايت
    • حد API: 100 ميغابايت لكل من الاستدلال المشترك ونقاط النهاية المخصصة
    • تغيير الحجم تلقائيًا في تبويب Predict: تُغيَّر أحجام الصور إلى Image Size المحدد قبل الرفع

    تُغيَّر أحجام الصور الكبيرة تلقائيًا في المتصفح مع الحفاظ على نسبة العرض إلى الارتفاع. أما الطلبات التي ترسلها بنفسك فلا يُغيَّر حجمها، لذا تُرفض الصور التي تتجاوز الحد مع 413.

  • تعالج API الحالية صورة واحدة لكل طلب. لإجراء المعالجة الدفعية:

    1. أرسل طلبات منفصلة لكل صورة
    2. وزّع الطلبات على نقاط النهاية المخصصة عند الاقتضاء
    3. استخدم الاستدلال المحلي للدفعات الكبيرة
    الاستدلال الدفعي باستخدام Python
    import concurrent.futures
    
    import requests
    
    url = "https://YOUR_DEPLOYMENT_URL.run.app/predict"
    headers = {"Authorization": "Bearer YOUR_API_KEY"}
    images = ["img1.jpg", "img2.jpg", "img3.jpg"]
    
    def predict(image_path):
        with open(image_path, "rb") as f:
            return requests.post(url, headers=headers, files={"file": f}).json()
    
    with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor:
        results = list(executor.map(predict, images))

التعليقات