تخطي إلى المحتوى

التنبؤ بالنموذج مع Ultralytics YOLO

Ultralytics YOLO النظام البيئي والتكاملات

مقدمة

في عالم التعلّم الآلي والرؤية الحاسوبية، يُطلق على عملية استخلاص المعنى من البيانات المرئية اسم "الاستدلال" أو "التنبؤ". Ultralytics YOLO11 يوفر ميزة قوية تُعرف باسم وضع التنبؤ المصمم خصيصًا للاستدلال عالي الأداء في الوقت الحقيقي على مجموعة كبيرة من مصادر البيانات.



شاهد: كيفية استخراج النواتج من Ultralytics YOLO نموذج للمشاريع المخصصة.

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

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

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

فيما يلي الأسباب التي تجعلك تفكر في وضع التنبؤ YOLO11 لاحتياجاتك الاستدلالية المختلفة:

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

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

YOLO11صُمِّم وضع التنبؤ ليكون قوياً ومتعدد الاستخدامات، حيث يتميز بما يلي

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

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

التنبؤ

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # pretrained YOLO11n 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
from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # pretrained YOLO11n model

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

# Process results generator
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

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

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

نصيحة

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

المصدر مثال على ذلك النوع الملاحظات
الصورة 'image.jpg' str أو Path ملف صورة واحدة.
عنوان URL 'https://ultralytics.com/images/bus.jpg' str عنوان URL لصورة.
لقطة شاشة 'screen' str التقط لقطة شاشة.
PIL Image.open('image.jpg') PIL.Image تنسيق HWC مع قنوات RGB.
OpenCV cv2.imread('image.jpg') np.ndarray تنسيق HWC مع قنوات BGR uint8 (0-255).
نومي np.zeros((640,1280,3)) np.ndarray تنسيق HWC مع قنوات BGR uint8 (0-255).
torch torch.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 المسار إلى دليل يحتوي على صور أو مقاطع فيديو.
الكرة الأرضية ✅ 'path/*.jpg' str نمط Glob لمطابقة ملفات متعددة. استخدم النمط * كحرف بدل.
يوتيوب ✅ 'https://youtu.be/LNwODJXcvt4' str عنوان URL لفيديو يوتيوب.
تيار ✅ 'rtsp://example.com/media.mp4' str عنوان URL لبروتوكولات البث مثل RTSP أو RTMP أو TCP أو عنوان IP.
متعدد الدفق ✅ 'list.streams' str أو Path *.streams ملف نصي يحتوي على عنوان URL دفق واحد لكل صف، أي سيتم تشغيل 8 تدفقات بحجم الدفعة 8.
كاميرا الويب ✅ 0 int فهرس جهاز الكاميرا المتصل لتشغيل الاستدلال عليه.

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

مصادر التنبؤ

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

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

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

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

قم بتشغيل الاستدلال على محتوى الشاشة الحالي كلقطة شاشة.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define current screenshot as source
source = "screen"

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

تشغيل الاستدلال على صورة أو مقطع فيديو مستضاف عن بُعد عبر عنوان URL.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define remote image or video URL
source = "https://ultralytics.com/images/bus.jpg"

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

قم بتشغيل الاستدلال على صورة مفتوحة باستخدام مكتبة التصوير Python (PIL).

from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Open an image using PIL
source = Image.open("path/to/image.jpg")

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

قم بتشغيل الاستدلال على صورة مقروءة باستخدام OpenCV.

import cv2

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Read an image using OpenCV
source = cv2.imread("path/to/image.jpg")

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

قم بتشغيل الاستدلال على صورة ممثلة كمصفوفة نومي.

import numpy as np

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Create a random numpy array of HWC shape (640, 640, 3) with values in range [0, 255] and type uint8
source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype="uint8")

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

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

import torch

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Create a random torch tensor of BCHW shape (1, 3, 640, 640) with values in range [0, 1] and type float32
source = torch.rand(1, 3, 640, 640, dtype=torch.float32)

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

قم بتشغيل الاستدلال على مجموعة من الصور وعناوين URL ومقاطع الفيديو والأدلة المدرجة في ملف CSV.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define a path to a CSV file with images, URLs, videos and directories
source = "path/to/file.csv"

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

تشغيل الاستدلال على ملف فيديو. باستخدام stream=True، يمكنك إنشاء مولد كائنات النتائج لتقليل استخدام الذاكرة.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define path to video file
source = "path/to/video.mp4"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

قم بتشغيل الاستدلال على جميع الصور ومقاطع الفيديو في الدليل. لالتقاط الصور ومقاطع الفيديو في الدلائل الفرعية أيضًا، استخدم نمط glob، أي path/to/dir/**/*.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define path to directory containing images and videos for inference
source = "path/to/dir"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

قم بتشغيل الاستدلال على جميع الصور ومقاطع الفيديو التي تتطابق مع تعبير كروي مع * الشخصيات.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define a glob search for all JPG files in a directory
source = "path/to/dir/*.jpg"

# OR define a recursive glob search for all JPG files including subdirectories
source = "path/to/dir/**/*.jpg"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

تشغيل الاستدلال على فيديو يوتيوب. باستخدام stream=True، يمكنك إنشاء مولد من كائنات النتائج لتقليل استخدام الذاكرة لمقاطع الفيديو الطويلة.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define source as YouTube video URL
source = "https://youtu.be/LNwODJXcvt4"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

استخدم وضع الدفق لتشغيل الاستدلال على تدفقات الفيديو المباشرة باستخدام بروتوكولات RTSP أو RTMP أو TCP أو بروتوكولات عناوين IP. إذا تم توفير دفق واحد، يقوم النموذج بتشغيل الاستدلال باستخدام حجم الدُفعة من 1. بالنسبة للتدفقات المتعددة، فإن .streams يمكن استخدام الملف النصي لإجراء الاستدلال على دفعات، حيث يتم تحديد حجم الدفعة بعدد التدفقات المقدمة (على سبيل المثال، حجم الدفعة 8 لثمانية تدفقات).

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Single stream with batch-size 1 inference
source = "rtsp://example.com/media.mp4"  # RTSP, RTMP, TCP, or IP streaming address

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

بالنسبة لاستخدام الدفق الفردي، يتم تعيين حجم الدُفعة على 1 افتراضيًا، مما يسمح بمعالجة فعالة في الوقت الفعلي لتغذية الفيديو.

للتعامل مع تدفقات فيديو متعددة في نفس الوقت، استخدم .streams ملف نصي يحتوي على مصادر التدفق. سيقوم النموذج بتشغيل الاستدلال على دفعات حيث يساوي حجم الدفعة عدد التدفقات. يتيح هذا الإعداد معالجة فعّالة لموجزات متعددة بشكل متزامن.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Multiple streams with batched inference (e.g., batch-size 8 for 8 streams)
source = "path/to/list.streams"  # *.streams text file with one streaming address per line

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

مثال على ذلك .streams ملف نصي:

rtsp://example.com/media1.mp4
rtsp://example.com/media2.mp4
rtmp://example2.com/live
tcp://192.168.1.100:554
...

يمثّل كل صف في الملف مصدر دفق، مما يسمح لك بمراقبة وإجراء الاستدلال على عدة تدفقات فيديو في آنٍ واحد.

يمكنك تشغيل الاستدلال على جهاز كاميرا متصل عن طريق تمرير فهرس تلك الكاميرا المعينة إلى source.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on the source
results = model(source=0, stream=True)  # generator of Results objects

حجج الاستدلال

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

مثال على ذلك

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on 'bus.jpg' with arguments
model.predict("bus.jpg", save=True, imgsz=320, conf=0.5)

الحجج الاستدلالية:

الجدال النوع افتراضي الوصف
source str 'ultralytics/assets' يحدد مصدر البيانات للاستدلال. يمكن أن يكون مسار صورة، أو ملف فيديو، أو دليل، أو عنوان URL، أو معرّف جهاز للبث المباشر. يدعم مجموعة واسعة من التنسيقات والمصادر، مما يتيح التطبيق المرن عبر أنواع مختلفة من المدخلات.
conf float 0.25 تعيين الحد الأدنى لعتبة الثقة للاكتشافات. سيتم تجاهل الكائنات المكتشفة بثقة أقل من هذه العتبة. يمكن أن يساعد ضبط هذه القيمة في تقليل النتائج الإيجابية الخاطئة.
iou float 0.7 عتبة التقاطع فوق الاتحاد (IoU) للقمع غير الأقصى (NMS). تؤدي القيم المنخفضة إلى عدد أقل من الاكتشافات عن طريق التخلص من المربعات المتداخلة، وهو أمر مفيد لتقليل التكرارات.
imgsz int or tuple 640 يحدد حجم الصورة للاستدلال. يمكن أن يكون عددًا صحيحًا واحدًا 640 لتغيير حجم المربع أو (الارتفاع، العرض) المربّع أو (الارتفاع، العرض). يمكن أن يحسن التحجيم المناسب من الكشف الدقة وسرعة المعالجة.
half bool False تمكين الاستدلال بنصف الدقة (FP16)، والذي يمكن أن يسرّع استدلال النموذج على وحدات معالجة الرسومات المدعومة بأقل تأثير على الدقة.
device str None يحدد جهاز الاستدلال (على سبيل المثال, cpu, cuda:0 أو 0). يسمح للمستخدمين بالاختيار بين CPU ، أو جهاز GPU معين، أو أجهزة حوسبة أخرى لتنفيذ النموذج.
batch int 1 يحدد حجم الدُفعة للاستدلال (يعمل فقط عندما يكون المصدر هو دليل أو ملف فيديو أو .txt الملف). يمكن أن يوفر حجم الدفعة الأكبر إنتاجية أعلى، مما يقلل من إجمالي الوقت اللازم للاستدلال.
max_det int 300 الحد الأقصى لعدد الاكتشافات المسموح به لكل صورة. يحد من العدد الإجمالي للأجسام التي يمكن للنموذج اكتشافها في استدلال واحد، مما يمنع المخرجات الزائدة في المشاهد الكثيفة.
vid_stride int 1 خطوة الإطار لمدخلات الفيديو. يسمح بتخطي الإطارات في مقاطع الفيديو لتسريع المعالجة على حساب الدقة الزمنية. القيمة 1 تعالج كل إطار، والقيم الأعلى تتخطى الإطارات.
stream_buffer bool False يحدد ما إذا كان سيتم وضع الإطارات الواردة في قائمة الانتظار لبث الفيديو. في حالة False، يتم إسقاط الإطارات القديمة لاستيعاب الإطارات الجديدة (محسّن لتطبيقات الوقت الحقيقي). إذا كان 'صحيح'، يتم وضع الإطارات الجديدة في قائمة انتظار في مخزن مؤقت، مما يضمن عدم تخطي أي إطارات، ولكن سيتسبب في حدوث تأخير في التأخير إذا كان معدل الإطارات في الثانية في الاستدلال أقل من معدل الإطارات في الثانية في الدفق.
visualize bool False يُفعّل تصور ميزات النموذج أثناء الاستدلال، مما يوفر نظرة ثاقبة لما "يراه" النموذج. مفيد لتصحيح الأخطاء وتفسير النموذج.
augment bool False تمكين زيادة وقت الاختبار (TTA) للتنبؤات، مما قد يحسن من قوة الكشف على حساب سرعة الاستدلال.
agnostic_nms bool False تمكين الكبت غير الفئوي غير الفئوي (NMS)، الذي يدمج المربعات المتداخلة من فئات مختلفة. مفيد في سيناريوهات الكشف متعدد الفئات حيث يكون تداخل الفئات شائعًا.
classes list[int] None تصفية التنبؤات إلى مجموعة من معرّفات الفئات. سيتم إرجاع الاكتشافات التي تنتمي إلى الفئات المحددة فقط. مفيد للتركيز على الكائنات ذات الصلة في مهام الكشف متعدد الفئات.
retina_masks bool False إرجاع أقنعة تجزئة عالية الدقة. الأقنعة التي تم إرجاعها (masks.data) ستطابق حجم الصورة الأصلية إذا تم تمكينها. أما إذا تم تعطيلها، فسيكون لها حجم الصورة المستخدم أثناء الاستدلال.
embed list[int] None يحدد الطبقات التي يتم استخراج متجهات الميزات أو التضمينات منها. مفيد للمهام النهائية مثل التجميع أو البحث عن التشابه.
project str None اسم دليل المشروع حيث يتم حفظ مخرجات التنبؤ في حالة save ممكّنة.
name str None اسم عملية تشغيل التنبؤ. يُستخدم لإنشاء دليل فرعي داخل مجلد المشروع، حيث يتم تخزين مخرجات التنبؤ في حالة save ممكّنة.

حجج التصور:

الجدال النوع افتراضي الوصف
show bool False إذا كان Trueيعرض الصور أو مقاطع الفيديو المشروحة في نافذة. مفيد للتعليقات المرئية الفورية أثناء التطوير أو الاختبار.
save bool False أو True تمكين حفظ الصور أو مقاطع الفيديو المشروحة في ملف. مفيد للتوثيق أو لمزيد من التحليل أو مشاركة النتائج. الافتراضي إلى صواب عند استخدام CLI وخطأ عند استخدامه في Python.
save_frames bool False عند معالجة مقاطع الفيديو، يحفظ الإطارات الفردية كصور. مفيد لاستخراج إطارات محددة أو للتحليل التفصيلي إطاراً بإطار.
save_txt bool False يحفظ نتائج الكشف في ملف نصي، باتباع التنسيق [class] [x_center] [y_center] [width] [height] [confidence]. مفيد للتكامل مع أدوات التحليل الأخرى.
save_conf bool False يتضمن درجات الثقة في الملفات النصية المحفوظة. يعزز التفاصيل المتاحة للمعالجة اللاحقة والتحليل.
save_crop bool False يحفظ الصور التي تم اقتصاصها من عمليات الكشف. مفيد لتكبير مجموعة البيانات أو تحليلها أو إنشاء مجموعات بيانات مركزة لأجسام محددة.
show_labels bool True يعرض تسميات لكل اكتشاف في الإخراج المرئي. يوفر فهماً فورياً للأجسام المكتشفة.
show_conf bool True يعرض درجة الثقة لكل اكتشاف إلى جانب التسمية. يعطي فكرة عن مدى يقين النموذج لكل اكتشاف.
show_boxes bool True يرسم المربعات المحيطة بالأجسام المكتشفة. ضروري للتعرف البصري على الأجسام وموقعها في الصور أو إطارات الفيديو.
line_width None أو int None يحدد عرض خط المربعات المحدودة. إذا كان None، يتم ضبط عرض الخط تلقائيًا بناءً على حجم الصورة. يوفر تخصيصاً مرئياً للوضوح.

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

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

الصور

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

ملاحظة

يتم دعم صور HEIC للاستدلال فقط، وليس للتدريب.

لاحقات الصور مثال على أمر التنبؤ المرجع
.bmp yolo predict source=image.bmp Microsoft تنسيق ملف BMP
.dng yolo predict source=image.dng Adobe DNG
.jpeg yolo predict source=image.jpeg JPEG
.jpg yolo predict source=image.jpg JPEG
.mpo yolo predict source=image.mpo كائن متعدد الصور
.png yolo predict source=image.png رسومات الشبكة المحمولة
.tif yolo predict source=image.tif تنسيق ملف صورة الوسم
.tiff yolo predict source=image.tiff تنسيق ملف صورة الوسم
.webp yolo predict source=image.webp ويبب
.pfm yolo predict source=image.pfm الخريطة العائمة المحمولة
.HEIC yolo predict source=image.HEIC تنسيق الصور عالي الكفاءة

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

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

لاحقات الفيديو مثال على أمر التنبؤ المرجع
.asf yolo predict source=video.asf تنسيق الأنظمة المتقدمة
.avi yolo predict source=video.avi تشفير الصوت والفيديو
.gif yolo predict source=video.gif تنسيق تبادل الرسومات
.m4v yolo predict source=video.m4v MPEG-4 الجزء 14
.mkv yolo predict source=video.mkv ماتروسكا
.mov yolo predict source=video.mov تنسيق ملف QuickTime
.mp4 yolo predict source=video.mp4 MPEG-4 الجزء 14 - ويكيبيديا
.mpeg yolo predict source=video.mpeg MPEG-1 الجزء 2
.mpg yolo predict source=video.mpg MPEG-1 الجزء 2
.ts yolo predict source=video.ts تدفق النقل MPEG MPEG
.wmv yolo predict source=video.wmv فيديو ويندوز ميديا
.webm yolo predict source=video.webm مشروع WebM

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

الكل Ultralytics predict() ستُعيد المكالمات قائمة ب Results الأشياء:

النتائج

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on an image
results = model("bus.jpg")  # list of 1 Results object
results = model(["bus.jpg", "zidane.jpg"])  # list of 2 Results objects

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

السمة النوع الوصف
orig_img numpy.ndarray الصورة الأصلية كمصفوفة مرقمة.
orig_shape tuple شكل الصورة الأصلية بتنسيق (الارتفاع، العرض).
boxes Boxes, optional كائن مربعات يحتوي على المربعات المحددة للكشف.
masks Masks, optional كائن أقنعة يحتوي على أقنعة الكشف.
probs Probs, optional كائن Probs يحتوي على احتمالات كل فئة لمهمة التصنيف.
keypoints Keypoints, optional كائن نقاط رئيسية يحتوي على نقاط رئيسية مكتشفة لكل كائن.
obb OBB, optional كائن OBB يحتوي على مربعات محيطية موجهة.
speed dict قاموس سرعات ما قبل المعالجة والاستدلال وما بعد المعالجة بالمللي ثانية لكل صورة.
names dict قاموس أسماء الفئات.
path str المسار إلى ملف الصورة.

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

الطريقة نوع الإرجاع الوصف
update() None قم بتحديث المربعات، والأقنعة، والسمات المؤثرة في كائن النتائج.
cpu() Results إرجاع نسخة من كائن النتائج مع جميع الموترين على ذاكرة CPU .
numpy() Results قم بإرجاع نسخة من كائن النتائج مع جميع الموترين كمصفوفات numpy.
cuda() Results إرجاع نسخة من كائن النتائج مع جميع الموترين على ذاكرة GPU .
to() Results إرجاع نسخة من كائن النتائج مع الموتر على الجهاز المحدد ونوع d.
new() Results إرجاع كائن نتائج جديد بنفس الصورة والمسار والأسماء.
plot() numpy.ndarray يرسم نتائج الكشف. إرجاع مصفوفة مرقمة للصورة المشروحة.
show() None عرض النتائج المشروحة على الشاشة.
save() None حفظ النتائج المشروحة في ملف.
verbose() str إرجاع سلسلة السجل لكل مهمة.
save_txt() None احفظ التوقعات في ملف txt.
save_crop() None حفظ التوقعات التي تم اقتصاصها في save_dir/cls/file_name.jpg.
tojson() str تحويل الكائن إلى تنسيق JSON.

لمزيد من التفاصيل انظر Results وثائق الفصل.

الصناديق

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

الصناديق

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on an image
results = model("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 بتنسيق xyxy مع ضبطها حسب حجم الصورة الأصلية.
xywhn الملكية (torch.Tensor) قم بإرجاع المربعات بتنسيق xywh بتنسيق xywh مع ضبطها حسب حجم الصورة الأصلية.

لمزيد من التفاصيل انظر Boxes وثائق الفصل.

الأقنعة

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

الأقنعة

from ultralytics import YOLO

# Load a pretrained YOLO11n-seg Segment model
model = YOLO("yolo11n-seg.pt")

# Run inference on an image
results = model("bus.jpg")  # results list

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

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

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

لمزيد من التفاصيل انظر Masks وثائق الفصل.

النقاط الرئيسية

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

النقاط الرئيسية

from ultralytics import YOLO

# Load a pretrained YOLO11n-pose Pose model
model = YOLO("yolo11n-pose.pt")

# Run inference on an image
results = model("bus.jpg")  # results list

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

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

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

لمزيد من التفاصيل انظر Keypoints وثائق الفصل.

البروبس

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

البروبس

from ultralytics import YOLO

# Load a pretrained YOLO11n-cls Classify model
model = YOLO("yolo11n-cls.pt")

# Run inference on an image
results = model("bus.jpg")  # results list

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

فيما يلي جدول يلخص الطرق والخصائص الخاصة ب Probs الفصل:

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

لمزيد من التفاصيل انظر Probs وثائق الفصل.

OBB

OBB لفهرسة ومعالجة وتحويل المربعات المحدودة الموجهة إلى تنسيقات مختلفة.

OBB

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n-obb.pt")

# Run inference on an image
results = model("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 بتنسيق xyxyxy طبيعي حسب حجم الصورة.

لمزيد من التفاصيل انظر OBB وثائق الفصل.

تخطيط النتائج

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

التخطيط

from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on 'bus.jpg'
results = model(["bus.jpg", "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() وسيطات مختلفة لتخصيص الإخراج:

الجدال النوع الوصف افتراضي
conf bool تضمين درجات الثقة في الكشف. True
line_width float عرض خط المربعات المحدودة. يتناسب مع حجم الصورة إذا كان None. None
font_size float حجم خط النص. يتناسب مع حجم الصورة إذا None. None
font str اسم الخط للتعليقات التوضيحية النصية. 'Arial.ttf'
pil bool إرجاع الصورة ككائن صورة PIL. False
img numpy.ndarray صورة بديلة للتخطيط. يستخدم الصورة الأصلية إذا None. None
im_gpu torch.Tensor GPU-accelerated image for faster mask plotting. الشكل: (1، 3، 640، 640، 640). None
kpt_radius int نصف القطر للنقاط الرئيسية المرسومة. 5
kpt_line bool ربط النقاط الرئيسية بخطوط. True
labels bool تضمين تسميات الفئات في التعليقات التوضيحية. True
boxes bool تراكب المربعات المحدودة على الصورة. True
masks bool تراكب الأقنعة على الصورة. True
probs bool تضمين احتمالات التصنيف. True
show bool اعرض الصورة المشروحة مباشرةً باستخدام عارض الصور الافتراضي. False
save bool احفظ الصورة المشروحة في ملف محدد بواسطة filename. False
filename str مسار الملف واسمه لحفظ الصورة المشروحة إذا كان save هو True. None
color_mode str حدد وضع اللون، على سبيل المثال، "مثيل" أو "فئة". 'class'

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

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

عند استخدام النماذج 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=("yolo11n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image2.jpg")).start()

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

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

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

دفق للحلقة للحلقة

import cv2

from ultralytics import YOLO

# Load the YOLO model
model = YOLO("yolo11n.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") لتصور النتائج وحفظها. للاطلاع على قائمة شاملة لهذه الطرق، ارجع إلى العمل بالنتائج القسم.

📅 تم إنشاؤها منذ 1 سنة مضت ✏️ تم التحديث منذ 1 شهر

التعليقات