الاستنتاج#
Ultralytics Platform يوفر استدلالاً مستنداً إلى المتصفح لاختبار النماذج المدربة ونطاقات مخصصة للوصول البرمجي.

علامة تبويب التنبؤ#
يحتوي كل نموذج ذو أوزان على علامة تبويب Predict للاستدلال القائم على المتصفح:
- انتقل إلى النموذج الخاص بك
- انقر فوق علامة التبويب Predict
- قم بتحميل صورة، أو استخدم مثالاً، أو افتح كاميرا الويب الخاصة بك
- راجع التراكب الخاص بالمهمة، وملخص التنبؤ، والتوقيت، والاستجابة الخام
تعرض النماذج التي لا تحتوي على أوزان حالة فارغة بدلاً من ذلك - قم بتدريب النموذج أو تحميل الأوزان أولاً.

طرق الإدخال#
تدعم لوحة التوقع طرق إدخال متعددة:
| الطريقة (Method) | الوصف |
|---|---|
| تحميل الصور | سحب وإفلات أو انقر لتحميل صورة |
| صور الأمثلة | انقر فوق الأمثلة المضمنة (صور مجموعة البيانات أو الافتراضية) |
| التقاط كاميرا الويب | بث مباشر للكاميرا مع التقاط إطار واحد |
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 ميغابايت
- الاستنتاج التلقائي: تظهر النتائج تلقائياً بعد التحميل
تعمل لوحة التوقع على إجراء الاستنتاج تلقائياً عند تحميل صورة، أو اختيار مثال، أو التقاط إطار من كاميرا الويب. لا حاجة للنقر على أي زر.
قبل التحميل، يقوم اللوح بتغيير حجم الصورة بحيث يتطابق أطول ضلع فيها مع Image Size المحدد، ويطلب إحداثيات مصححة. يحافظ هذا على سرعة الاختبار في المتصفح؛ بينما لا يتم تغيير حجم الطلبات التي ترسلها بنفسك.
صور الأمثلة#
تعرض لوحة التنبؤ ما يصل إلى صورتين نموذجيتين من مجموعة البيانات المرتبطة بنموذجك، مع تفضيل تقسيم val، ثم test، ثم train. إذا لم تقم بربط أي مجموعة بيانات، يتم استخدام الأمثلة الافتراضية:
| الصورة | المحتوى |
|---|---|
bus.jpg | مشهد شارع مع مركبات |
zidane.jpg | مشهد رياضي مع أشخاص |
بالنسبة لنماذج OBB، يتم عرض صور جوية للقوارب ومطار بدلاً من ذلك.
يتم تحميل صور الأمثلة مسبقاً عند تحميل الصفحة، لذا فإن النقر على مثال يؤدي إلى بدء الاستنتاج فوراً تقريباً دون انتظار التحميل.
كاميرا الويب#
انقر على بطاقة كاميرا الويب لبدء بث الكاميرا المباشر:
- امنح إذن الوصول للكاميرا عند المطالبة بذلك
- انقر على معاينة الفيديو لالتقاط إطار
- يتم إجراء الاستنتاج تلقائياً على الإطار الذي تم التقاطه
- انقر مرة أخرى لإعادة تشغيل كاميرا الويب
عرض النتائج#
تعرض نتائج الاستدلال النخراج المناسب لمهمة النموذج: المربعات، أو الأقنعة، أو النقاط الرئيسية، أو المربعات الموجهة، أو درجات التصنيف، أو التغطية الدلالية، أو خريطة العمق. تستخدم نتائج الكائنات ألوان فئة مجموعة البيانات عند توفرها. تظهر اللوحة أيضاً أوقات المعالجة المسبقة، والاستدلال، والمعالجة اللاحقة، والشبكة.
تظهر لوحة النتائج:
| الحقل | الوصف |
|---|---|
| ملخص النتائج | قائمة لكل عملية اكتشاف، أو أعلى 5 فئات لنموذجي التصنيف والدلالة |
| إحصائيات السرعة | المعالجة المسبقة، الاستدلال، المعالجة اللاحقة، والشبكة (بالميللي ثانية) |
| الإصدارات | إصدارات Ultralytics و PyTorch، بالإضافة إلى نطاق العمق أو حجم القناع إن وجد |
| استجابة JSON | استجابة API الخام داخل كتلة تعليمات برمجية، مع حذف بيانات خريطة base64 |
يوجد عنصرا تحكم أعلى المعاينة بمجرد ظهور النتائج: انقر فوق الصورة لتكبيرها مع الاحتفاظ بالتراكبات سليمة، واستخدم زر التنزيل لحفظ صورة JPEG معلنة للنتيجة الحالية.
معايير الاستنتاج#
اضبط سلوك الاستدلال باستخدام أشرطة التمرير الثلاثة أدناه الصورة:

| المعامل | النطاق | الافتراضي | الوصف |
|---|---|---|---|
| الثقة (Confidence) | 0.01 إلى 1.0، بخطوات قدرها 0.01 | 0.25 | الحد الأدنى لعتبة الثقة |
| IoU | 0.0 إلى 0.95، بخطوات قدرها 0.01 | 0.7 | عتبة NMS IoU |
| حجم الصورة | 32 إلى 1280، بخطوات قدرها 32 | 640 | بعد تغيير حجم الإدخال |
يؤدي تغيير أي معلمة تلقائياً إلى إعادة تشغيل الاستنتاج على الصورة الحالية مع تأخير 500 مللي ثانية. لا حاجة لإعادة التحميل.
عتبة الثقة#
تصفية التوقعات حسب الثقة:
- أعلى (0.5+): توقعات أقل، ولكن أكثر يقينية
- أقل (0.1-0.25): توقعات أكثر، مع بعض الضوضاء
- افتراضي (0.25): متوازن لمعظم حالات الاستخدام
عتبة IoU#
التحكم في خوارزمية NMS (Non-Maximum Suppression):
- أعلى (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. قم بإنشاء واحد في Settings > API Keys. تقبل نقطة النهاية المخصصة المفتاح الفردي الذي أنشئت به فقط؛ بينما تقبل واجهة برمجة تطبيقات النموذج المشترك أي مفتاح نشط في مساحة العمل، وتقبل النماذج العامة أيضاً الطلبات مجهولة الهوية.
نقطة النهاية#
تقبل نقاط النهاية المخصصة الطلبات على عنوان 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())
معلمات الطلب#
| المعامل | النوع | الافتراضي | النطاق | الوصف |
|---|---|---|---|---|
file | ملف | - | - | ملف صورة أو فيديو (مطلوب ما لم يتم تعيين source) |
conf | float | 0.25 | 0.01 – 1.0 | الحد الأدنى لعتبة الثقة |
iou | float | 0.7 | 0.0 – 0.95 | عتبة NMS IoU |
imgsz | int | 640 | 32 – 1280 | حجم صورة الإدخال بالبكسل |
normalize | منطقي (bool) | false | - | إرجاع إحداثيات صندوق الإحاطة (bounding box) كـ 0 – 1 |
decimals | int | 5 | 0 – 10 | الدقة العشرية لقيم الإحداثيات |
bits | int | 8 | 8, 12, 16 | كمية خريطة العمق، لنماذج العمق فقط |
source | string | - | - | عنوان 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"
}
}
}
حقول الاستجابة#
| الحقل | النوع | الوصف |
|---|---|---|
images | مصفوفة | قائمة الصور المعالجة، إدخال واحد لكل إطار فيديو لمقاطع الفيديو |
images[].shape | مصفوفة | أبعاد الصورة [الارتفاع، العرض] |
images[].results | مصفوفة | قائمة الكشف |
images[].results[].class | int | فهرس الفئة (معرف رقمي) |
images[].results[].name | string | اسم الفئة |
images[].results[].confidence | float | ثقة الكشف (0-1) |
images[].results[].box | كائن | إحداثيات مربع الإحاطة (BBox) |
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 مجهول. عند التقنين، تعيد واجهة برمجة التطبيقات 429 مع ترويسة Retry-After. راجع مرجع معدل الطلبات الكامل لجميع فئات نقاط النهاية.
الطلبات المرسلة مباشرة إلى dedicated endpoint لا تمر عبر محدد معدل Platform API. لا تزال نقطة النهاية تتخلص من الحمل باستخدام 429 ورأس Retry-After عندما تكون في سعتها مؤقتاً. للحصول على استدلال محلي عالي الحجم، راجع Predict mode guide.
معالجة الأخطاء#
استجابات الخطأ الشائعة:
| الكود | الرسالة | الحل |
|---|---|---|
| 400 | صورة غير صالحة | تحقق من تنسيق الملف، أو أن النموذج لديه أوزان مدربة |
| 401 | غير مصرح به | تحقق من مفتاح الـ API |
| 404 | النموذج غير موجود | تحقق من أسماء المالك والمشروع والنموذج |
| 413 | الإدخال كبير جداً | قم بتقليل حجم الملف ليكون أقل من حد نقطة النهاية |
| 429 | تم تجاوز حد المعدل | انتظر وأعد المحاولة، أو أرسل الطلبات مباشرة إلى نقطة نهاية مخصصة |
| 500 | خطأ في الخادم | أعد محاولة الطلب |
| 503 | الخدمة غير متوفرة | خدمة Predict قيد التشغيل أو يتعذر الوصول إليها؛ انتظر قليلاً وأعد المحاولة |
الأسئلة الشائعة#
تقبل كلتا طريقتي الاستدلال ملفات الفيديو:
- النقاط النهائية المخصصة تقبل ملفات الفيديو مباشرة. التنسيقات المدعومة (حتى 100 ميغابايت): ASF وAVI وGIF وM4V وMKV وMOV وMP4 وMPEG وMPG وTS وWEBM وWMV. تتم معالجة كل إطار على حدة ويتم إرجاع النتائج لكل إطار. راجع النقاط النهائية المخصصة للتفاصيل.
- Shared inference (
POST /api/models/{owner}/{project}/{model}/predict) يستخدم خدمة التنبؤ نفسها ويقبل تنسيقات الفيديو نفسها. تحدد علامة تبويب المتصفح Predict الصور فقط، لذا استخدم API أو dedicated endpoint لمقاطع الفيديو.
في علامة تبويب Predict، يحفظ زر التنزيل الموجود فوق المعاينة النتيجة الحالية بصيغة JPEG معلنة. تُرجع واجهة برمجة التطبيقات نفسها تنبؤات JSON. لتصور تلك النتائج:
- استخدم التنبؤات لرسم المربعات محلياً
- استخدم طريقة Ultralytics
plot():
from ultralytics import YOLO model = YOLO("yolo26n.pt") results = model("image.jpg") results[0].save("annotated.jpg")راجع توثيق وضع التنبؤ لمعرفة واجهة برمجة تطبيقات النتائج الكاملة وخيارات التصور.
- حد علامة التبويب Predict: 10 ميجابايت
- API limit: 100 ميغابايت لكل من الاستدلال المشترك ونقاط النهاية المخصصة
- تغيير الحجم تلقائياً في علامة تبويب Predict: يتم تغيير حجم الصور إلى
Image Sizeالمحدد قبل التحميل
يتم تغيير حجم الصور الكبيرة تلقائياً في المتصفح مع الحفاظ على نسبة الارتفاع. لا يتم تغيير حجم الطلبات التي ترسلها بنفسك، لذا يتم رفض الصور التي تتجاوز الحد باستخدام
413.تقوم الـ API الحالية بمعالجة صورة واحدة لكل طلب. للدفعات:
- إرسال طلبات منفصلة لكل صورة
- توزيع الطلبات عبر النطاقات المخصصة عندما يكون ذلك مناسباً
- استخدام الاستدلال المحلي للدفعات الكبيرة
استدلال الدفعات باستخدام Pythonimport 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))