التنبؤ بالنموذج مع Ultralytics YOLO
مقدمة
في عالم التعلّم الآلي والرؤية الحاسوبية، يُطلق على عملية استخلاص المعنى من البيانات المرئية اسم "الاستدلال" أو "التنبؤ". Ultralytics YOLO11 يوفر ميزة قوية تُعرف باسم وضع التنبؤ المصمم خصيصًا للاستدلال عالي الأداء في الوقت الحقيقي على مجموعة كبيرة من مصادر البيانات.
شاهد: كيفية استخراج النواتج من Ultralytics YOLO نموذج للمشاريع المخصصة.
التطبيقات الواقعية
التصنيع | الرياضة | السلامة |
---|---|---|
الكشف عن قطع غيار المركبات | اكتشاف لاعب كرة القدم | الكشف عن سقوط الأشخاص |
لماذا نستخدم Ultralytics YOLO للاستدلال؟
فيما يلي الأسباب التي تجعلك تفكر في وضع التنبؤ YOLO11 لاحتياجاتك الاستدلالية المختلفة:
- متعدد الاستخدامات: قادرة على إجراء استنتاجات على الصور ومقاطع الفيديو وحتى البث المباشر.
- الأداء: مصممة للمعالجة في الوقت الحقيقي وبسرعة عالية دون التضحية بالدقة.
- سهولة الاستخدام: واجهات بديهية Python و CLI للنشر والاختبار السريع.
- قابل للتخصيص بدرجة كبيرة: إعدادات ومعلمات مختلفة لضبط سلوك الاستدلال في النموذج وفقًا لمتطلباتك الخاصة.
الميزات الرئيسية لوضع التنبؤ
YOLO11صُمِّم وضع التنبؤ ليكون قوياً ومتعدد الاستخدامات، حيث يتميز بما يلي
- توافق مصادر البيانات المتعددة: سواء كانت بياناتك في شكل صور فردية أو مجموعة من الصور أو ملفات فيديو أو تدفقات فيديو في الوقت الفعلي، فإن وضع التنبؤ سيغطيك.
- وضع البث: استخدم ميزة التدفق لتوليد مولد فعال للذاكرة من
Results
الكائنات. قم بتمكين ذلك عن طريق تعيينstream=True
في طريقة استدعاء المتنبئ. - معالجة الدُفعات: القدرة على معالجة عدة صور أو إطارات فيديو في دفعة واحدة، مما يزيد من سرعة وقت الاستدلال.
- سهولة التكامل: تتكامل بسهولة مع خطوط أنابيب البيانات الحالية ومكونات البرامج الأخرى، وذلك بفضل واجهة برمجة التطبيقات المرنة.
Ultralytics YOLO تُرجع النماذج إما قائمة Python من Results
كائنات، أو مولد Python فعال للذاكرة من Results
الكائنات عندما stream=True
إلى النموذج أثناء الاستدلال:
التنبؤ
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # pretrained YOLO11n model
# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"]) # return a list of Results objects
# Process results list
for result in results:
boxes = result.boxes # Boxes object for bounding box outputs
masks = result.masks # Masks object for segmentation masks outputs
keypoints = result.keypoints # Keypoints object for pose outputs
probs = result.probs # Probs object for classification outputs
obb = result.obb # Oriented boxes object for OBB outputs
result.show() # display to screen
result.save(filename="result.jpg") # save to disk
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # pretrained YOLO11n model
# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"], stream=True) # return a generator of Results objects
# Process results generator
for result in results:
boxes = result.boxes # Boxes object for bounding box outputs
masks = result.masks # Masks object for segmentation masks outputs
keypoints = result.keypoints # Keypoints object for pose outputs
probs = result.probs # Probs object for classification outputs
obb = result.obb # Oriented boxes object for OBB outputs
result.show() # display to screen
result.save(filename="result.jpg") # save to disk
مصادر الاستدلال
YOLO11 معالجة أنواع مختلفة من مصادر الإدخال للاستدلال، كما هو موضح في الجدول أدناه. تتضمن المصادر الصور الثابتة وتدفق الفيديو وتنسيقات البيانات المختلفة. يشير الجدول أيضًا إلى ما إذا كان يمكن استخدام كل مصدر في وضع التدفق باستخدام الوسيطة stream=True
✅. يعد وضع البث مفيدًا لمعالجة مقاطع الفيديو أو البث المباشر لأنه ينشئ مولدًا للنتائج بدلاً من تحميل جميع الإطارات في الذاكرة.
نصيحة
الاستخدام stream=True
لمعالجة مقاطع الفيديو الطويلة أو مجموعات البيانات الكبيرة لإدارة الذاكرة بكفاءة. عندما stream=False
، يتم تخزين نتائج جميع الإطارات أو نقاط البيانات في الذاكرة، والتي يمكن أن تتراكم بسرعة وتتسبب في حدوث أخطاء خارج الذاكرة للمدخلات الكبيرة. في المقابل stream=True
يستخدم مولدًا، والذي يحتفظ فقط بنتائج الإطار الحالي أو نقطة البيانات الحالية في الذاكرة، مما يقلل بشكل كبير من استهلاك الذاكرة ويمنع حدوث مشاكل في الذاكرة.
المصدر | مثال على ذلك | النوع | الملاحظات |
---|---|---|---|
الصورة | 'image.jpg' |
str أو Path |
ملف صورة واحدة. |
عنوان URL | 'https://ultralytics.com/images/bus.jpg' |
str |
عنوان URL لصورة. |
لقطة شاشة | 'screen' |
str |
التقط لقطة شاشة. |
PIL | Image.open('image.jpg') |
PIL.Image |
تنسيق HWC مع قنوات RGB. |
OpenCV | cv2.imread('image.jpg') |
np.ndarray |
تنسيق HWC مع قنوات BGR uint8 (0-255) . |
نومي | np.zeros((640,1280,3)) |
np.ndarray |
تنسيق HWC مع قنوات BGR uint8 (0-255) . |
torch | torch.zeros(16,3,320,640) |
torch.Tensor |
تنسيق BCHW مع قنوات RGB float32 (0.0-1.0) . |
CSV | 'sources.csv' |
str أو Path |
ملف CSV يحتوي على مسارات الصور أو مقاطع الفيديو أو الدلائل. |
فيديو ✅ | 'video.mp4' |
str أو Path |
ملف فيديو بتنسيقات مثل MP4 وAVI وغيرها. |
الدليل ✅الدليل | 'path/' |
str أو Path |
المسار إلى دليل يحتوي على صور أو مقاطع فيديو. |
الكرة الأرضية ✅ | 'path/*.jpg' |
str |
نمط Glob لمطابقة ملفات متعددة. استخدم النمط * كحرف بدل. |
يوتيوب ✅ | 'https://youtu.be/LNwODJXcvt4' |
str |
عنوان URL لفيديو يوتيوب. |
تيار ✅ | 'rtsp://example.com/media.mp4' |
str |
عنوان URL لبروتوكولات البث مثل RTSP أو RTMP أو TCP أو عنوان IP. |
متعدد الدفق ✅ | 'list.streams' |
str أو Path |
*.streams ملف نصي يحتوي على عنوان URL دفق واحد لكل صف، أي سيتم تشغيل 8 تدفقات بحجم الدفعة 8. |
كاميرا الويب ✅ | 0 |
int |
فهرس جهاز الكاميرا المتصل لتشغيل الاستدلال عليه. |
فيما يلي أمثلة برمجية لاستخدام كل نوع مصدر:
مصادر التنبؤ
تشغيل الاستدلال على ملف صورة.
قم بتشغيل الاستدلال على محتوى الشاشة الحالي كلقطة شاشة.
تشغيل الاستدلال على صورة أو مقطع فيديو مستضاف عن بُعد عبر عنوان URL.
قم بتشغيل الاستدلال على صورة مفتوحة باستخدام مكتبة التصوير Python (PIL).
قم بتشغيل الاستدلال على صورة مقروءة باستخدام OpenCV.
قم بتشغيل الاستدلال على صورة ممثلة كمصفوفة نومي.
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.
تشغيل الاستدلال على ملف فيديو. باستخدام stream=True
، يمكنك إنشاء مولد كائنات النتائج لتقليل استخدام الذاكرة.
قم بتشغيل الاستدلال على جميع الصور ومقاطع الفيديو في الدليل. لالتقاط الصور ومقاطع الفيديو في الدلائل الفرعية أيضًا، استخدم نمط glob، أي path/to/dir/**/*
.
قم بتشغيل الاستدلال على جميع الصور ومقاطع الفيديو التي تتطابق مع تعبير كروي مع *
الشخصيات.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define a glob search for all JPG files in a directory
source = "path/to/dir/*.jpg"
# OR define a recursive glob search for all JPG files including subdirectories
source = "path/to/dir/**/*.jpg"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
تشغيل الاستدلال على فيديو يوتيوب. باستخدام stream=True
، يمكنك إنشاء مولد من كائنات النتائج لتقليل استخدام الذاكرة لمقاطع الفيديو الطويلة.
استخدم وضع الدفق لتشغيل الاستدلال على تدفقات الفيديو المباشرة باستخدام بروتوكولات RTSP أو RTMP أو TCP أو بروتوكولات عناوين IP. إذا تم توفير دفق واحد، يقوم النموذج بتشغيل الاستدلال باستخدام حجم الدُفعة من 1. بالنسبة للتدفقات المتعددة، فإن .streams
يمكن استخدام الملف النصي لإجراء الاستدلال على دفعات، حيث يتم تحديد حجم الدفعة بعدد التدفقات المقدمة (على سبيل المثال، حجم الدفعة 8 لثمانية تدفقات).
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Single stream with batch-size 1 inference
source = "rtsp://example.com/media.mp4" # RTSP, RTMP, TCP, or IP streaming address
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
بالنسبة لاستخدام الدفق الفردي، يتم تعيين حجم الدُفعة على 1 افتراضيًا، مما يسمح بمعالجة فعالة في الوقت الفعلي لتغذية الفيديو.
للتعامل مع تدفقات فيديو متعددة في نفس الوقت، استخدم .streams
ملف نصي يحتوي على مصادر التدفق. سيقوم النموذج بتشغيل الاستدلال على دفعات حيث يساوي حجم الدفعة عدد التدفقات. يتيح هذا الإعداد معالجة فعّالة لموجزات متعددة بشكل متزامن.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Multiple streams with batched inference (e.g., batch-size 8 for 8 streams)
source = "path/to/list.streams" # *.streams text file with one streaming address per line
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
مثال على ذلك .streams
ملف نصي:
rtsp://example.com/media1.mp4
rtsp://example.com/media2.mp4
rtmp://example2.com/live
tcp://192.168.1.100:554
...
يمثّل كل صف في الملف مصدر دفق، مما يسمح لك بمراقبة وإجراء الاستدلال على عدة تدفقات فيديو في آنٍ واحد.
حجج الاستدلال
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 ). يسمح للمستخدمين بالاختيار بين CPU ، أو جهاز GPU معين، أو أجهزة حوسبة أخرى لتنفيذ النموذج. |
batch |
int |
1 |
يحدد حجم الدُفعة للاستدلال (يعمل فقط عندما يكون المصدر هو دليل أو ملف فيديو أو .txt الملف). يمكن أن يوفر حجم الدفعة الأكبر إنتاجية أعلى، مما يقلل من إجمالي الوقت اللازم للاستدلال. |
max_det |
int |
300 |
الحد الأقصى لعدد الاكتشافات المسموح به لكل صورة. يحد من العدد الإجمالي للأجسام التي يمكن للنموذج اكتشافها في استدلال واحد، مما يمنع المخرجات الزائدة في المشاهد الكثيفة. |
vid_stride |
int |
1 |
خطوة الإطار لمدخلات الفيديو. يسمح بتخطي الإطارات في مقاطع الفيديو لتسريع المعالجة على حساب الدقة الزمنية. القيمة 1 تعالج كل إطار، والقيم الأعلى تتخطى الإطارات. |
stream_buffer |
bool |
False |
يحدد ما إذا كان سيتم وضع الإطارات الواردة في قائمة الانتظار لبث الفيديو. في حالة False ، يتم إسقاط الإطارات القديمة لاستيعاب الإطارات الجديدة (محسّن لتطبيقات الوقت الحقيقي). إذا كان 'صحيح'، يتم وضع الإطارات الجديدة في قائمة انتظار في مخزن مؤقت، مما يضمن عدم تخطي أي إطارات، ولكن سيتسبب في حدوث تأخير في التأخير إذا كان معدل الإطارات في الثانية في الاستدلال أقل من معدل الإطارات في الثانية في الدفق. |
visualize |
bool |
False |
يُفعّل تصور ميزات النموذج أثناء الاستدلال، مما يوفر نظرة ثاقبة لما "يراه" النموذج. مفيد لتصحيح الأخطاء وتفسير النموذج. |
augment |
bool |
False |
تمكين زيادة وقت الاختبار (TTA) للتنبؤات، مما قد يحسن من قوة الكشف على حساب سرعة الاستدلال. |
agnostic_nms |
bool |
False |
تمكين الكبت غير الفئوي غير الفئوي (NMS)، الذي يدمج المربعات المتداخلة من فئات مختلفة. مفيد في سيناريوهات الكشف متعدد الفئات حيث يكون تداخل الفئات شائعًا. |
classes |
list[int] |
None |
تصفية التنبؤات إلى مجموعة من معرّفات الفئات. سيتم إرجاع الاكتشافات التي تنتمي إلى الفئات المحددة فقط. مفيد للتركيز على الكائنات ذات الصلة في مهام الكشف متعدد الفئات. |
retina_masks |
bool |
False |
إرجاع أقنعة تجزئة عالية الدقة. الأقنعة التي تم إرجاعها (masks.data ) ستطابق حجم الصورة الأصلية إذا تم تمكينها. أما إذا تم تعطيلها، فسيكون لها حجم الصورة المستخدم أثناء الاستدلال. |
embed |
list[int] |
None |
يحدد الطبقات التي يتم استخراج متجهات الميزات أو التضمينات منها. مفيد للمهام النهائية مثل التجميع أو البحث عن التشابه. |
project |
str |
None |
اسم دليل المشروع حيث يتم حفظ مخرجات التنبؤ في حالة save ممكّنة. |
name |
str |
None |
اسم عملية تشغيل التنبؤ. يُستخدم لإنشاء دليل فرعي داخل مجلد المشروع، حيث يتم تخزين مخرجات التنبؤ في حالة save ممكّنة. |
حجج التصور:
الجدال | النوع | افتراضي | الوصف |
---|---|---|---|
show |
bool |
False |
إذا كان True يعرض الصور أو مقاطع الفيديو المشروحة في نافذة. مفيد للتعليقات المرئية الفورية أثناء التطوير أو الاختبار. |
save |
bool |
False أو True |
تمكين حفظ الصور أو مقاطع الفيديو المشروحة في ملف. مفيد للتوثيق أو لمزيد من التحليل أو مشاركة النتائج. الافتراضي إلى صواب عند استخدام CLI وخطأ عند استخدامه في Python. |
save_frames |
bool |
False |
عند معالجة مقاطع الفيديو، يحفظ الإطارات الفردية كصور. مفيد لاستخراج إطارات محددة أو للتحليل التفصيلي إطاراً بإطار. |
save_txt |
bool |
False |
يحفظ نتائج الكشف في ملف نصي، باتباع التنسيق [class] [x_center] [y_center] [width] [height] [confidence] . مفيد للتكامل مع أدوات التحليل الأخرى. |
save_conf |
bool |
False |
يتضمن درجات الثقة في الملفات النصية المحفوظة. يعزز التفاصيل المتاحة للمعالجة اللاحقة والتحليل. |
save_crop |
bool |
False |
يحفظ الصور التي تم اقتصاصها من عمليات الكشف. مفيد لتكبير مجموعة البيانات أو تحليلها أو إنشاء مجموعات بيانات مركزة لأجسام محددة. |
show_labels |
bool |
True |
يعرض تسميات لكل اكتشاف في الإخراج المرئي. يوفر فهماً فورياً للأجسام المكتشفة. |
show_conf |
bool |
True |
يعرض درجة الثقة لكل اكتشاف إلى جانب التسمية. يعطي فكرة عن مدى يقين النموذج لكل اكتشاف. |
show_boxes |
bool |
True |
يرسم المربعات المحيطة بالأجسام المكتشفة. ضروري للتعرف البصري على الأجسام وموقعها في الصور أو إطارات الفيديو. |
line_width |
None أو int |
None |
يحدد عرض خط المربعات المحدودة. إذا كان None ، يتم ضبط عرض الخط تلقائيًا بناءً على حجم الصورة. يوفر تخصيصاً مرئياً للوضوح. |
تنسيقات الصور والفيديو
YOLO11 يدعم العديد من تنسيقات الصور والفيديو، كما هو محدد في ultralytics/data/utils .py. انظر الجداول أدناه للاطلاع على اللواحق الصالحة وأمثلة على الأوامر المتوقعة.
الصور
يحتوي الجدول أدناه على تنسيقات صور Ultralytics صالحة.
ملاحظة
يتم دعم صور HEIC للاستدلال فقط، وليس للتدريب.
لاحقات الصور | مثال على أمر التنبؤ | المرجع |
---|---|---|
.bmp |
yolo predict source=image.bmp |
Microsoft تنسيق ملف BMP |
.dng |
yolo predict source=image.dng |
Adobe DNG |
.jpeg |
yolo predict source=image.jpeg |
JPEG |
.jpg |
yolo predict source=image.jpg |
JPEG |
.mpo |
yolo predict source=image.mpo |
كائن متعدد الصور |
.png |
yolo predict source=image.png |
رسومات الشبكة المحمولة |
.tif |
yolo predict source=image.tif |
تنسيق ملف صورة الوسم |
.tiff |
yolo predict source=image.tiff |
تنسيق ملف صورة الوسم |
.webp |
yolo predict source=image.webp |
ويبب |
.pfm |
yolo predict source=image.pfm |
الخريطة العائمة المحمولة |
.HEIC |
yolo predict source=image.HEIC |
تنسيق الصور عالي الكفاءة |
مقاطع الفيديو
يحتوي الجدول أدناه على تنسيقات فيديو Ultralytics صالحة.
لاحقات الفيديو | مثال على أمر التنبؤ | المرجع |
---|---|---|
.asf |
yolo predict source=video.asf |
تنسيق الأنظمة المتقدمة |
.avi |
yolo predict source=video.avi |
تشفير الصوت والفيديو |
.gif |
yolo predict source=video.gif |
تنسيق تبادل الرسومات |
.m4v |
yolo predict source=video.m4v |
MPEG-4 الجزء 14 |
.mkv |
yolo predict source=video.mkv |
ماتروسكا |
.mov |
yolo predict source=video.mov |
تنسيق ملف QuickTime |
.mp4 |
yolo predict source=video.mp4 |
MPEG-4 الجزء 14 - ويكيبيديا |
.mpeg |
yolo predict source=video.mpeg |
MPEG-1 الجزء 2 |
.mpg |
yolo predict source=video.mpg |
MPEG-1 الجزء 2 |
.ts |
yolo predict source=video.ts |
تدفق النقل MPEG MPEG |
.wmv |
yolo predict source=video.wmv |
فيديو ويندوز ميديا |
.webm |
yolo predict source=video.webm |
مشروع WebM |
العمل بالنتائج
الكل Ultralytics predict()
ستُعيد المكالمات قائمة ب Results
الأشياء:
النتائج
Results
الكائنات لها السمات التالية:
السمة | النوع | الوصف |
---|---|---|
orig_img |
numpy.ndarray |
الصورة الأصلية كمصفوفة مرقمة. |
orig_shape |
tuple |
شكل الصورة الأصلية بتنسيق (الارتفاع، العرض). |
boxes |
Boxes, optional |
كائن مربعات يحتوي على المربعات المحددة للكشف. |
masks |
Masks, optional |
كائن أقنعة يحتوي على أقنعة الكشف. |
probs |
Probs, optional |
كائن Probs يحتوي على احتمالات كل فئة لمهمة التصنيف. |
keypoints |
Keypoints, optional |
كائن نقاط رئيسية يحتوي على نقاط رئيسية مكتشفة لكل كائن. |
obb |
OBB, optional |
كائن OBB يحتوي على مربعات محيطية موجهة. |
speed |
dict |
قاموس سرعات ما قبل المعالجة والاستدلال وما بعد المعالجة بالمللي ثانية لكل صورة. |
names |
dict |
قاموس أسماء الفئات. |
path |
str |
المسار إلى ملف الصورة. |
Results
الكائنات لها الطرق التالية:
الطريقة | نوع الإرجاع | الوصف |
---|---|---|
update() |
None |
قم بتحديث المربعات، والأقنعة، والسمات المؤثرة في كائن النتائج. |
cpu() |
Results |
إرجاع نسخة من كائن النتائج مع جميع الموترين على ذاكرة CPU . |
numpy() |
Results |
قم بإرجاع نسخة من كائن النتائج مع جميع الموترين كمصفوفات numpy. |
cuda() |
Results |
إرجاع نسخة من كائن النتائج مع جميع الموترين على ذاكرة GPU . |
to() |
Results |
إرجاع نسخة من كائن النتائج مع الموتر على الجهاز المحدد ونوع d. |
new() |
Results |
إرجاع كائن نتائج جديد بنفس الصورة والمسار والأسماء. |
plot() |
numpy.ndarray |
يرسم نتائج الكشف. إرجاع مصفوفة مرقمة للصورة المشروحة. |
show() |
None |
عرض النتائج المشروحة على الشاشة. |
save() |
None |
حفظ النتائج المشروحة في ملف. |
verbose() |
str |
إرجاع سلسلة السجل لكل مهمة. |
save_txt() |
None |
احفظ التوقعات في ملف txt. |
save_crop() |
None |
حفظ التوقعات التي تم اقتصاصها في save_dir/cls/file_name.jpg . |
tojson() |
str |
تحويل الكائن إلى تنسيق JSON. |
لمزيد من التفاصيل انظر Results
وثائق الفصل.
الصناديق
Boxes
لفهرسة المربعات المحدودة ومعالجتها وتحويلها إلى تنسيقات مختلفة.
الصناديق
فيما يلي جدول لـ Boxes
طرق وخصائص الفئة، بما في ذلك اسمها ونوعها ووصفها:
الاسم | النوع | الوصف |
---|---|---|
cpu() |
الطريقة | انقل الكائن إلى ذاكرة CPU . |
numpy() |
الطريقة | حوِّل الكائن إلى مصفوفة numpy. |
cuda() |
الطريقة | انقل الكائن إلى ذاكرة CUDA . |
to() |
الطريقة | انقل الكائن إلى الجهاز المحدد. |
xyxy |
الملكية (torch.Tensor ) |
أعد المربعات بتنسيق xyxy. |
conf |
الملكية (torch.Tensor ) |
إرجاع قيم الثقة للمربعات. |
cls |
الملكية (torch.Tensor ) |
إرجاع قيم فئات المربعات. |
id |
الملكية (torch.Tensor ) |
إرجاع معرفات المسارات الخاصة بالصناديق (إن وجدت). |
xywh |
الملكية (torch.Tensor ) |
أعد المربعات بتنسيق xywh. |
xyxyn |
الملكية (torch.Tensor ) |
قم بإرجاع المربعات بتنسيق xyxy بتنسيق xyxy مع ضبطها حسب حجم الصورة الأصلية. |
xywhn |
الملكية (torch.Tensor ) |
قم بإرجاع المربعات بتنسيق xywh بتنسيق xywh مع ضبطها حسب حجم الصورة الأصلية. |
لمزيد من التفاصيل انظر Boxes
وثائق الفصل.
الأقنعة
Masks
يمكن استخدام الكائن لفهرسة الأقنعة ومعالجتها وتحويلها إلى مقاطع.
الأقنعة
فيما يلي جدول لـ Masks
طرق وخصائص الفئة، بما في ذلك اسمها ونوعها ووصفها:
الاسم | النوع | الوصف |
---|---|---|
cpu() |
الطريقة | إرجاع الأقنعة tensor على ذاكرة CPU . |
numpy() |
الطريقة | إرجاع الأقنعة tensor كمصفوفة numpy. |
cuda() |
الطريقة | إرجاع الأقنعة tensor على ذاكرة GPU . |
to() |
الطريقة | إرجاع الأقنعة tensor مع الجهاز المحدد ونوع d. |
xyn |
الملكية (torch.Tensor ) |
قائمة بالمقاطع المعيارية الممثلة في صورة موتر. |
xy |
الملكية (torch.Tensor ) |
قائمة من المقاطع بإحداثيات البكسل ممثلة في صورة موتر. |
لمزيد من التفاصيل انظر Masks
وثائق الفصل.
النقاط الرئيسية
Keypoints
يمكن استخدام الكائن لفهرسة الإحداثيات ومعالجتها وتطبيعها.
النقاط الرئيسية
فيما يلي جدول لـ Keypoints
طرق وخصائص الفئة، بما في ذلك اسمها ونوعها ووصفها:
الاسم | النوع | الوصف |
---|---|---|
cpu() |
الطريقة | إرجاع النقاط الرئيسية tensor على ذاكرة CPU . |
numpy() |
الطريقة | إرجاع نقاط المفتاح tensor كمصفوفة numpy. |
cuda() |
الطريقة | إرجاع النقاط الرئيسية tensor على ذاكرة GPU . |
to() |
الطريقة | إرجاع نقاط المفتاح tensor مع الجهاز المحدد ونوع d. |
xyn |
الملكية (torch.Tensor ) |
قائمة بالنقاط الأساسية المُطَبَّعة الممثلة في صورة موتر. |
xy |
الملكية (torch.Tensor ) |
قائمة بالنقاط الرئيسية في إحداثيات البكسل ممثلة في صورة موتر. |
conf |
الملكية (torch.Tensor ) |
إرجاع قيم الثقة لنقاط المفتاح إذا كانت متوفرة، وإلا فلا يوجد. |
لمزيد من التفاصيل انظر Keypoints
وثائق الفصل.
البروبس
Probs
يمكن استخدام كائن الفهرس، والحصول على top1
و top5
مؤشرات ودرجات التصنيف.
البروبس
فيما يلي جدول يلخص الطرق والخصائص الخاصة ب Probs
الفصل:
الاسم | النوع | الوصف |
---|---|---|
cpu() |
الطريقة | إرجاع نسخة من probs tensor على الذاكرة CPU . |
numpy() |
الطريقة | إرجاع نسخة من probs tensor كمصفوفة numpy. |
cuda() |
الطريقة | إرجاع نسخة من probs tensor على الذاكرة GPU . |
to() |
الطريقة | إرجاع نسخة من probs tensor مع الجهاز والنوع d المحددين. |
top1 |
الملكية (int ) |
مؤشر الفئة الأولى 1 الأعلى 1. |
top5 |
الملكية (list[int] ) |
مؤشرات أفضل 5 فئات. |
top1conf |
الملكية (torch.Tensor ) |
الثقة من الدرجة الأولى 1. |
top5conf |
الملكية (torch.Tensor ) |
أسرار أفضل 5 فئات. |
لمزيد من التفاصيل انظر Probs
وثائق الفصل.
OBB
OBB
لفهرسة ومعالجة وتحويل المربعات المحدودة الموجهة إلى تنسيقات مختلفة.
OBB
فيما يلي جدول لـ OBB
طرق وخصائص الفئة، بما في ذلك اسمها ونوعها ووصفها:
الاسم | النوع | الوصف |
---|---|---|
cpu() |
الطريقة | انقل الكائن إلى ذاكرة CPU . |
numpy() |
الطريقة | حوِّل الكائن إلى مصفوفة numpy. |
cuda() |
الطريقة | انقل الكائن إلى ذاكرة CUDA . |
to() |
الطريقة | انقل الكائن إلى الجهاز المحدد. |
conf |
الملكية (torch.Tensor ) |
إرجاع قيم الثقة للمربعات. |
cls |
الملكية (torch.Tensor ) |
إرجاع قيم فئات المربعات. |
id |
الملكية (torch.Tensor ) |
إرجاع معرفات المسارات الخاصة بالصناديق (إن وجدت). |
xyxy |
الملكية (torch.Tensor ) |
إرجاع المربعات الأفقية بتنسيق xyxy. |
xywhr |
الملكية (torch.Tensor ) |
إرجاع المربعات المدورة بتنسيق xywhr. |
xyxyxyxy |
الملكية (torch.Tensor ) |
إرجاع المربعات المدورة بتنسيق xyxyxyxy. |
xyxyxyxyn |
الملكية (torch.Tensor ) |
قم بإرجاع المربعات المدورة بتنسيق xyxyxyxy بتنسيق xyxyxy طبيعي حسب حجم الصورة. |
لمزيد من التفاصيل انظر OBB
وثائق الفصل.
تخطيط النتائج
إن plot()
طريقة في Results
يسهّل تصوّر التنبؤات من خلال تراكب الكائنات المكتشفة (مثل المربعات المحدودة والأقنعة والنقاط الرئيسية والاحتمالات) على الصورة الأصلية. تقوم هذه الطريقة بإرجاع الصورة المشروحة كمصفوفة NumPy، مما يسمح بعرضها أو حفظها بسهولة.
التخطيط
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on 'bus.jpg'
results = model(["bus.jpg", "zidane.jpg"]) # results list
# Visualize the results
for i, r in enumerate(results):
# Plot results image
im_bgr = r.plot() # BGR-order numpy array
im_rgb = Image.fromarray(im_bgr[..., ::-1]) # RGB-order PIL image
# Show results to screen (in supported environments)
r.show()
# Save results to disk
r.save(filename=f"results{i}.jpg")
plot()
معلمات الطريقة
إن plot()
وسيطات مختلفة لتخصيص الإخراج:
الجدال | النوع | الوصف | افتراضي |
---|---|---|---|
conf |
bool |
تضمين درجات الثقة في الكشف. | True |
line_width |
float |
عرض خط المربعات المحدودة. يتناسب مع حجم الصورة إذا كان None . |
None |
font_size |
float |
حجم خط النص. يتناسب مع حجم الصورة إذا None . |
None |
font |
str |
اسم الخط للتعليقات التوضيحية النصية. | 'Arial.ttf' |
pil |
bool |
إرجاع الصورة ككائن صورة PIL. | False |
img |
numpy.ndarray |
صورة بديلة للتخطيط. يستخدم الصورة الأصلية إذا None . |
None |
im_gpu |
torch.Tensor |
GPU-accelerated image for faster mask plotting. الشكل: (1، 3، 640، 640، 640). | None |
kpt_radius |
int |
نصف القطر للنقاط الرئيسية المرسومة. | 5 |
kpt_line |
bool |
ربط النقاط الرئيسية بخطوط. | True |
labels |
bool |
تضمين تسميات الفئات في التعليقات التوضيحية. | True |
boxes |
bool |
تراكب المربعات المحدودة على الصورة. | True |
masks |
bool |
تراكب الأقنعة على الصورة. | True |
probs |
bool |
تضمين احتمالات التصنيف. | True |
show |
bool |
اعرض الصورة المشروحة مباشرةً باستخدام عارض الصور الافتراضي. | False |
save |
bool |
احفظ الصورة المشروحة في ملف محدد بواسطة filename . |
False |
filename |
str |
مسار الملف واسمه لحفظ الصورة المشروحة إذا كان save هو True . |
None |
color_mode |
str |
حدد وضع اللون، على سبيل المثال، "مثيل" أو "فئة". | 'class' |
الاستدلال الآمن الخيطي
يعد ضمان سلامة الخيط أثناء الاستدلال أمرًا بالغ الأهمية عند تشغيل عدة نماذج YOLO بالتوازي عبر خيوط مختلفة. يضمن الاستدلال الآمن للخيوط أن تكون تنبؤات كل خيط معزولة ولا تتداخل مع بعضها البعض، مما يؤدي إلى تجنب حالات السباق وضمان مخرجات متسقة وموثوقة.
عند استخدام النماذج YOLO في تطبيق متعدد الخيوط، من المهم إنشاء كائنات نماذج منفصلة لكل خيط أو استخدام التخزين المحلي للخيط لمنع التعارضات:
الاستدلال الآمن الخيطي
قم بتثبيت نموذج واحد داخل كل مؤشر ترابط للاستدلال الآمن من مؤشرات الترابط:
from threading import Thread
from ultralytics import YOLO
def thread_safe_predict(model, image_path):
"""Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
model = YOLO(model)
results = model.predict(image_path)
# Process results
# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image2.jpg")).start()
لإلقاء نظرة متعمقة على الاستدلال الآمن الخيطي باستخدام نماذج YOLO وإرشادات خطوة بخطوة، يرجى الرجوع إلى دليل الاستدلال الآمن الخيطيYOLO . سيزودك هذا الدليل بجميع المعلومات اللازمة لتجنب المزالق الشائعة وضمان سير الاستدلال متعدد الخيوط بسلاسة.
مصدر البث for
-الحلقة
إليك برنامج نصي Python باستخدام OpenCV (cv2
) و YOLO لتشغيل الاستدلال على إطارات الفيديو. يفترض هذا البرنامج النصي أنك قمت بالفعل بتثبيت الحزم الضرورية (opencv-python
و ultralytics
).
دفق للحلقة للحلقة
import cv2
from ultralytics import YOLO
# Load the YOLO model
model = YOLO("yolo11n.pt")
# Open the video file
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)
# Loop through the video frames
while cap.isOpened():
# Read a frame from the video
success, frame = cap.read()
if success:
# Run YOLO inference on the frame
results = model(frame)
# Visualize the results on the frame
annotated_frame = results[0].plot()
# Display the annotated frame
cv2.imshow("YOLO Inference", annotated_frame)
# Break the loop if 'q' is pressed
if cv2.waitKey(1) & 0xFF == ord("q"):
break
else:
# Break the loop if the end of the video is reached
break
# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()
سيقوم هذا النص البرمجي بتشغيل تنبؤات على كل إطار من الفيديو، وتصور النتائج، وعرضها في نافذة. يمكن الخروج من الحلقة بالضغط على 'q'.
الأسئلة الشائعة
ما هو Ultralytics YOLO ووضع التنبؤ الخاص به للاستدلال في الوقت الحقيقي؟
Ultralytics YOLO هو نموذج متطور لاكتشاف الأجسام وتجزئتها وتصنيفها في الوقت الفعلي. يسمح وضع التنبؤ الخاص به للمستخدمين بإجراء استنتاج عالي السرعة على مصادر بيانات مختلفة مثل الصور ومقاطع الفيديو والبث المباشر. تم تصميمه من أجل الأداء وتعدد الاستخدامات، كما أنه يوفر أيضًا أوضاع معالجة الدُفعات والبث المباشر. لمزيد من التفاصيل حول ميزاته، راجع وضع التنبؤUltralytics YOLO .
كيف يمكنني تشغيل الاستدلال باستخدام Ultralytics YOLO على مصادر بيانات مختلفة؟
Ultralytics YOLO معالجة مجموعة كبيرة من مصادر البيانات، بما في ذلك الصور الفردية، ومقاطع الفيديو، والدلائل، وعناوين URL، والتدفقات. يمكنك تحديد مصدر البيانات في model.predict()
الاتصال. على سبيل المثال، استخدم 'image.jpg'
لصورة محلية أو 'https://ultralytics.com/images/bus.jpg'
لعنوان URL. راجع الأمثلة التفصيلية لمختلف مصادر الاستدلال في الوثائق.
كيف يمكنني تحسين سرعة الاستدلال YOLO واستخدام الذاكرة؟
لتحسين سرعة الاستدلال وإدارة الذاكرة بكفاءة، يمكنك استخدام وضع التدفق عن طريق تعيين stream=True
في طريقة استدعاء المتنبئ. يُنشئ وضع التدفق مولدًا فعالاً للذاكرة لـ Results
بدلاً من تحميل جميع الإطارات في الذاكرة. لمعالجة مقاطع الفيديو الطويلة أو مجموعات البيانات الكبيرة، يكون وضع التدفق مفيدًا بشكل خاص. تعرف على المزيد حول وضع البث.
ما هي الحجج الاستدلالية التي يدعمها Ultralytics YOLO ؟
إن model.predict()
في YOLO يدعم وسائط مختلفة مثل conf
, iou
, imgsz
, device
والمزيد. تسمح لك هذه الوسيطات بتخصيص عملية الاستدلال، وتعيين معلمات مثل عتبات الثقة، وحجم الصورة، والجهاز المستخدم في الحساب. يمكن العثور على وصف تفصيلي لهذه الوسيطات في حجج الاستدلال القسم.
كيف يمكنني تصور وحفظ نتائج التنبؤات YOLO ؟
بعد تشغيل الاستدلال باستخدام YOLO ، فإن Results
على طرق لعرض الصور المشروحة وحفظها. يمكنك استخدام أساليب مثل result.show()
و result.save(filename="result.jpg")
لتصور النتائج وحفظها. للاطلاع على قائمة شاملة لهذه الطرق، ارجع إلى العمل بالنتائج القسم.