انتقل إلى المحتوى

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

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

مقدمة

في عالم التعلم الآلي ورؤية الكمبيوتر ، تسمى عملية فهم البيانات المرئية "الاستدلال" أو "التنبؤ". Ultralytics YOLOv8 يوفر ميزة قوية تعرف باسم وضع التنبؤ المصممة خصيصا للاستدلال عالي الأداء في الوقت الفعلي على مجموعة واسعة من مصادر البيانات.



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

تطبيقات العالم الحقيقي

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

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

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

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

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

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

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

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

تنبأ

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # pretrained YOLOv8n model

# Run batched inference on a list of images
results = model(['im1.jpg', 'im2.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
    result.show()  # display to screen
    result.save(filename='result.jpg')  # save to disk
from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # pretrained YOLOv8n model

# Run batched inference on a list of images
results = model(['im1.jpg', 'im2.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
    result.show()  # display to screen
    result.save(filename='result.jpg')  # save to disk

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

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

بقشيش

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

مصدر جدال نوع تلاحظ
صورة 'image.jpg' str أو Path ملف صورة واحدة.
الرابط 'https://ultralytics.com/images/bus.jpg' str عنوان URL لصورة.
لقطة شاشة 'screen' str التقط لقطة شاشة.
بيل Image.open('im.jpg') PIL.Image تنسيق HWC مع قنوات RGB.
أوبن سي في cv2.imread('im.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).
سي اس في '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.

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

مصادر التنبؤ

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

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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 YOLOv8n model
model = YOLO('yolov8n.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 YOLOv8n model
model = YOLO('yolov8n.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 YOLOv8n model
model = YOLO('yolov8n.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 YOLOv8n model
model = YOLO('yolov8n.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 YOLOv8n model
model = YOLO('yolov8n.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 YOLOv8n model
model = YOLO('yolov8n.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.

import torch
from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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 YOLOv8n model
model = YOLO('yolov8n.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 YOLOv8n model
model = YOLO('yolov8n.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 YOLOv8n model
model = YOLO('yolov8n.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 YOLOv8n model
model = YOLO('yolov8n.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. إذا تم توفير تدفقات متعددة في ملف *.streams ملف نصي ثم سيتم تشغيل الاستدلال المجمعة ، أي سيتم تشغيل 8 تدفقات بحجم الدفعة 8 ، وإلا سيتم تشغيل التدفقات الفردية بحجم الدفعة 1.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

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

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

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

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

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

مثل

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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). يسمح للمستخدمين بالاختيار بين وحدة المعالجة المركزية أو وحدة معالجة رسومات معينة أو أجهزة حوسبة أخرى لتنفيذ النموذج.
max_det int 300 الحد الأقصى لعدد الاكتشافات المسموح بها لكل صورة. يحد من العدد الإجمالي للكائنات التي يمكن للنموذج اكتشافها في استدلال واحد، مما يمنع المخرجات الزائدة في المشاهد الكثيفة.
vid_stride int 1 خطوة الإطار لمدخلات الفيديو. يسمح بتخطي الإطارات في مقاطع الفيديو لتسريع المعالجة على حساب الدقة الزمنية. قيمة 1 تعالج كل إطار ، القيم الأعلى تتخطى الإطارات.
stream_buffer bool False يحدد ما إذا كان يجب تخزين كل الإطارات مؤقتا عند معالجة تدفقات الفيديو (True)، أو إذا كان يجب أن يعيد النموذج أحدث إطار (False). مفيد للتطبيقات في الوقت الحقيقي.
visualize bool False ينشط تصور ميزات النموذج أثناء الاستدلال ، مما يوفر رؤى حول ما "يراه" النموذج. مفيد لتصحيح الأخطاء وتفسير النموذج.
augment bool False يتيح زيادة وقت الاختبار (TTA) للتنبؤات ، مما قد يؤدي إلى تحسين متانة الكشف على حساب سرعة الاستدلال.
agnostic_nms bool False تمكين منع عدم الحد الأقصى (NMS) اللاأدري للفئة ، والذي يدمج المربعات المتداخلة لفئات مختلفة. مفيد في سيناريوهات الكشف متعددة الفئات حيث يكون تداخل الفئة شائعا.
classes list[int] None تصفية التوقعات إلى مجموعة من معرفات الفئة. سيتم إرجاع الاكتشافات التي تنتمي إلى الفئات المحددة فقط. مفيد للتركيز على الكائنات ذات الصلة في مهام الكشف متعددة الفئات.
retina_masks bool False يستخدم أقنعة تجزئة عالية الدقة إذا كانت متوفرة في النموذج. يمكن أن يؤدي ذلك إلى تحسين جودة القناع لمهام التجزئة ، مما يوفر تفاصيل أدق.
embed list[int] None يحدد الطبقات التي سيتم استخراج متجهات المعالم أو الدمجات منها. مفيد للمهام النهائية مثل التجميع أو البحث عن التشابه.

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

جدال نوع افتراضي وصف
show bool False لو True، يعرض الصور أو مقاطع الفيديو المشروحة في نافذة. مفيد للملاحظات المرئية الفورية أثناء التطوير أو الاختبار.
save bool False يتيح حفظ الصور أو مقاطع الفيديو المشروحة إلى ملف. مفيد للتوثيق أو التحليل الإضافي أو مشاركة النتائج.
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، يتم ضبط عرض الخط تلقائيا بناء على حجم الصورة. يوفر التخصيص المرئي للوضوح.

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

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

الصور

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

لواحق الصور مثال على أمر التنبؤ مرجع
.bmp yolo predict source=image.bmp تنسيق ملف مايكروسوفت BMP
.dng yolo predict source=image.dng أدوبي DNG
.jpeg yolo predict source=image.jpeg جبيغ
.jpg yolo predict source=image.jpg جبيغ
.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 خريطة عائمة محمولة

الفيديوات

يحتوي الجدول أدناه على صالح 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 تنسيق ملف كويك تايم
.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
.wmv yolo predict source=video.wmv ويندوز ميديا فيديو
.webm yolo predict source=video.webm مشروع ويب إم

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

كل Ultralytics predict() ستعيد المكالمات قائمة ب Results الكائنات:

النتائج

from ultralytics import YOLO

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

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

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

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

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

from ultralytics import YOLO

# Load a pretrained YOLOv8n-pose Pose model
model = YOLO('yolov8n-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 على ذاكرة وحدة المعالجة المركزية.
numpy() أسلوب إرجاع النقاط الأساسية tensor كصفيف numpy.
cuda() أسلوب إرجاع النقاط الأساسية tensor على ذاكرة وحدة معالجة الرسومات.
to() أسلوب إرجاع النقاط الأساسية tensor مع الجهاز المحدد و dtype.
xyn الملكية (torch.Tensor) قائمة بالنقاط الرئيسية الطبيعية الممثلة كموترات.
xy الملكية (torch.Tensor) قائمة بالنقاط الرئيسية في إحداثيات البكسل ممثلة كموترات.
conf الملكية (torch.Tensor) إرجاع قيم الثقة للنقاط الرئيسية إذا كانت متوفرة، وإلا لا شيء.

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

تحقيقات

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

تحقيقات

from ultralytics import YOLO

# Load a pretrained YOLOv8n-cls Classify model
model = YOLO('yolov8n-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() أسلوب إرجاع نسخة من الاحتمالات tensor على ذاكرة وحدة المعالجة المركزية.
numpy() أسلوب إرجاع نسخة من الاحتمالات tensor كصفيف numpy.
cuda() أسلوب إرجاع نسخة من الاحتمالات tensor على ذاكرة وحدة معالجة الرسومات.
to() أسلوب إرجاع نسخة من الاحتمالات tensor مع الجهاز المحدد و dtype.
top1 الملكية (int) مؤشر أعلى 1 فئة.
top5 الملكية (list[int]) مؤشرات أعلى 5 فئات.
top1conf الملكية (torch.Tensor) ثقة أعلى 1 درجة.
top5conf الملكية (torch.Tensor) ثقة أعلى 5 فصول.

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

أوب

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

أوب

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n-obb.pt')

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

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

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

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

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

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

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

التامر

from PIL import Image
from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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_array[..., ::-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 صورة مسرعة بواسطة وحدة معالجة الرسومات لرسم قناع أسرع. الشكل: (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

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

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

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

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

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

from ultralytics import YOLO
from threading import Thread

def thread_safe_predict(image_path):
    # Instantiate a new model inside the thread
    local_model = YOLO("yolov8n.pt")
    results = local_model.predict(image_path)
    # Process results


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

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

مصدر الجري for-حلقه

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

البث من أجل حلقة

import cv2
from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO('yolov8n.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 YOLOv8 inference on the frame
        results = model(frame)

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

        # Display the annotated frame
        cv2.imshow("YOLOv8 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".



تم النشر في 2023-11-12, اخر تحديث 2024-02-13
المؤلفون: جلين جوشر (15) ، tensorturtle (1) ، AyushExel (1) ، Laughing-q (1)

التعليقات