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

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

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

مقدمة

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



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

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

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

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

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

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

الميزات الرئيسية لوضع التوقع (Predict)

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

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

تقوم نماذج 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).
numpy 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 مسار إلى دليل يحتوي على صور أو مقاطع فيديو.
glob ✅ '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

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

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

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

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

تشغيل الاستدلال على فيديو YouTube. باستخدام 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 لـ 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("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.5)

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

الوسيطة النوع افتراضي الوصف
source str 'ultralytics/assets' يحدد مصدر البيانات للاستدلال. يمكن أن يكون مسار صورة أو ملف فيديو أو دليل أو عنوان URL أو معرف جهاز لتغذية مباشرة. يدعم مجموعة واسعة من التنسيقات والمصادر، مما يتيح تطبيقًا مرنًا عبر أنواع مختلفة من المدخلات.
conf float 0.25 يحدد الحد الأدنى لعتبة الثقة للكشف. سيتم تجاهل الكائنات التي يتم الكشف عنها بثقة أقل من هذه العتبة. يمكن أن تساعد تعديلات هذه القيمة في تقليل النتائج الإيجابية الكاذبة.
iou float 0.7 عتبة تقاطع الاتحاد (IoU) لقمع Non-Maximum Suppression (NMS). تؤدي القيم المنخفضة إلى عدد أقل من عمليات الكشف عن طريق إزالة المربعات المتداخلة، وهو أمر مفيد لتقليل التكرارات.
imgsz int أو tuple 640 يحدد حجم الصورة للاستدلال. يمكن أن يكون عددًا صحيحًا واحدًا 640 لتغيير الحجم المربع أو صف (ارتفاع، عرض). يمكن أن يؤدي تغيير الحجم المناسب إلى تحسين الكشف الدقة وسرعة المعالجة.
rect bool True إذا تم تمكينه، فإنه يضيف حدًا أدنى من المساحات إلى الجانب الأقصر من الصورة حتى يكون قابلاً للقسمة على الخطوة لتحسين سرعة الاستدلال. إذا تم تعطيله، فإنه يضيف مساحة إلى الصورة لتصبح مربعة أثناء الاستدلال.
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، يتم إسقاط الإطارات القديمة لاستيعاب الإطارات الجديدة (محسن للتطبيقات في الوقت الفعلي). إذا True، يقوم بوضع الإطارات الجديدة في قائمة انتظار في المخزن المؤقت، مما يضمن عدم تخطي أي إطارات، ولكنه سيسبب زمن انتقال إذا كان FPS للاستدلال أقل من FPS للبث.
visualize bool False يقوم بتنشيط تصور ميزات النموذج أثناء الاستدلال، مما يوفر نظرة ثاقبة لما يراه النموذج. مفيد لتصحيح الأخطاء وتفسير النموذج.
augment bool False يتيح زيادة وقت الاختبار (TTA) للتنبؤات، مما قد يحسن قوة الكشف على حساب سرعة الاستدلال.
agnostic_nms bool False يتيح قمع Non-Maximum Suppression (NMS) غير المحدد للفئة، والذي يدمج المربعات المتداخلة لفئات مختلفة. مفيد في سيناريوهات الكشف متعدد الفئات حيث يكون تداخل الفئات شائعًا.
classes list[int] None يقوم بتصفية التنبؤات إلى مجموعة من معرفات الفئات. سيتم إرجاع عمليات الكشف التي تنتمي إلى الفئات المحددة فقط. مفيد للتركيز على الكائنات ذات الصلة في مهام الكشف متعدد الفئات.
retina_masks bool False إرجاع أقنعة تجزئة عالية الدقة. الأقنعة التي تم إرجاعها (masks.data) ستطابق حجم الصورة الأصلي إذا تم تمكينها. إذا تم تعطيلها، فسيكون لها حجم الصورة المستخدم أثناء الاستدلال.
embed list[int] None يحدد الطبقات التي سيتم استخراج متجهات الميزات أو التضمينات منها. مفيد للمهام اللاحقة مثل التجميع أو البحث عن التشابه.
project str None اسم دليل المشروع حيث يتم حفظ مخرجات التنبؤ إذا save تم تمكينه.
name str None اسم تشغيل التنبؤ. يستخدم لإنشاء دليل فرعي داخل مجلد المشروع، حيث يتم تخزين مخرجات التنبؤ إذا save تم تمكينه.
stream bool False تمكين المعالجة الفعالة للذاكرة لمقاطع الفيديو الطويلة أو الصور العديدة عن طريق إرجاع مولد لكائنات النتائج بدلاً من تحميل جميع الإطارات في الذاكرة مرة واحدة.
verbose bool True يتحكم فيما إذا كان سيتم عرض سجلات الاستدلال التفصيلية في الجهاز الطرفي، مما يوفر ملاحظات في الوقت الفعلي حول عملية التنبؤ.

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

الوسيطة النوع افتراضي الوصف
show bool False إذا True، يعرض الصور أو مقاطع الفيديو المشروحة في نافذة. مفيد للحصول على تعليقات مرئية فورية أثناء التطوير أو الاختبار.
save bool False or True يتيح حفظ الصور أو مقاطع الفيديو المشروحة في ملف. مفيد للتوثيق أو إجراء مزيد من التحليل أو مشاركة النتائج. يتم تعيينه افتراضيًا على True عند استخدام CLI و False عند استخدامه في 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 or 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 WebP
.pfm yolo predict source=image.pfm Portable FloatMap
.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 تنسيق تبادل الرسومات (Graphics Interchange Format)
.m4v yolo predict source=video.m4v MPEG-4 الجزء 14
.mkv yolo predict source=video.mkv Matroska
.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 Transport Stream
.wmv yolo predict source=video.wmv Windows Media Video
.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("https://ultralytics.com/images/bus.jpg")
results = model(
    [
        "https://ultralytics.com/images/bus.jpg",
        "https://ultralytics.com/images/zidane.jpg",
    ]
)  # batch inference

Results تحتوي الكائنات على السمات التالية:

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

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

الطريقة نوع الإرجاع الوصف
update() None يقوم بتحديث كائن النتائج ببيانات الكشف الجديدة (المربعات والأقنعة والاحتمالات و obb ونقاط المفاتيح).
cpu() Results إرجاع نسخة من كائن النتائج مع نقل جميع الموترات إلى ذاكرة الـ CPU.
numpy() Results إرجاع نسخة من كائن النتائج مع تحويل جميع الموترات إلى مصفوفات numpy.
cuda() Results إرجاع نسخة من كائن النتائج مع نقل جميع الموترات إلى ذاكرة الـ GPU.
to() 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 تحويل نتائج الكشف إلى Pandas DataFrame.
to_csv() str تحويل نتائج الكشف إلى تنسيق CSV.
to_xml() str تحويل نتائج الكشف إلى تنسيق XML.
to_html() str تحويل نتائج الكشف إلى تنسيق HTML.
to_json() str تحويل نتائج الكشف إلى تنسيق JSON.
to_sql() None تحويل نتائج الكشف إلى تنسيق متوافق مع SQL وحفظها في قاعدة البيانات.

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

المربعات

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

المربعات

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.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 يمكن استخدام الكائن للفهرسة ومعالجة الأقنعة وتحويلها إلى أجزاء.

الأقنعة

from ultralytics import YOLO

# Load a pretrained YOLO11n-seg Segment model
model = YOLO("yolo11n-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() الطريقة إرجاع tensor الأقنعة على ذاكرة CPU.
numpy() الطريقة إرجاع tensor الأقنعة كمصفوفة numpy.
cuda() الطريقة إرجاع tensor الأقنعة على ذاكرة GPU.
to() الطريقة إرجاع tensor الأقنعة بالجهاز ونوع البيانات المحددين.
xyn خاصية (torch.Tensor) قائمة بالأجزاء المطبعة ممثلة كـ tensors.
xy خاصية (torch.Tensor) قائمة بالأجزاء بإحداثيات البكسل ممثلة كـ tensors.

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

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

الوسيطة النوع الوصف افتراضي
conf bool تضمين نتائج الثقة في الكشف. True
line_width float عرض خط مربعات الإحاطة. يتناسب مع حجم الصورة إذا None. None
font_size float حجم خط النص. يتناسب مع حجم الصورة إذا None. None
font str اسم الخط للتعليقات التوضيحية النصية. 'Arial.ttf'
pil bool إرجاع الصورة ككائن صورة PIL. False
img np.ndarray صورة بديلة للتخطيط. يتم استخدام الصورة الأصلية إذا None. None
im_gpu torch.Tensor صورة مُسَرَّعة بواسطة GPU لرسم القناع بشكل أسرع. الشكل: (1, 3, 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 حدد وضع الألوان، على سبيل المثال، 'instance' أو 'class'. 'class'
txt_color tuple[int, int, int] لون نص RGB للمربع المحيط وتسمية تصنيف الصورة. (255, 255, 255)

الاستدلال الآمن لسير العمليات

يعد ضمان سلامة سلاسل العمليات أثناء الاستدلال أمرًا بالغ الأهمية عندما تقوم بتشغيل نماذج 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).

حلقة for للبث

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 ووضع التوقع (predict) الخاص به للاستدلال في الوقت الفعلي؟

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") لتصور وحفظ النتائج. للحصول على قائمة شاملة بهذه الطرق، راجع العمل مع النتائج القسم.



📅 أُنشئ منذ سنة واحدة ✏️ تم التحديث منذ 9 أيام

تعليقات