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

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

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

مقدمة

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



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

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

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

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

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

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

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

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

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

تقوم نماذج Ultralytics YOLO بإرجاع إما قائمة Python بـ Results كائنات أو مولدات ذات ذاكرة فعالة من 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التقاط لقطة شاشة.
PILImage.open('image.jpg')PIL.Imageتنسيق HWC مع قنوات RGB.
OpenCVcv2.imread('image.jpg')np.ndarrayتنسيق HWC مع قنوات BGR uint8 (0-255).
numpynp.zeros((640,1280,3))np.ndarrayتنسيق HWC مع قنوات BGR uint8 (0-255).
torchtorch.zeros(16,3,320,640)torch.Tensorتنسيق BCHW مع قنوات RGB float32 (0.0-1.0).
CSV'sources.csv'str أو Pathملف CSV يحتوي على مسارات إلى الصور أو مقاطع الفيديو أو الدلائل.
فيديو ✅'video.mp4'str أو Pathملف فيديو بتنسيقات مثل MP4 و AVI وما إلى ذلك.
دليل ✅'path/'str أو Pathمسار إلى دليل يحتوي على صور أو مقاطع فيديو.
glob ✅'path/*.jpg'strنمط Glob لمطابقة ملفات متعددة. استخدم الـ * كحرف بدل.
يوتيوب ✅'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.
كاميرا ويب ✅0intفهرس جهاز الكاميرا المتصل لتشغيل الاستدلال عليه.

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

مصادر التوقع

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

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

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

ملاحظة

يستخدم Ultralytics الحد الأدنى من الحشو أثناء الاستدلال افتراضيًا (rect=True). في هذا الوضع، يتم تبطين الجانب الأقصر من كل صورة بالقدر اللازم فقط لجعلها قابلة للقسمة على الحد الأقصى لخطوة النموذج، بدلاً من تبطينها بالكامل imgsz. عند تشغيل الاستدلال على مجموعة من الصور، لا يعمل الحشو الأدنى إلا إذا كانت جميع الصور ذات أحجام متطابقة. خلاف ذلك، يتم تبطين الصور بشكل موحد إلى شكل مربع مع كلا الجانبين يساوي imgsz.

  • batch=1باستخدام rect الحشو افتراضيًا.
  • batch>1باستخدام rect الحشو فقط إذا كانت جميع الصور في دفعة واحدة ذات حجم متطابق، وإلا باستخدام الحشو المربع إلى imgsz.

مثال

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)
# Run inference on 'bus.jpg'
yolo predict model=yolo11n.pt source='https://ultralytics.com/images/bus.jpg'

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

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

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

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

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

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

الصور

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

ملاحظة

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

لاحقات الصورمثال على أمر التوقعمرجع
.bmpyolo predict source=image.bmpتنسيق ملف Microsoft BMP
.dngyolo predict source=image.dngAdobe DNG
.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
.pfmyolo predict source=image.pfmPortable FloatMap
.HEICyolo predict source=image.HEICتنسيق الصور عالي الكفاءة

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

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

لاحقات الفيديومثال على أمر التوقعمرجع
.asfyolo predict source=video.asfتنسيق الأنظمة المتقدمة
.aviyolo predict source=video.aviتداخل الفيديو والصوت
.gifyolo predict source=video.gifتنسيق تبادل الرسومات (Graphics Interchange Format)
.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.tsMPEG Transport Stream
.wmvyolo predict source=video.wmvWindows Media Video
.webmyolo 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_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يقوم بتحديث كائن النتائج ببيانات الكشف الجديدة (المربعات والأقنعة والاحتمالات و 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تحويل نتائج الكشف إلى إطار بيانات Polars DataFrame.
to_csv()strتحويل نتائج الكشف إلى تنسيق CSV.
to_json()strتحويل نتائج الكشف إلى تنسيق JSON.

لمزيد من التفاصيل، راجع 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 وسائط مختلفة لتخصيص الإخراج:

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



📅 تم إنشاؤها منذ 2 سنوات مضت ✏️ تم التحديث منذ 3 أيام
glenn-jocherRizwanMunawarLaughing-qUltralyticsAssistantMatthewNoyceY-T-Gبانو4براسادjk4esergiuwaxmannIvorZhu331Burhan-QplashchynskitensorturtleAyushExel

تعليقات