نموذج التنبؤ مع 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
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('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
obb = result.obb # Oriented boxes object for OBB 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. |
فيما يلي أمثلة التعليمات البرمجية لاستخدام كل نوع مصدر:
مصادر التنبؤ
تشغيل الاستدلال على ملف صورة.
قم بتشغيل الاستدلال على محتوى الشاشة الحالي كلقطة شاشة.
قم بتشغيل الاستدلال على صورة أو مقطع فيديو مستضاف عن بعد عبر عنوان URL.
تشغيل الاستدلال على صورة مفتوحة باستخدام Python مكتبة التصوير (PIL).
قم بتشغيل الاستدلال على صورة مقروءة باستخدام OpenCV.
قم بتشغيل الاستدلال على صورة ممثلة كصفيف 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.
تشغيل الاستدلال على ملف فيديو. باستخدام stream=True
، يمكنك إنشاء منشئ كائنات النتائج لتقليل استخدام الذاكرة.
قم بتشغيل الاستدلال على جميع الصور ومقاطع الفيديو في دليل. لالتقاط الصور ومقاطع الفيديو أيضا في الدلائل الفرعية ، استخدم نمط glob ، أي path/to/dir/**/*
.
تشغيل الاستدلال على جميع الصور ومقاطع الفيديو التي تطابق تعبير 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
، يمكنك إنشاء منشئ لكائنات النتائج لتقليل استخدام الذاكرة لمقاطع الفيديو الطويلة.
قم بتشغيل الاستدلال على مصادر البث عن بعد باستخدام بروتوكولات 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()
يقبل وسيطات متعددة يمكن تمريرها في وقت الاستدلال لتجاوز الإعدادات الافتراضية:
مثل
حجج الاستدلال:
جدال | نوع | افتراضي | وصف |
---|---|---|---|
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
الكائنات:
النتائج
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
يمكن استخدام الكائن لفهرسة ومعالجة وتحويل المربعات المحيطة إلى تنسيقات مختلفة.
مربعات
هنا جدول ل 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
يمكن استخدام الكائن فهرسة ومعالجة وتحويل الأقنعة إلى شرائح.
الكمامات
هنا جدول ل Masks
طرق وخصائص الفئة، بما في ذلك اسمها ونوعها ووصفها:
اسم | نوع | وصف |
---|---|---|
cpu() |
أسلوب | إرجاع الأقنعة tensor على ذاكرة وحدة المعالجة المركزية. |
numpy() |
أسلوب | إرجاع الأقنعة tensor كصفيف numpy. |
cuda() |
أسلوب | إرجاع الأقنعة tensor على ذاكرة وحدة معالجة الرسومات. |
to() |
أسلوب | إرجاع الأقنعة tensor مع الجهاز المحدد و dtype. |
xyn |
الملكية (torch.Tensor ) |
قائمة بالمقاطع الطبيعية الممثلة كموترات. |
xy |
الملكية (torch.Tensor ) |
قائمة بالمقاطع في إحداثيات البكسل ممثلة كموترات. |
لمزيد من التفاصيل انظر Masks
وثائق الفصل.
النقاط الرئيسية
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
مؤشرات ودرجات التصنيف.
تحقيقات
فيما يلي جدول يلخص طرق وخصائص 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
يمكن استخدام الكائن لفهرسة ومعالجة وتحويل المربعات المحيطة الموجهة إلى تنسيقات مختلفة.
أوب
هنا جدول ل 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_bgr[..., ::-1]) # RGB-order PIL image
# Show results to screen (in supported environments)
r.show()
# Save results to disk
r.save(filename=f'results{i}.jpg')
plot()
معلمات الطريقة
ال plot()
تدعم الطريقة وسيطات مختلفة لتخصيص الإخراج:
جدال | نوع | وصف | افتراضي |
---|---|---|---|
conf |
bool |
قم بتضمين درجات ثقة الكشف. | True |
line_width |
float |
عرض خط المربعات المحيطة. يقيس بحجم الصورة إذا None . |
None |
font_size |
float |
حجم خط النص. يقيس بحجم الصورة إذا None . |
None |
font |
str |
اسم الخط للتعليقات التوضيحية النصية. | 'Arial.ttf' |
pil |
bool |
إرجاع الصورة ككائن صورة PIL. | False |
img |
numpy.ndarray |
صورة بديلة للتخطيط. يستخدم الصورة الأصلية إذا None . |
None |
im_gpu |
torch.Tensor |
صورة مسرعة بواسطة وحدة معالجة الرسومات لرسم قناع أسرع. الشكل: (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):
"""Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
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-05-03
المؤلفون: جلين-جوتشر (18)، مساعد أولي (1)، برهان-ك (1)، بلاشينسكي (1)، تينسورتيل (1)، أيوش إكسل (1)، الضاحك-ك (1)