Meet YOLO26: next-gen vision AI.

Link to this sectionتوقع النموذج باستخدام Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Link to this sectionمقدمة#

في عالم تعلم الآلة ورؤية الحاسوب، غالباً ما تُسمى عملية فهم البيانات المرئية بالاستدلال أو التوقع. يوفر Ultralytics YOLO26 ميزة قوية تُعرف بـ وضع التوقع (predict mode)، وهي مصممة خصيصاً للاستدلال عالي الأداء وفائق السرعة عبر مجموعة واسعة من مصادر البيانات.



Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀

Link to this sectionتطبيقات العالم الحقيقي#

التصنيعالرياضةالسلامة
كشف قطع غيار المركباتكشف لاعبي كرة القدمكشف سقوط الأشخاص
كشف قطع غيار المركباتكشف لاعبي كرة القدمكشف سقوط الأشخاص

Link to this sectionلماذا تستخدم Ultralytics YOLO للاستدلال؟#

إليك الأسباب التي تجعلك تفكر في استخدام وضع التوقع في YOLO26 لتلبية احتياجات الاستدلال المختلفة لديك:

  • تعدد الاستخدامات: القدرة على تشغيل الاستدلال على الصور، ومقاطع الفيديو، وحتى البث المباشر.
  • الأداء: مصمم للمعالجة في الوقت الفعلي وعالية السرعة دون التضحية بـ الدقة.
  • سهولة الاستخدام: واجهات Python وCLI بديهية للنشر والاختبار السريع.
  • قابلية عالية للتخصيص: إعدادات ومعلمات متنوعة لضبط سلوك استدلال النموذج وفقاً لمتطلباتك المحددة.
  • جاهز للإنتاج: انشر النماذج كنقاط نهاية REST API على منصة Ultralytics مع خاصية التوسع التلقائي والمراقبة، أو قم بتشغيل الاستدلال محلياً.

Link to this sectionالميزات الرئيسية لوضع التوقع#

صُمم وضع التوقع في YOLO26 ليكون قوياً ومتعدد الاستخدامات، حيث يتميز بـ:

  • التوافق مع مصادر بيانات متعددة: سواء كانت بياناتك في شكل صور فردية، أو مجموعة من الصور، أو ملفات فيديو، أو بث فيديو في الوقت الفعلي، فإن وضع التوقع يلبي احتياجاتك.
  • وضع البث: استخدم ميزة البث لإنشاء مولد فعال في استهلاك الذاكرة لكائنات Results. قم بتفعيل هذا عن طريق ضبط stream=True في طريقة استدعاء أداة التوقع.
  • المعالجة بالدفعة (Batch Processing): عالج صوراً أو إطارات فيديو متعددة في دفعة واحدة، مما يقلل من وقت الاستدلال الإجمالي.
  • سهولة التكامل: تكامل بسهولة مع مسارات بياناتك الحالية ومكونات البرامج الأخرى، بفضل الـ API المرن الخاص به.

تُرجع نماذج Ultralytics YOLO إما قائمة Python من كائنات Results أو مولداً فعالاً في استهلاك الذاكرة لكائنات Results عند تمرير stream=True إلى النموذج أثناء الاستدلال:

التنبؤ
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # pretrained YOLO26n model

# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"])  # return a list of Results objects

# Process results list
for result in results:
    boxes = result.boxes  # Boxes object for bounding box outputs
    masks = result.masks  # Masks object for segmentation masks outputs
    keypoints = result.keypoints  # Keypoints object for pose outputs
    probs = result.probs  # Probs object for classification outputs
    obb = result.obb  # Oriented boxes object for OBB outputs
    result.show()  # display to screen
    result.save(filename="result.jpg")  # save to disk

Link to this sectionمصادر الاستدلال#

يمكن لـ YOLO26 معالجة أنواع مختلفة من مصادر الإدخال للاستدلال، كما هو موضح في الجدول أدناه. تشمل المصادر الصور الثابتة، وبث الفيديو، وتنسيقات البيانات المتنوعة. يشير الجدول أيضاً إلى ما إذا كان يمكن استخدام كل مصدر في وضع البث مع الوسيط stream=True ✅. يُعد وضع البث مفيداً لمعالجة مقاطع الفيديو أو البث المباشر لأنه ينشئ مولداً للنتائج بدلاً من تحميل جميع الإطارات في الذاكرة.

نصيحة

استخدم stream=True لمعالجة مقاطع الفيديو الطويلة أو مجموعات البيانات الكبيرة لإدارة الذاكرة بكفاءة. عند استخدام stream=False، يتم تخزين نتائج جميع الإطارات أو نقاط البيانات في الذاكرة، وهو ما يمكن أن يتراكم بسرعة ويؤدي إلى أخطاء نفاد الذاكرة للمدخلات الكبيرة. في المقابل، يستخدم stream=True مولداً يحتفظ فقط بنتائج الإطار الحالي أو نقطة البيانات الحالية في الذاكرة، مما يقلل من استهلاك الذاكرة بشكل كبير ويمنع مشاكل نفاد الذاكرة.

المصدرمثالالنوعملاحظات
صورة'image.jpg'str أو Pathملف صورة فردي.
URL'https://ultralytics.com/images/bus.jpg'strرابط URL لصورة.
لقطة شاشة'screen'strالتقاط لقطة شاشة.
PILImage.open('image.jpg')PIL.Imageتنسيق HWC مع قنوات RGB.
OpenCVcv2.imread('image.jpg')np.ndarrayتنسيق HWC مع قنوات BGR uint8 (0-255).
NumPynp.zeros((640,1280,3))np.ndarrayتنسيق HWC مع قنوات BGR uint8 (0-255).
torchtorch.zeros(16,3,320,640)torch.Tensorتنسيق BCHW مع قنوات RGB float32 (0.0-1.0).
CSV'sources.csv'str أو Pathملف CSV يحتوي على مسارات لصور أو فيديوهات أو مجلدات.
فيديو ✅'video.mp4'str أو Pathملف فيديو بتنسيقات مثل MP4 أو AVI وما إلى ذلك.
مجلد ✅'path/'str أو Pathمسار إلى مجلد يحتوي على صور أو فيديوهات.
glob ✅'path/*.jpg'strنمط glob لمطابقة ملفات متعددة. استخدم الحرف * كحرف بدل.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strرابط URL لمقطع فيديو على YouTube.
بث ✅'rtsp://example.com/media.mp4'strرابط URL لبروتوكولات البث مثل RTSP أو RTMP أو TCP أو عنوان IP.
بث متعدد ✅'list.streams'str أو Pathملف نصي *.streams يحتوي على رابط بث واحد لكل سطر، أي سيتم تشغيل 8 بثوث بحجم دفعة 8.
كاميرا ويب ✅0intفهرس جهاز الكاميرا المتصل لتشغيل الاستدلال عليه.

فيما يلي أمثلة برمجية لاستخدام كل نوع مصدر:

مصادر التوقع

تشغيل الاستدلال على ملف صورة.

from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Define path to the image file
source = "path/to/image.jpg"

# Run inference on the source
results = model(source)  # list of Results objects

Link to this sectionوسائط الاستنتاج#

يقبل model.predict() وسائط متعددة يمكن تمريرها في وقت الاستنتاج لتجاوز القيم الافتراضية:

Link to this sectionالشكل الثابت مقابل المستطيل الأدنى (rect)#

بشكل افتراضي، يستخدم التنبؤ rect=True، مما يتيح الحشو بـ المستطيل الأدنى (minimum-rectangle) كلما كان ذلك ممكناً. يتم تغيير حجم الصورة لتناسب imgsz ويتم حشوها فقط لأقرب مضاعف للخطوة (stride)، لذا قد يكون الموتر النهائي أصغر من imgsz. يتم استخدام حشو المستطيل الأدنى فقط عندما يكون لجميع الصور في الدفعة نفس الشكل ويدعمه النظام الأساسي (PyTorch .pt، أو ONNX ديناميكي / Triton). بخلاف ذلك، يتم حشو الصور إلى هدف imgsz الكامل.

استخدم rect=False للحشو دائماً إلى هدف imgsz الكامل. يوصى بهذا عندما تحتاج إلى حجم إدخال ثابت ليتطابق مع النماذج المُصدرة (ONNX، TensorRT، إلخ).

imgsz كرقم صحيح مقابل tuple

  • يصبح الرقم الصحيح imgsz=640 هدفاً مربعاً (640, 640) بعد تقريب الخطوة (stride).
  • يحدد الـ tuple imgsz=(384, 672) هدفاً مستطيلاً. مع rect=True و auto=True، يمكن أن يكون الموتر الفعلي أصغر من هذا الهدف.

التدريب مقابل التنبؤ/التصدير

يقبل التدريب رقماً صحيحاً واحداً فقط لـ imgsz (يتم تحويل قائمة [h, w] إلى القيمة الأكبر). يقبل التنبؤ والتصدير إما رقماً صحيحاً أو tuple من نوع (height, width).

مثال
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.25)

وسائط الاستدلال:

الوسيطالنوعالافتراضيالوصف
sourcestr أو int أو NoneNoneيحدد مصدر البيانات للاستدلال. يمكن أن يكون مسار صورة، أو ملف فيديو، أو دليلاً، أو URL، أو معرف جهاز للبث المباشر. إذا تم حذفه، يتم تسجيل تحذير ويعود النموذج إلى أصول العرض التوضيحي المضمنة (ultralytics/assets، أو URL عرض توضيحي لـ OBB). يدعم مجموعة واسعة من التنسيقات والمصادر، مما يتيح تطبيقاً مرناً عبر أنواع مختلفة من المدخلات.
conffloat0.25يعين الحد الأدنى لعتبة الثقة للاكتشافات. سيتم تجاهل الكائنات التي يتم اكتشافها بثقة أقل من هذه العتبة. يمكن أن يساعد تعديل هذه القيمة في تقليل النتائج الإيجابية الخاطئة.
ioufloat0.7عتبة التقاطع فوق الاتحاد (IoU) لكبت غير الأعظمية (NMS). تؤدي القيم الأقل إلى اكتشافات أقل عن طريق التخلص من الصناديق المتداخلة، وهو أمر مفيد لتقليل التكرارات.
imgszint أو tuple640هدف Letterbox. يعطي العدد الصحيح N×N مربعاً؛ ويعطي الصف (height, width). مع rect=True، قد يكون الموتر الفعلي أصغر من هذا الهدف بسبب حشو المستطيل الأدنى. استخدم rect=False لحجم ثابت. انظر الشكل الثابت مقابل المستطيل الأدنى.
rectboolTrueإذا كان True، فاستخدم حشو المستطيل الأدنى عندما يكون ذلك ممكناً (دفعة بنفس الشكل والطرف الخلفي المدعوم). إذا كان False، فقم دائماً بالحشو إلى imgsz الكامل. انظر الشكل الثابت مقابل المستطيل الأدنى.
halfboolFalseيُمكن الاستدلال بنصف الدقة (FP16)، والذي يمكن أن يسرع استدلال النموذج على وحدات GPU المدعومة بأقل تأثير على الدقة.
devicestrNoneيحدد الجهاز للاستدلال (مثال: cpu، cuda:0، 0، npu أو npu:0). يسمح للمستخدمين بالاختيار بين CPU، أو GPU محدد، أو Huawei Ascend NPU، أو أجهزة حوسبة أخرى لتنفيذ النموذج.
batchint1يحدد حجم الدفعة للاستدلال (يعمل فقط عندما يكون المصدر دليلاً أو ملف فيديو أو ملف .txt). يمكن أن يوفر حجم دفعة أكبر معدل نقل أعلى، مما يقصر الوقت الإجمالي المطلوب للاستدلال.
max_detint300الحد الأقصى لعدد الاكتشافات المسموح به لكل صورة. يحد من إجمالي عدد الكائنات التي يمكن للنموذج اكتشافها في استدلال واحد، مما يمنع المخرجات المفرطة في المشاهد الكثيفة.
vid_strideint1خطوة الإطار لمدخلات الفيديو. يسمح بتخطي الإطارات في الفيديوهات لتسريع المعالجة على حساب الدقة الزمنية. تعالج القيمة 1 كل إطار، بينما تتخطى القيم الأعلى الإطارات.
stream_bufferboolFalseيحدد ما إذا كان يجب وضع الإطارات الواردة في طابور لتدفقات الفيديو. إذا كان False، يتم إسقاط الإطارات القديمة لاستيعاب الإطارات الجديدة (محسن للتطبيقات في الوقت الفعلي). إذا كان True، يتم وضع الإطارات الجديدة في طابور، مما يضمن عدم تخطي أي إطارات، ولكنه سيسبب تأخيراً إذا كان FPS الاستدلال أقل من FPS التدفق.
visualizeboolFalseيُنشط تصور ميزات النموذج أثناء الاستدلال، مما يوفر رؤى حول ما "يراه" النموذج. مفيد لتصحيح الأخطاء وتفسير النموذج.
augmentboolFalseيُمكن زيادة وقت الاختبار (TTA) للتنبؤات، مما قد يحسن متانة الاكتشاف على حساب سرعة الاستدلال.
agnostic_nmsboolFalseيُمكن كبت غير الأعظمية (NMS) غير المرتبط بالفئة، والذي يدمج الصناديق المتداخلة للفئات المختلفة. مفيد في سيناريوهات الاكتشاف متعدد الفئات حيث يكون تداخل الفئة شائعاً. بالنسبة للنماذج الشاملة (YOLO26، YOLOv10)، هذا يمنع فقط ظهور نفس الاكتشاف بتسميات فئة متعددة (تكرارات IoU=1.0) ولا يقوم بكبت يعتمد على عتبة IoU بين الصناديق المميزة.
classeslist[int]Noneيُصفي التنبؤات إلى مجموعة من معرفات الفئات. سيتم إرجاع الاكتشافات التي تنتمي إلى الفئات المحددة فقط. مفيد للتركيز على الكائنات ذات الصلة في مهام الاكتشاف متعدد الفئات.
retina_masksboolFalseيُرجع أقنعة تجزئة عالية الدقة. ستطابق الأقنعة المُرجعة (masks.data) حجم الصورة الأصلي إذا تم تمكينه. إذا تم تعطيله، فسيكون لها حجم الصورة المستخدم أثناء الاستدلال.
embedlist[int]Noneيحدد الطبقات التي يتم استخراج متجهات الميزات أو التضمينات منها. مفيد للمهام اللاحقة مثل التجميع أو البحث عن التشابه.
projectstrNoneاسم دليل المشروع حيث يتم حفظ مخرجات التنبؤ إذا تم تمكين save.
namestrNoneاسم تشغيل التنبؤ. يُستخدم لإنشاء دليل فرعي داخل مجلد المشروع، حيث يتم تخزين مخرجات التنبؤ إذا تم تمكين save.
streamboolFalseيُمكّن المعالجة الموفرة للذاكرة للفيديوهات الطويلة أو الصور العديدة عن طريق إرجاع مولد لكائنات النتائج بدلاً من تحميل جميع الإطارات في الذاكرة دفعة واحدة.
verboseboolTrueيتحكم في ما إذا كان يجب عرض سجلات الاستدلال التفصيلية في الطرفية، مما يوفر ملاحظات في الوقت الفعلي حول عملية التنبؤ.
compilebool أو strFalseيُفعّل تجميع الرسم البياني torch.compile في PyTorch 2.x مع backend='inductor'. يقبل True"default"، False → للتعطيل، أو نمط نصي مثل "default"، "reduce-overhead"، "max-autotune-no-cudagraphs". يعود إلى الوضع السريع (eager) مع تحذير إذا كان غير مدعوم.
end2endboolNoneيتجاوز الوضع الشامل في نماذج YOLO التي تدعم الاستدلال الخالي من NMS (YOLO26، YOLOv10). يتيح لك ضبطه على False تشغيل التنبؤ باستخدام خط أنابيب NMS التقليدي، مما يتيح لك بالإضافة إلى ذلك الاستفادة من وسيط iou. راجع دليل الاكتشاف الشامل للحصول على التفاصيل.

وسائط التصور:

الوسيطالنوعالافتراضيالوصف
showboolFalseإذا كان True، فإنه يعرض الصور أو مقاطع الفيديو المشروحة في نافذة. مفيد للحصول على ملاحظات مرئية فورية أثناء التطوير أو الاختبار.
saveboolFalse or Trueيُمكن حفظ الصور أو الفيديوهات المرفقة في ملفات. مفيد للتوثيق أو المزيد من التحليل أو مشاركة النتائج. الافتراضي هو True عند استخدام CLI و False عند الاستخدام في Python.
save_framesboolFalseعند معالجة الفيديوهات، يحفظ الإطارات الفردية كصور. مفيد لاستخراج إطارات معينة أو للتحليل التفصيلي إطاراً بإطار.
save_txtboolFalseيحفظ نتائج الاكتشاف في ملف نصي، باتباع التنسيق [class] [x_center] [y_center] [width] [height] [confidence]. مفيد للتكامل مع أدوات التحليل الأخرى.
save_confboolFalseيتضمن درجات الثقة في الملفات النصية المحفوظة. يعزز التفاصيل المتاحة للمعالجة اللاحقة والتحليل.
save_cropboolFalseيحفظ صوراً مقصوصة للاكتشافات. مفيد لزيادة مجموعة البيانات أو التحليل أو إنشاء مجموعات بيانات مركزة لكائنات معينة.
show_labelsboolTrueيعرض تصنيفات كل اكتشاف في المخرجات المرئية. يوفر فهماً فورياً للكائنات المكتشفة.
show_confboolTrueيعرض درجة الثقة لكل اكتشاف بجانب التصنيف. يوفر رؤية حول مدى يقين النموذج في كل اكتشاف.
show_boxesboolTrueيرسم صناديق الإحاطة حول الكائنات المكتشفة. ضروري للتحديد البصري وموقع الكائنات في الصور أو إطارات الفيديو.
line_widthint or NoneNoneيحدد عرض خط صناديق التحديد. إذا كان None، يتم تعديل عرض الخط تلقائياً بناءً على حجم الصورة. يوفر تخصيصاً مرئياً للوضوح.

Link to this sectionتنسيقات الصور والفيديو#

تدعم YOLO26 تنسيقات صور وفيديو متنوعة، كما هو محدد في ultralytics/data/utils.py. انظر الجداول أدناه لمعرفة اللواحق الصالحة وأوامر التنبؤ النموذجية.

Link to this sectionالصور#

يحتوي الجدول أدناه على تنسيقات صور Ultralytics الصالحة.

ملاحظة

تتطلب تنسيقات HEIC/HEIF مكتبة pi-heif، والتي يتم تثبيتها تلقائياً عند الاستخدام الأول. تنسيق AVIF مدعوم أصلاً بواسطة Pillow.

لواحق الصورمثال على أمر التنبؤالمرجع
.avifyolo predict source=image.avifتنسيق ملف صورة AV1
.bmpyolo predict source=image.bmpتنسيق ملف BMP من Microsoft
.dngyolo predict source=image.dngAdobe DNG
.heicyolo predict source=image.heicتنسيق صورة عالي الكفاءة
.heifyolo predict source=image.heifتنسيق صورة عالي الكفاءة
.jp2yolo predict source=image.jp2JPEG 2000
.jpegyolo predict source=image.jpegJPEG
.jpeg2000yolo predict source=image.jpeg2000JPEG 2000
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpoكائن صور متعدد
.pngyolo predict source=image.pngرسومات شبكة محمولة
.tifyolo predict source=image.tifتنسيق ملف صورة Tag
.tiffyolo predict source=image.tiffتنسيق ملف صورة Tag
.webpyolo predict source=image.webpWebP

Link to this sectionمقاطع الفيديو#

يحتوي الجدول أدناه على تنسيقات فيديو Ultralytics الصالحة.

لواحق الفيديومثال على أمر التنبؤالمرجع
.asfyolo predict source=video.asfتنسيق الأنظمة المتقدمة
.aviyolo predict source=video.aviتداخل الصوت والفيديو
.gifyolo predict source=video.gifتنسيق تبادل الرسومات
.m4vyolo predict source=video.m4vMPEG-4 الجزء 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movتنسيق ملف QuickTime
.mp4yolo predict source=video.mp4MPEG-4 الجزء 14 - ويكيبيديا
.mpegyolo predict source=video.mpegMPEG-1 الجزء 2
.mpgyolo predict source=video.mpgMPEG-1 الجزء 2
.tsyolo predict source=video.tsدفق نقل MPEG
.wmvyolo predict source=video.wmvفيديو ويندوز ميديا
.webmyolo predict source=video.webmمشروع WebM

Link to this sectionالعمل مع النتائج#

ستُرجع جميع استدعاءات predict() في Ultralytics قائمة من كائنات Results:

النتائج
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")
results = model(
    [
        "https://ultralytics.com/images/bus.jpg",
        "https://ultralytics.com/images/zidane.jpg",
    ]
)  # batch inference

تمتلك كائنات Results السمات التالية:

السمة (Attribute)النوعالوصف
orig_imgnp.ndarrayالصورة الأصلية كمصفوفة NumPy.
orig_shapetupleأبعاد الصورة الأصلية بتنسيق (الارتفاع، العرض).
boxesBoxes, optionalكائن Boxes يحتوي على مربعات الإحاطة (bounding boxes) للكشف.
masksMasks, optionalكائن Masks يحتوي على أقنعة الكشف.
probsProbs, optionalكائن Probs يحتوي على احتمالات كل فئة لمهمة التصنيف.
keypointsKeypoints, optionalكائن Keypoints يحتوي على النقاط الرئيسية المكتشفة لكل كائن.
obbOBB, optionalكائن OBB يحتوي على مربعات إحاطة موجهة (oriented bounding boxes).
semantic_maskSemanticMask, optionalكائن SemanticMask يحتوي على خريطة فئات كثيفة لكل بكسل.
speeddictقاموس بسرعات المعالجة الأولية، والاستنتاج، والمعالجة اللاحقة بالملي ثانية لكل صورة.
namesdictقاموس يربط معرفات الفئات بأسماء الفئات.
pathstrمسار ملف الصورة.
save_dirstr, optionalالدليل لحفظ النتائج.

Link to this sectionالنتائج حسب المهمة#

يُرجع كل تنبؤ كائن Results واحداً لكل صورة أو إطار. الحقول المشتركة أعلاه متاحة دائماً، بينما تُخزن بيانات التنبؤ الخاصة بالمهمة في الحقول أدناه. تكون موترات (tensors) الإحداثيات، والثقة، والاحتمالية من نوع torch.float32 ما لم يتم استخدام دقة نصفية (half precision)، حينها تكون torch.float16. بعد استخدام result.numpy()، تصبح الموترات مصفوفات NumPy بأنواع بيانات NumPy مطابقة. أقنعة المثيلات هي موترات ثنائية من نوع torch.uint8، بينما تستخدم الأقنعة الدلالية (semantic masks) أصغر نوع بيانات صحيح عملي لمعرفات الفئات: torch.uint8 أو torch.int16 أو torch.int32، اعتماداً على عدد الفئات.

السمة (Attribute)النوعالشكلالوصف
result.boxesBoxes(N)مربعات الكشف.
result.boxes.datatorch.float32(N,6/7)البيانات الخام [x1,y1,x2,y2,conf,cls]، بالإضافة إلى معرف التتبع الاختياري.
result.boxes.xyxytorch.float32(N,4)مربعات البكسل بتنسيق xyxy.
result.boxes.conftorch.float32(N,)درجات الثقة.
result.boxes.clstorch.float32(N,)معرفات الفئات؛ يتم تحويلها إلى int للأسماء.

كائنات Results تمتلك الطرق التالية:

الطريقة (Method)نوع الإرجاعالوصف
update()Noneتحديث كائن Results ببيانات جديدة مثل الصناديق، الأقنعة، الاحتمالات، obb، النقاط الرئيسية، أو الأقنعة الدلالية.
cpu()Resultsإرجاع نسخة من كائن Results مع نقل جميع الموترات إلى ذاكرة CPU.
numpy()Resultsإرجاع نسخة من كائن Results مع تحويل جميع الموترات إلى مصفوفات NumPy.
cuda()Resultsإرجاع نسخة من كائن Results مع نقل جميع الموترات إلى ذاكرة GPU.
to()Resultsإرجاع نسخة من كائن Results مع نقل الموترات إلى الجهاز ونوع البيانات المحدد.
new()Resultsإنشاء كائن Results جديد بنفس سمات الصورة، المسار، الأسماء، والسرعة.
plot()np.ndarrayرسم نتائج الكشف على صورة BGR مدخلة وإرجاع الصورة المشروحة.
show()Noneعرض الصورة مع نتائج الاستدلال المشروحة.
save()strحفظ صورة نتائج الاستدلال المشروحة في ملف وإرجاع اسم الملف.
verbose()strإرجاع سلسلة سجل لكل مهمة، توضح نتائج الكشف والتصنيف.
save_txt()strحفظ نتائج الكشف في ملف نصي وإرجاع مسار الملف المحفوظ.
save_crop()Noneحفظ صور الكشف المقصوصة في الدليل المحدد.
summary()List[Dict[str, Any]]تحويل نتائج الاستدلال إلى قاموس ملخص مع إمكانية التطبيع الاختيارية.
to_df()DataFrameتحويل نتائج الكشف إلى Polars DataFrame.
to_csv()strتحويل نتائج الكشف إلى تنسيق CSV.
to_json()strتحويل نتائج الكشف إلى تنسيق JSON.

لمزيد من التفاصيل، راجع توثيق فئة Results.

Link to this sectionصناديق (Boxes)#

يمكن استخدام كائن Boxes للفهرسة، والمعالجة، وتحويل صناديق التحديد إلى تنسيقات مختلفة.

صناديق (Boxes)
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.boxes)  # print the Boxes object containing the detection bounding boxes

فيما يلي جدول لطرق وخصائص فئة Boxes، بما في ذلك أسمائها، وأنواعها، ووصفها:

الاسمالنوعالوصف
cpu()الطريقة (Method)نقل الكائن إلى ذاكرة CPU.
numpy()الطريقة (Method)تحويل الكائن إلى مصفوفة NumPy.
cuda()الطريقة (Method)نقل الكائن إلى ذاكرة CUDA.
to()الطريقة (Method)نقل الكائن إلى الجهاز المحدد.
xyxyخاصية (torch.Tensor)إرجاع الصناديق بتنسيق xyxy.
confخاصية (torch.Tensor)إرجاع قيم الثقة للصناديق.
clsخاصية (torch.Tensor)إرجاع قيم الفئة للصناديق.
idخاصية (torch.Tensor)إرجاع معرفات التتبع للصناديق (إذا كانت متاحة).
xywhخاصية (torch.Tensor)إرجاع الصناديق بتنسيق xywh.
xyxynخاصية (torch.Tensor)إرجاع الصناديق بتنسيق xyxy مطبعة وفقاً لحجم الصورة الأصلي.
xywhnخاصية (torch.Tensor)إرجاع الصناديق بتنسيق xywh مطبعة وفقاً لحجم الصورة الأصلي.

لمزيد من التفاصيل، راجع توثيق فئة Boxes.

Link to this sectionالأقنعة (Masks)#

يمكن استخدام كائن Masks للفهرسة، والمعالجة، وتحويل الأقنعة إلى أجزاء (segments).

الأقنعة (Masks)
from ultralytics import YOLO

# Load a pretrained YOLO26n-seg Segment model
model = YOLO("yolo26n-seg.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.masks)  # print the Masks object containing the detected instance masks

فيما يلي جدول لطرق وخصائص فئة Masks، بما في ذلك أسمائها، وأنواعها، ووصفها:

الاسمالنوعالوصف
dataخاصية (torch.Tensor)موتور قناع ثنائي torch.uint8 بشكل (N,H,W) وقيم 0 أو 1.
cpu()الطريقة (Method)إرجاع موتور الأقنعة على ذاكرة CPU.
numpy()الطريقة (Method)إرجاع موتور الأقنعة كمصفوفة NumPy.
cuda()الطريقة (Method)إرجاع موتور الأقنعة على ذاكرة GPU.
to()الطريقة (Method)إرجاع موتور الأقنعة مع الجهاز ونوع البيانات المحدد.
xynخاصية (list[np.ndarray])قائمة بمضلعات الأقنعة المطبعة.
xyخاصية (list[np.ndarray])قائمة بمضلعات الأقنعة بإحداثيات البكسل.

لمزيد من التفاصيل، راجع توثيق فئة Masks.

Link to this sectionSemanticMask#

يخزن SemanticMask خريطة فئة كثيفة واحدة لنتائج التجزئة الدلالية. على عكس Masks، فإنه لا يحتوي على قناع ثنائي واحد لكل كائن ولا يوفر أدوات مساعدة للمضلعات.

SemanticMask
from ultralytics import YOLO

# Load a pretrained YOLO26n-sem Semantic model
model = YOLO("yolo26n-sem.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.semantic_mask.data)  # print the H x W class-ID map
الاسمالنوعالوصف
dataخاصية (torch.Tensor)خريطة معرف الفئة بشكل (H,W). نوع البيانات هو torch.uint8 أو torch.int16 أو torch.int32، ويتم اختياره بناءً على عدد الفئات.
shapeخاصية (tuple)شكل خريطة الفئة، وعادة ما يطابق result.orig_shape.
cpu()الطريقة (Method)إرجاع موتور القناع الدلالي على ذاكرة CPU.
numpy()الطريقة (Method)إرجاع موتور القناع الدلالي كمصفوفة NumPy.
cuda()الطريقة (Method)إرجاع موتور القناع الدلالي على ذاكرة GPU.
to()الطريقة (Method)إرجاع موتور القناع الدلالي مع الجهاز ونوع البيانات المحدد.

Link to this sectionالنقاط الرئيسية (Keypoints)#

يمكن استخدام كائن Keypoints للفهرسة، والمعالجة، وتطبيع الإحداثيات.

النقاط الرئيسية (Keypoints)
from ultralytics import YOLO

# Load a pretrained YOLO26n-pose Pose model
model = YOLO("yolo26n-pose.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.keypoints)  # print the Keypoints object containing the detected keypoints

فيما يلي جدول لطرق وخصائص فئة Keypoints، بما في ذلك أسمائها، وأنواعها، ووصفها:

الاسمالنوعالوصف
cpu()الطريقة (Method)إرجاع موتور النقاط الرئيسية على ذاكرة CPU.
numpy()الطريقة (Method)إرجاع موتور النقاط الرئيسية كمصفوفة NumPy.
cuda()الطريقة (Method)إرجاع موتور النقاط الرئيسية على ذاكرة GPU.
to()الطريقة (Method)إرجاع موتر النقاط الرئيسية (keypoints tensor) بالجهاز (device) ونوع البيانات (dtype) المحددين.
xynخاصية (torch.Tensor)قائمة من النقاط الرئيسية المطبّعة (normalized) ممثلة كموترات.
xyخاصية (torch.Tensor)قائمة من النقاط الرئيسية بإحداثيات البكسل ممثلة كموترات.
confخاصية (torch.Tensor)إرجاع قيم ثقة النقاط الرئيسية إذا كانت متاحة، وإلا يتم إرجاع None.

لمزيد من التفاصيل، راجع وثائق فئة Keypoints.

Link to this sectionProbs#

يمكن استخدام كائن Probs للفهرسة، والحصول على مؤشرات top1 و top5 ودرجات التصنيف.

Probs
from ultralytics import YOLO

# Load a pretrained YOLO26n-cls Classify model
model = YOLO("yolo26n-cls.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.probs)  # print the Probs object containing the detected class probabilities

إليك جدول يلخص الأساليب والخصائص لفئة Probs:

الاسمالنوعالوصف
cpu()الطريقة (Method)إرجاع نسخة من موتر الاحتمالات (probs tensor) على ذاكرة CPU.
numpy()الطريقة (Method)إرجاع نسخة من موتر الاحتمالات (probs tensor) كمصفوفة NumPy.
cuda()الطريقة (Method)إرجاع نسخة من موتر الاحتمالات (probs tensor) على ذاكرة GPU.
to()الطريقة (Method)إرجاع نسخة من موتر الاحتمالات (probs tensor) بالجهاز (device) ونوع البيانات (dtype) المحددين.
top1خاصية (int)مؤشر الفئة الأولى (top 1).
top5خاصية (list[int])مؤشرات الفئات الخمس الأولى (top 5).
top1confخاصية (torch.Tensor)ثقة الفئة الأولى (top 1).
top5confخاصية (torch.Tensor)ثقات الفئات الخمس الأولى (top 5).

لمزيد من التفاصيل، راجع وثائق فئة Probs.

Link to this sectionOBB#

يمكن استخدام كائن OBB للفهرسة، والمعالجة، وتحويل صناديق الإحاطة الموجهة (oriented bounding boxes) إلى تنسيقات مختلفة.

OBB
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n-obb.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/boats.jpg")  # results list

# View results
for r in results:
    print(r.obb)  # print the OBB object containing the oriented detection bounding boxes

إليك جدول لأساليب وخصائص فئة OBB، بما في ذلك الاسم، والنوع، والوصف:

الاسمالنوعالوصف
cpu()الطريقة (Method)نقل الكائن إلى ذاكرة CPU.
numpy()الطريقة (Method)تحويل الكائن إلى مصفوفة NumPy.
cuda()الطريقة (Method)نقل الكائن إلى ذاكرة CUDA.
to()الطريقة (Method)نقل الكائن إلى الجهاز المحدد.
confخاصية (torch.Tensor)إرجاع قيم الثقة للصناديق.
clsخاصية (torch.Tensor)إرجاع قيم الفئة للصناديق.
idخاصية (torch.Tensor)إرجاع معرفات التتبع للصناديق (إذا كانت متاحة).
xyxyخاصية (torch.Tensor)إرجاع الصناديق الأفقية بتنسيق xyxy.
xywhrخاصية (torch.Tensor)إرجاع الصناديق المدورة بتنسيق xywhr.
xyxyxyxyخاصية (torch.Tensor)إرجاع الصناديق المدورة بتنسيق xyxyxyxy.
xyxyxyxynخاصية (torch.Tensor)إرجاع الصناديق المدورة بتنسيق xyxyxyxy مُطبّعة (normalized) حسب حجم الصورة.

لمزيد من التفاصيل، راجع وثائق فئة OBB.

Link to this sectionرسم النتائج#

يسهل أسلوب plot() في كائنات Results تصور التنبؤات من خلال تركيب الكائنات المكتشفة (مثل صناديق الإحاطة، والأقنعة، والنقاط الرئيسية، والاحتمالات) فوق الصورة الأصلية. يقوم هذا الأسلوب بإرجاع الصورة المعنونة كمصفوفة NumPy، مما يسمح بعرضها أو حفظها بسهولة.

الرسم
from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on 'bus.jpg'
results = model(["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"])  # results list

# Visualize the results
for i, r in enumerate(results):
    # Plot results image
    im_bgr = r.plot()  # BGR-order numpy array
    im_rgb = Image.fromarray(im_bgr[..., ::-1])  # RGB-order PIL image

    # Show results to screen (in supported environments)
    r.show()

    # Save results to disk
    r.save(filename=f"results{i}.jpg")

Link to this sectionمعاملات أسلوب plot()#

يدعم أسلوب plot() وسائط متنوعة لتخصيص المخرجات:

الوسيطالنوعالوصفالافتراضي
confboolتضمين درجات ثقة الكشف.True
line_widthfloatعرض خط صناديق الإحاطة. يتناسب طردياً مع حجم الصورة إذا كانت القيمة None.None
font_sizefloatحجم خط النص. يتناسب طردياً مع حجم الصورة إذا كانت القيمة None.None
fontstrاسم الخط للتعليقات النصية.'Arial.ttf'
pilboolإرجاع الصورة ككائن صورة PIL.False
imgnp.ndarrayصورة بديلة للرسم. تستخدم الصورة الأصلية إذا كانت القيمة None.None
im_gputorch.Tensorصورة مسرعة بواسطة GPU لرسم الأقنعة بشكل أسرع. الشكل: (1, 3, 640, 640).None
kpt_radiusintنصف قطر النقاط الرئيسية المرسومة.5
kpt_lineboolتوصيل النقاط الرئيسية بخطوط.True
labelsboolتضمين تسميات الفئات في التعليقات.True
boxesboolتركيب صناديق الإحاطة على الصورة.True
masksboolتركيب الأقنعة على الصورة.True
probsboolتضمين احتمالات التصنيف.True
showboolعرض الصورة المعنونة مباشرة باستخدام عارض الصور الافتراضي.False
saveboolحفظ الصورة المعنونة في ملف محدد بواسطة filename.False
filenamestrمسار واسم الملف لحفظ الصورة المعنونة إذا كان save مضبوطاً على True.None
color_modestrتحديد وضع اللون، على سبيل المثال، 'instance' أو 'class'.'class'
txt_colortuple[int, int, int]لون نص BGR لصندوق الإحاطة وتسمية تصنيف الصورة.(255, 255, 255)

Link to this sectionالاستدلال الآمن خيطياً#

يعد ضمان سلامة الخيوط (thread safety) أثناء الاستدلال أمراً بالغ الأهمية عند تشغيل نماذج YOLO متعددة بالتوازي عبر خيوط مختلفة. يضمن الاستدلال الآمن للخيوط أن تكون تنبؤات كل خيط معزولة ولا تتداخل مع بعضها البعض، مما يتجنب ظروف السباق (race conditions) ويضمن مخرجات متسقة وموثوقة.

عند استخدام نماذج YOLO في تطبيق متعدد الخيوط، من المهم إنشاء كائنات نموذج منفصلة لكل خيط أو استخدام تخزين محلي للخيط لمنع التعارضات:

الاستدلال الآمن خيطياً

إنشاء نموذج واحد داخل كل خيط للاستدلال الآمن للخيوط:

from threading import Thread

from ultralytics import YOLO

def thread_safe_predict(model, image_path):
    """Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
    model = YOLO(model)
    results = model.predict(image_path)
    # Process results

# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image2.jpg")).start()

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

Link to this sectionحلقة for لمصدر البث (Streaming Source)#

إليك نص Python يستخدم OpenCV (cv2) و YOLO لتشغيل الاستدلال على إطارات الفيديو. يفترض هذا النص أنك قمت بالفعل بتثبيت الحزم الضرورية (opencv-python و ultralytics).

حلقة البث for
import cv2

from ultralytics import YOLO

# Load the YOLO model
model = YOLO("yolo26n.pt")

# Open the video file
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)

# Loop through the video frames
while cap.isOpened():
    # Read a frame from the video
    success, frame = cap.read()

    if success:
        # Run YOLO inference on the frame
        results = model(frame)

        # Visualize the results on the frame
        annotated_frame = results[0].plot()

        # Display the annotated frame
        cv2.imshow("YOLO Inference", annotated_frame)

        # Break the loop if 'q' is pressed
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
    else:
        # Break the loop if the end of the video is reached
        break

# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()

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

Link to this sectionالأسئلة الشائعة#

Link to this sectionما هو Ultralytics YOLO ووضع التنبؤ (predict mode) الخاص به للاستدلال في الوقت الفعلي؟#

Ultralytics YOLO هو نموذج متطور للاستدلال في الوقت الفعلي في مجالات كشف الكائنات، وتجزئة المثيلات، والتجزئة الدلالية، والتصنيف. يسمح وضع التنبؤ للمستخدمين بإجراء استدلال عالي السرعة على مصادر بيانات متنوعة مثل الصور، ومقاطع الفيديو، والبث المباشر. صُمم هذا الوضع للأداء وتعدد الاستخدامات، كما يوفر أوضاع المعالجة بالدفعة (batch) والبث. لمزيد من التفاصيل حول ميزاته، تحقق من وضع التنبؤ في Ultralytics YOLO.

Link to this sectionكيف يمكنني تشغيل الاستدلال باستخدام Ultralytics YOLO على مصادر بيانات مختلفة؟#

يمكن لـ Ultralytics YOLO معالجة مجموعة واسعة من مصادر البيانات، بما في ذلك الصور الفردية، ومقاطع الفيديو، والمجلدات، وعناوين URL، والبث. يمكنك تحديد مصدر البيانات في استدعاء model.predict(). على سبيل المثال، استخدم 'image.jpg' لصورة محلية أو 'https://ultralytics.com/images/bus.jpg' لرابط URL. تحقق من الأمثلة التفصيلية لمختلف مصادر الاستدلال في الوثائق.

Link to this sectionكيف يمكنني تحسين سرعة استدلال YOLO واستخدام الذاكرة؟#

لتحسين سرعة الاستدلال وإدارة الذاكرة بكفاءة، يمكنك استخدام وضع البث عن طريق ضبط stream=True في أسلوب استدعاء أداة التنبؤ. ينشئ وضع البث مولداً موفراً للذاكرة من كائنات Results بدلاً من تحميل جميع الإطارات في الذاكرة. لمعالجة مقاطع فيديو طويلة أو مجموعات بيانات كبيرة، يعد وضع البث مفيداً بشكل خاص. اعرف المزيد عن وضع البث.

Link to this sectionما هي وسائط الاستدلال التي يدعمها Ultralytics YOLO؟#

يدعم أسلوب model.predict() في YOLO وسائط متنوعة مثل conf، و iou، و imgsz، و device، والمزيد. تسمح لك هذه الوسائط بتخصيص عملية الاستدلال، وضبط معلمات مثل عتبات الثقة، وحجم الصورة، والجهاز المستخدم للحساب. يمكن العثور على أوصاف تفصيلية لهذه الوسائط في قسم وسائط الاستدلال.

Link to this sectionكيف يمكنني تصور وحفظ نتائج تنبؤات YOLO؟#

بعد تشغيل الاستدلال باستخدام YOLO، تحتوي كائنات Results على أساليب لعرض وحفظ الصور المعنونة. يمكنك استخدام أساليب مثل result.show() و result.save(filename="result.jpg") لتصور النتائج وحفظها. يتم إنشاء أي مجلدات رئيسية مفقودة في مسار اسم الملف تلقائياً (على سبيل المثال، result.save("path/to/result.jpg")). للحصول على قائمة شاملة بهذه الأساليب، ارجع إلى قسم العمل مع النتائج.

التعليقات