تنبؤ النموذج باستخدام Ultralytics YOLO

Ultralytics YOLO ecosystem and integrations

مقدمة

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



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

التطبيقات الواقعية

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

لماذا تستخدم Ultralytics YOLO للاستدلال؟

إليك سبب وجوب النظر في وضع التنبؤ الخاص بـ YOLO26 لاحتياجات الاستدلال المتنوعة الخاصة بك:

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

الميزات الرئيسية لوضع التنبؤ

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

  • توافق متعدد مع مصادر البيانات: سواء كانت بياناتك على شكل صور فردية، أو مجموعة من الصور، أو ملفات فيديو، أو تدفقات فيديو في الوقت الفعلي، فإن وضع التنبؤ يوفر لك التغطية الكاملة.
  • وضع البث (Streaming Mode): استخدم ميزة البث لإنشاء مولد (generator) فعال في استخدام الذاكرة لكائنات 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

مصادر الاستدلال

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

تلميحة

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

المصدرمثالالنوعملاحظات
image'image.jpg'str أو Pathملف صورة مفرد.
URL'https://ultralytics.com/images/bus.jpg'strرابط URL لصورة.
screenshot'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 ✅'video.mp4'str أو Pathملف فيديو بتنسيقات مثل MP4، AVI، إلخ.
directory ✅'path/'str أو Pathمسار لمجلد يحتوي على صور أو مقاطع فيديو.
glob ✅'path/*.jpg'strنمط Glob لمطابقة ملفات متعددة. استخدم الحرف * كبديل.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strرابط URL لفيديو يوتيوب.
stream ✅'rtsp://example.com/media.mp4'strرابط URL لبروتوكولات البث مثل RTSP أو RTMP أو TCP أو عنوان IP.
multi-stream ✅'list.streams'str أو Pathملف نصي *.streams يحتوي على رابط بث واحد لكل سطر، أي أن 8 تدفقات ستعمل بحجم دفعة 8.
webcam ✅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

وسائط الاستنتاج

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

الشكل الثابت مقابل المستطيل الأدنى (rect)

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

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

عدد صحيح مقابل صف imgsz

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

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

يقبل التدريب عدداً صحيحاً واحداً فقط كـ imgsz (يتم تحويل قائمة [h, w] إلى القيمة الأكبر). يقبل التنبؤ والتصدير إما عدداً صحيحاً أو صف (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 أو tuple640Letterbox target. An integer gives a square N×N; a tuple gives (height, width). With rect=True, the actual tensor may be smaller than this target due to minimum-rectangle padding. Use rect=False for a fixed size. See Fixed shape vs minimum rectangle.
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، يتم وضع الإطارات الجديدة في مخزن مؤقت، مما يضمن عدم تخطي أي إطارات، ولكنه سيؤدي إلى زمن انتقال إذا كان معدل الإطارات في الاستنتاج أقل من معدل إطارات التدفق.
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 or strFalseيُفعل تجميع الرسوم البيانية لـ PyTorch 2.x torch.compile باستخدام backend='inductor'. يقبل True"default"، False → للتعطيل، أو وضع نصي مثل "default"، "reduce-overhead"، "max-autotune-no-cudagraphs". يعود إلى التنفيذ الفوري مع تحذير إذا كان غير مدعوم.
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، يتم تعديل عرض الخط تلقائياً بناءً على حجم الصورة. يوفر تخصيصاً مرئياً للوضوح.

تنسيقات الصور والفيديو

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

الصور

يحتوي الجدول أدناه على تنسيقات صور 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
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpoكائن صور متعدد
.pngyolo predict source=image.pngرسومات الشبكة المحمولة
.tifyolo predict source=image.tifتنسيق ملف صورة العلامة
.tiffyolo predict source=image.tiffتنسيق ملف صورة العلامة
.webpyolo predict source=image.webpWebP

مقاطع الفيديو

يحتوي الجدول أدناه على تنسيقات فيديو 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

العمل مع النتائج

ستعيد جميع استدعاءات 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 على السمات التالية:

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

تحتوي كائنات Results على الطرق التالية:

الطريقةنوع الإرجاعالوصف
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رسم نتائج الاكتشاف على صورة RGB وإرجاع الصورة المشروحة.
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.

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()الطريقةنقل الكائن إلى ذاكرة CPU.
numpy()الطريقةتحويل الكائن إلى مصفوفة NumPy.
cuda()الطريقةنقل الكائن إلى ذاكرة CUDA.
to()الطريقةنقل الكائن إلى الجهاز المحدد.
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.

Masks

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

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، بما في ذلك أسماؤها ونوعها ووصفها:

الاسمالنوعالوصف
cpu()الطريقةإرجاع موتر الأقنعة على ذاكرة CPU.
numpy()الطريقةإرجاع موتر الأقنعة كمصفوفة NumPy.
cuda()الطريقةإرجاع موتر الأقنعة على ذاكرة GPU.
to()الطريقةإرجاع موتر الأقنعة مع الجهاز ونوع البيانات المحددين.
xynخاصية (torch.Tensor)قائمة بالمقاطع المطبعة ممثلة كموترات.
xyخاصية (torch.Tensor)قائمة بالمقاطع بإحداثيات البكسل ممثلة كموترات.

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

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()الطريقةإرجاع موتر النقاط الرئيسية (keypoints tensor) على ذاكرة CPU.
numpy()الطريقةإرجاع موتر النقاط الرئيسية كمصفوفة NumPy.
cuda()الطريقةإرجاع موتر النقاط الرئيسية على ذاكرة GPU.
to()الطريقةإرجاع موتر النقاط الرئيسية بالجهاز ونوع البيانات المحددين.
xynخاصية (torch.Tensor)قائمة من النقاط الرئيسية المطبّعة ممثلة كموترات.
xyخاصية (torch.Tensor)قائمة من النقاط الرئيسية بإحداثيات البكسل ممثلة كموترات.
confخاصية (torch.Tensor)إرجاع قيم الثقة للنقاط الرئيسية إذا كانت متاحة، وإلا تُرجع None.

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

Probs

يمكن استخدام كائن 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()الطريقةإرجاع نسخة من موتر الاحتمالات على ذاكرة CPU.
numpy()الطريقةإرجاع نسخة من موتر الاحتمالات كمصفوفة NumPy.
cuda()الطريقةإرجاع نسخة من موتر الاحتمالات على ذاكرة GPU.
to()الطريقةإرجاع نسخة من موتر الاحتمالات بالجهاز ونوع البيانات المحددين.
top1خاصية (int)فهرس فئة top 1.
top5خاصية (list[int])فهارس فئات top 5.
top1confخاصية (torch.Tensor)ثقة فئة top 1.
top5confخاصية (torch.Tensor)ثقة فئات top 5.

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

OBB

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

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()الطريقةنقل الكائن إلى ذاكرة CPU.
numpy()الطريقةتحويل الكائن إلى مصفوفة NumPy.
cuda()الطريقةنقل الكائن إلى ذاكرة CUDA.
to()الطريقةنقل الكائن إلى الجهاز المحدد.
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 مطبّعة حسب حجم الصورة.

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

رسم النتائج

تسهل طريقة 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")

معلمات طريقة plot()

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

المعاملالنوعالوصفالافتراضي
confboolتضمين درجات ثقة الكشف.True
line_widthfloatعرض خط صناديق الإحاطة. يتم تحجيمه مع حجم الصورة إذا كان None.None
font_sizefloatحجم خط النص. يتم تحجيمه مع حجم الصورة إذا كان None.None
fontstrاسم الخط للتعليقات النصية.'Arial.ttf'
pilboolإرجاع الصورة ككائن PIL Image.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]لون نص RGB لصندوق الإحاطة وتسمية تصنيف الصورة.(255, 255, 255)

الاستدلال الآمن للخيوط (Thread-Safe Inference)

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

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

الاستدلال الآمن للخيوط (Thread-Safe Inference)

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

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 الآمن للخيوط. سيوفر لك هذا الدليل جميع المعلومات اللازمة لتجنب العقبات الشائعة والتأكد من أن استدلالك متعدد الخيوط يعمل بسلاسة.

حلقة for لمصدر البث

إليك برنامج نصي بلغة 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'.

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

ما هو Ultralytics YOLO وما هو وضع التنبؤ الخاص به للاستدلال في الوقت الفعلي؟

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

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

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

كيف يمكنني تحسين سرعة استدلال YOLO واستخدام الذاكرة؟

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

ما هي وسائط الاستدلال التي يدعمها Ultralytics YOLO؟

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

كيف يمكنني تصور وحفظ نتائج تنبؤات YOLO؟

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

التعليقات