تنبؤ النموذج باستخدام Ultralytics YOLO
مقدمة
في عالم تعلم الآلة والرؤية الحاسوبية، تسمى عملية فهم البيانات المرئية غالبًا بالاستدلال أو التنبؤ. يوفر Ultralytics YOLO26 ميزة قوية تُعرف باسم وضع التنبؤ (predict mode)، وهي مصممة خصيصًا للاستدلال عالي الأداء وفائق السرعة عبر مجموعة واسعة من مصادر البيانات.
Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀
التطبيقات الواقعية
| التصنيع | الرياضة | السلامة |
|---|---|---|
![]() | ![]() | ![]() |
| كشف قطع غيار المركبات | كشف لاعبي كرة القدم | كشف سقوط الأشخاص |
لماذا تستخدم Ultralytics YOLO للاستدلال؟
إليك سبب وجوب النظر في وضع التنبؤ الخاص بـ YOLO26 لاحتياجات الاستدلال المتنوعة الخاصة بك:
- تعدد الاستخدامات: القدرة على تشغيل الاستدلال على الصور ومقاطع الفيديو وحتى البث المباشر.
- الأداء: هندسة معمارية مصممة للمعالجة الفورية عالية السرعة دون التضحية بـ الدقة.
- سهولة الاستخدام: واجهات Python و CLI بديهية للنشر والاختبار السريع.
- قابلية تخصيص عالية: إعدادات ومعاملات متنوعة لضبط سلوك استدلال النموذج وفقًا لمتطلباتك المحددة.
- جاهز للإنتاج: نشر النماذج كنقاط نهاية API على منصة Ultralytics مع ميزات القياس التلقائي والمراقبة، أو تشغيل الاستدلال محليًا.
الميزات الرئيسية لوضع التنبؤ
تم تصميم وضع التنبؤ في YOLO26 ليكون قويًا ومتعدد الاستخدامات، ويتميز بـ:
- توافق متعدد مع مصادر البيانات: سواء كانت بياناتك على شكل صور فردية، أو مجموعة من الصور، أو ملفات فيديو، أو تدفقات فيديو في الوقت الفعلي، فإن وضع التنبؤ يوفر لك التغطية الكاملة.
- وضع البث (Streaming Mode): استخدم ميزة البث لإنشاء مولد (generator) فعال في استخدام الذاكرة لكائنات
Results. قم بتمكين هذا عن طريق ضبطstream=Trueفي طريقة استدعاء أداة التنبؤ. - معالجة الدفعات (Batch Processing): معالجة صور متعددة أو إطارات فيديو في دفعة واحدة، مما يقلل بشكل أكبر من إجمالي وقت الاستدلال.
- سهولة التكامل: تكامل بسهولة مع خطوط أنابيب البيانات الحالية ومكونات البرامج الأخرى، بفضل واجهة API المرنة الخاصة به.
تُرجع نماذج Ultralytics YOLO إما قائمة Python من كائنات Results أو مولدًا فعالاً للذاكرة لكائنات Results عند تمرير stream=True إلى النموذج أثناء الاستدلال:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # pretrained YOLO26n 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مصادر الاستدلال
يمكن لـ YOLO26 معالجة أنواع مختلفة من مصادر الإدخال للاستدلال، كما هو موضح في الجدول أدناه. تشمل المصادر الصور الثابتة، وتدفقات الفيديو، وتنسيقات البيانات المختلفة. يشير الجدول أيضًا إلى ما إذا كان يمكن استخدام كل مصدر في وضع البث باستخدام الوسيط stream=True ✅. يعتبر وضع البث مفيدًا لمعالجة مقاطع الفيديو أو البث المباشر لأنه ينشئ مولدًا للنتائج بدلاً من تحميل جميع الإطارات في الذاكرة.
استخدم stream=True لمعالجة مقاطع الفيديو الطويلة أو مجموعات البيانات الكبيرة لإدارة الذاكرة بكفاءة. عند ضبط stream=False، يتم تخزين نتائج جميع الإطارات أو نقاط البيانات في الذاكرة، وهو ما يمكن أن يتراكم بسرعة ويؤدي إلى أخطاء نفاد الذاكرة للمدخلات الكبيرة. في المقابل، يستخدم stream=True مولدًا يحتفظ فقط بنتائج الإطار أو نقطة البيانات الحالية في الذاكرة، مما يقلل بشكل كبير من استهلاك الذاكرة ويمنع مشكلات نفاد الذاكرة.
| المصدر | مثال | النوع | ملاحظات |
|---|---|---|---|
| image | 'image.jpg' | str أو Path | ملف صورة مفرد. |
| URL | 'https://ultralytics.com/images/bus.jpg' | str | رابط URL لصورة. |
| screenshot | 'screen' | str | التقاط صورة للشاشة. |
| PIL | Image.open('image.jpg') | PIL.Image | تنسيق HWC مع قنوات RGB. |
| OpenCV | cv2.imread('image.jpg') | np.ndarray | تنسيق HWC مع قنوات BGR uint8 (0-255). |
| NumPy | np.zeros((640,1280,3)) | np.ndarray | تنسيق HWC مع قنوات BGR uint8 (0-255). |
| torch | torch.zeros(16,3,320,640) | torch.Tensor | تنسيق BCHW مع قنوات RGB float32 (0.0-1.0). |
| CSV | 'sources.csv' | str أو Path | ملف CSV يحتوي على مسارات للصور أو مقاطع الفيديو أو المجلدات. |
| video ✅ | 'video.mp4' | str أو Path | ملف فيديو بتنسيقات مثل MP4، AVI، إلخ. |
| directory ✅ | 'path/' | str أو Path | مسار لمجلد يحتوي على صور أو مقاطع فيديو. |
| glob ✅ | 'path/*.jpg' | str | نمط Glob لمطابقة ملفات متعددة. استخدم الحرف * كبديل. |
| YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' | str | رابط URL لفيديو يوتيوب. |
| stream ✅ | 'rtsp://example.com/media.mp4' | str | رابط URL لبروتوكولات البث مثل RTSP أو RTMP أو TCP أو عنوان IP. |
| multi-stream ✅ | 'list.streams' | str أو Path | ملف نصي *.streams يحتوي على رابط بث واحد لكل سطر، أي أن 8 تدفقات ستعمل بحجم دفعة 8. |
| webcam ✅ | 0 | int | مؤشر جهاز الكاميرا المتصل لتشغيل الاستدلال عليه. |
فيما يلي أمثلة برمجية لاستخدام كل نوع مصدر:
تشغيل الاستدلال على ملف صورة.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Define path to the image file
source = "path/to/image.jpg"
# Run inference on the source
results = model(source) # list of Results objectsوسائط الاستنتاج
model.predict() تقبل وسائط متعددة يمكن تمريرها في وقت الاستنتاج لتجاوز الإعدادات الافتراضية:
الشكل الثابت مقابل المستطيل الأدنى (rect)
افتراضياً، يستخدم التنبؤ rect=True، الذي يُمكّن حشو المستطيل الأدنى عند الإمكان. يتم تغيير حجم الصورة لتناسب imgsz ويتم حشوها فقط لأقرب مضاعف للخطوة (stride)، لذا قد يكون الموتر النهائي أصغر من imgsz. يتم استخدام حشو المستطيل الأدنى فقط عندما تكون جميع الصور في الدفعة بنفس الشكل ويدعمها الخلفية (PyTorch .pt أو ONNX / Triton ديناميكي). بخلاف ذلك، يتم حشو الصور إلى هدف imgsz الكامل.
استخدم rect=False للحشو دائماً إلى هدف imgsz الكامل. يُوصى بهذا عندما تحتاج إلى حجم إدخال ثابت لمطابقة النماذج المُصدرة (ONNX، TensorRT، إلخ).
عدد صحيح مقابل صف imgsz
- يصبح العدد الصحيح
imgsz=640هدفاً مربعاً(640, 640)بعد تقريب الخطوة. - يحدد الصف
imgsz=(384, 672)هدفاً مستطيلاً. معrect=Trueوauto=True، يمكن أن يكون الموتر الفعلي أصغر من هذا الهدف.
التدريب مقابل التنبؤ/التصدير
يقبل التدريب عدداً صحيحاً واحداً فقط كـ imgsz (يتم تحويل قائمة [h, w] إلى القيمة الأكبر). يقبل التنبؤ والتصدير إما عدداً صحيحاً أو صف (height, width).
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.25)وسائط الاستدلال:
| المعامل | النوع | الافتراضي | الوصف |
|---|---|---|---|
source | str أو int أو None | None | يحدد مصدر البيانات للاستدلال. يمكن أن يكون مسار صورة، أو ملف فيديو، أو دليلاً، أو عنوان URL، أو معرف جهاز لخلاصات البث المباشر. إذا تم حذفه، يتم تسجيل تحذير ويعود النموذج إلى أصول العرض المدمجة (ultralytics/assets، أو عنوان URL تجريبي لـ OBB). يدعم مجموعة واسعة من التنسيقات والمصادر، مما يتيح تطبيقاً مرناً عبر أنواع مختلفة من المدخلات. |
conf | float | 0.25 | يحدد حد الثقة الأدنى للكشف. سيتم تجاهل الكائنات التي تم اكتشافها بثقة أقل من هذا الحد. يمكن أن يساعد ضبط هذه القيمة في تقليل الإيجابيات الكاذبة. |
iou | float | 0.7 | حد التقاطع فوق الاتحاد (IoU) لكبح التغير غير الأقصى (NMS). تؤدي القيم المنخفضة إلى عدد أقل من الكشوفات عن طريق القضاء على الصناديق المتداخلة، وهو مفيد لتقليل التكرارات. |
imgsz | int أو tuple | 640 | Letterbox target. An integer gives a square N×N; a tuple gives (height, width). With rect=True, the actual tensor may be smaller than this target due to minimum-rectangle padding. Use rect=False for a fixed size. See Fixed shape vs minimum rectangle. |
rect | bool | True | إذا كانت True، استخدم حشوة المستطيل الأدنى عندما يكون ذلك ممكناً (دفعة بنفس الشكل وواجهة خلفية مدعومة). إذا كانت False، قم دائماً بالحشو إلى imgsz الكامل. انظر الشكل الثابت مقابل المستطيل الأدنى. |
half | bool | False | يُفعل الاستدلال بنصف الدقة (FP16)، مما يمكن أن يسرع استدلال النموذج على وحدات GPU المدعومة مع تأثير ضئيل على الدقة. |
device | str | None | يحدد الجهاز للاستدلال (مثلاً cpu، cuda:0، 0، npu أو npu:0). يسمح للمستخدمين بالاختيار بين CPU، أو GPU محدد، أو Huawei Ascend NPU، أو أجهزة حوسبة أخرى لتنفيذ النموذج. |
batch | int | 1 | يحدد حجم الدفعة للاستدلال (يعمل فقط عندما يكون المصدر دليلاً، أو ملف فيديو، أو ملف .txt). يمكن أن يوفر حجم الدفعة الأكبر إنتاجية أعلى، مما يقلل الوقت الإجمالي المطلوب للاستدلال. |
max_det | int | 300 | الحد الأقصى لعدد الاكتشافات المسموح به لكل صورة. يحد من العدد الإجمالي للكائنات التي يمكن للنموذج اكتشافها في استنتاج واحد، مما يمنع المخرجات المفرطة في المشاهد المزدحمة. |
vid_stride | int | 1 | خطوة الإطار لمدخلات الفيديو. تسمح بتخطي الإطارات في مقاطع الفيديو لتسريع المعالجة على حساب الدقة الزمنية. القيمة 1 تعالج كل إطار، والقيم الأعلى تتخطى الإطارات. |
stream_buffer | bool | False | يحدد ما إذا كان يجب وضع الإطارات الواردة في طابور لتدفقات الفيديو. إذا كانت القيمة False، يتم إسقاط الإطارات القديمة لاستيعاب الإطارات الجديدة (محسّن للتطبيقات في الوقت الفعلي). إذا كانت القيمة True، يتم وضع الإطارات الجديدة في مخزن مؤقت، مما يضمن عدم تخطي أي إطارات، ولكنه سيؤدي إلى زمن انتقال إذا كان معدل الإطارات في الاستنتاج أقل من معدل إطارات التدفق. |
visualize | bool | False | يفعل تصور ميزات النموذج أثناء الاستنتاج، مما يوفر رؤى حول ما "يراه" النموذج. مفيد لتصحيح الأخطاء وتفسير النموذج. |
augment | bool | False | يفعل زيادة وقت الاختبار (TTA) للتنبؤات، مما قد يحسن من قوة الاكتشاف على حساب سرعة الاستنتاج. |
agnostic_nms | bool | False | يفعل قمع النطاق غير الأقصى (NMS) غير المرتبط بالفئة، والذي يدمج الصناديق المتداخلة من فئات مختلفة. مفيد في سيناريوهات الاكتشاف متعدد الفئات حيث يكون تداخل الفئات شائعًا. بالنسبة للنماذج الشاملة (YOLO26، YOLOv10)، يمنع هذا فقط ظهور نفس الاكتشاف بتسميات فئات متعددة (تكرارات IoU=1.0) ولا يؤدي إلى قمع قائم على عتبة IoU بين الصناديق المميزة. |
classes | list[int] | None | يقوم بتصفية التنبؤات إلى مجموعة من معرفات الفئات. سيتم إرجاع الاكتشافات التي تنتمي إلى الفئات المحددة فقط. مفيد للتركيز على الكائنات ذات الصلة في مهام الاكتشاف متعددة الفئات. |
retina_masks | bool | False | يرجع أقنعة تجزئة عالية الدقة. ستطابق الأقنعة المرجعة (masks.data) حجم الصورة الأصلي إذا تم تفعيل هذا الخيار. إذا تم تعطيله، فسيكون لها حجم الصورة المستخدم أثناء الاستنتاج. |
embed | list[int] | None | يحدد الطبقات التي سيتم استخراج متجهات الميزات أو التضمينات منها. مفيد للمهام اللاحقة مثل التجميع أو البحث عن التشابه. |
project | str | None | اسم دليل المشروع حيث يتم حفظ مخرجات التنبؤ إذا تم تفعيل save. |
name | str | None | اسم تشغيل التنبؤ. يستخدم لإنشاء دليل فرعي داخل مجلد المشروع، حيث يتم تخزين مخرجات التنبؤ إذا تم تفعيل save. |
stream | bool | False | يفعل معالجة فعالة للذاكرة لمقاطع الفيديو الطويلة أو الصور العديدة عن طريق إرجاع مولد لكائنات النتائج بدلاً من تحميل جميع الإطارات في الذاكرة دفعة واحدة. |
verbose | bool | True | يتحكم فيما إذا كان سيتم عرض سجلات الاستنتاج التفصيلية في الطرفية، مما يوفر تعليقات فورية حول عملية التنبؤ. |
compile | bool or str | False | يُفعل تجميع الرسوم البيانية لـ PyTorch 2.x torch.compile باستخدام backend='inductor'. يقبل True → "default"، False → للتعطيل، أو وضع نصي مثل "default"، "reduce-overhead"، "max-autotune-no-cudagraphs". يعود إلى التنفيذ الفوري مع تحذير إذا كان غير مدعوم. |
end2end | bool | None | يتجاوز الوضع الشامل في نماذج YOLO التي تدعم الاستنتاج بدون NMS (YOLO26، YOLOv10). ضبطه على False يسمح لك بتشغيل التنبؤ باستخدام خط أنابيب NMS التقليدي، مما يسمح لك بالإضافة إلى ذلك باستخدام وسيطة iou. راجع دليل الاكتشاف الشامل للحصول على التفاصيل. |
وسائط التصور:
| المعامل | النوع | الافتراضي | الوصف |
|---|---|---|---|
show | bool | False | إذا كانت القيمة True، يتم عرض الصور أو مقاطع الفيديو المشروحة في نافذة. مفيد للحصول على تعليقات مرئية فورية أثناء التطوير أو الاختبار. |
save | bool | False or True | يفعل حفظ الصور أو مقاطع الفيديو المشروحة في ملفات. مفيد للتوثيق أو التحليل الإضافي أو مشاركة النتائج. القيمة الافتراضية هي True عند استخدام CLI و False عند الاستخدام في Python. |
save_frames | bool | False | عند معالجة مقاطع الفيديو، يحفظ الإطارات الفردية كصور. مفيد لاستخراج إطارات محددة أو للتحليل التفصيلي إطاراً بإطار. |
save_txt | bool | False | يحفظ نتائج الاكتشاف في ملف نصي، باتباع التنسيق [class] [x_center] [y_center] [width] [height] [confidence]. مفيد للتكامل مع أدوات التحليل الأخرى. |
save_conf | bool | False | يتضمن درجات الثقة في الملفات النصية المحفوظة. يعزز التفاصيل المتاحة للمعالجة اللاحقة والتحليل. |
save_crop | bool | False | يحفظ صوراً مقصوصة للاكتشافات. مفيد لزيادة البيانات أو التحليل أو إنشاء مجموعات بيانات مركزة لكائنات محددة. |
show_labels | bool | True | يعرض تسميات لكل اكتشاف في المخرجات المرئية. يوفر فهماً فورياً للكائنات المكتشفة. |
show_conf | bool | True | يعرض درجة الثقة لكل اكتشاف بجانب التسمية. يعطي نظرة ثاقبة حول يقين النموذج لكل اكتشاف. |
show_boxes | bool | True | يرسم صناديق إحاطة حول الكائنات المكتشفة. ضروري للتعرف المرئي وتحديد موقع الكائنات في الصور أو إطارات الفيديو. |
line_width | int or None | None | يحدد عرض خط صناديق الإحاطة. إذا كانت القيمة None، يتم تعديل عرض الخط تلقائياً بناءً على حجم الصورة. يوفر تخصيصاً مرئياً للوضوح. |
تنسيقات الصور والفيديو
يدعم YOLO26 تنسيقات صور وفيديو متنوعة، كما هو محدد في ultralytics/data/utils.py. انظر الجداول أدناه لمعرفة اللواحق الصالحة وأمثلة أوامر التنبؤ.
الصور
يحتوي الجدول أدناه على تنسيقات صور Ultralytics الصالحة.
تتطلب تنسيقات HEIC/HEIF مكتبة pi-heif، التي يتم تثبيتها تلقائياً عند الاستخدام لأول مرة. يتم دعم AVIF أصلياً بواسطة Pillow.
| لواحق الصور | مثال على أمر التنبؤ | مرجع |
|---|---|---|
.avif | yolo predict source=image.avif | تنسيق ملف صورة AV1 |
.bmp | yolo predict source=image.bmp | تنسيق ملف BMP من Microsoft |
.dng | yolo predict source=image.dng | Adobe DNG |
.heic | yolo predict source=image.heic | تنسيق الصورة عالي الكفاءة |
.heif | yolo predict source=image.heif | تنسيق الصورة عالي الكفاءة |
.jp2 | yolo predict source=image.jp2 | JPEG 2000 |
.jpeg | yolo predict source=image.jpeg | JPEG |
.jpg | yolo predict source=image.jpg | JPEG |
.mpo | yolo predict source=image.mpo | كائن صور متعدد |
.png | yolo predict source=image.png | رسومات الشبكة المحمولة |
.tif | yolo predict source=image.tif | تنسيق ملف صورة العلامة |
.tiff | yolo predict source=image.tiff | تنسيق ملف صورة العلامة |
.webp | yolo predict source=image.webp | WebP |
مقاطع الفيديو
يحتوي الجدول أدناه على تنسيقات فيديو 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 | Matroska |
.mov | yolo predict source=video.mov | تنسيق ملف QuickTime |
.mp4 | yolo predict source=video.mp4 | MPEG-4 الجزء 14 - ويكيبيديا |
.mpeg | yolo predict source=video.mpeg | MPEG-1 الجزء 2 |
.mpg | yolo predict source=video.mpg | MPEG-1 الجزء 2 |
.ts | yolo predict source=video.ts | بث نقل MPEG |
.wmv | yolo predict source=video.wmv | فيديو ويندوز ميديا |
.webm | yolo predict source=video.webm | مشروع WebM |
العمل مع النتائج
ستعيد جميع استدعاءات predict() في Ultralytics قائمة من كائنات Results:
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")
results = model(
[
"https://ultralytics.com/images/bus.jpg",
"https://ultralytics.com/images/zidane.jpg",
]
) # batch inferenceتحتوي كائنات Results على السمات التالية:
| السمة | النوع | الوصف |
|---|---|---|
orig_img | np.ndarray | الصورة الأصلية بصيغة مصفوفة NumPy. |
orig_shape | tuple | أبعاد الصورة الأصلية بتنسيق (الارتفاع، العرض). |
boxes | Boxes, optional | كائن Boxes يحتوي على مربعات الإحاطة الخاصة بالاكتشاف. |
masks | Masks, optional | كائن Masks يحتوي على أقنعة الاكتشاف. |
probs | Probs, optional | كائن Probs يحتوي على احتمالات كل فئة لمهمة التصنيف. |
keypoints | Keypoints, optional | كائن Keypoints يحتوي على النقاط الرئيسية المكتشفة لكل عنصر. |
obb | OBB, optional | كائن OBB يحتوي على مربعات إحاطة موجهة. |
speed | dict | قاموس لسرعات المعالجة الأولية، والاستنتاج، والمعالجة اللاحقة بالمللي ثانية لكل صورة. |
names | dict | قاموس يربط بين فهارس الفئات وأسماء الفئات. |
path | str | المسار إلى ملف الصورة. |
save_dir | str, optional | الدليل لحفظ النتائج. |
تحتوي كائنات Results على الطرق التالية:
| الطريقة | نوع الإرجاع | الوصف |
|---|---|---|
update() | None | تحديث كائن Results ببيانات اكتشاف جديدة (مربعات، أقنعة، احتمالات، OBB، نقاط رئيسية). |
cpu() | Results | إرجاع نسخة من كائن Results مع نقل كافة الموترات إلى ذاكرة CPU. |
numpy() | Results | إرجاع نسخة من كائن Results مع تحويل كافة الموترات إلى مصفوفات NumPy. |
cuda() | Results | إرجاع نسخة من كائن Results مع نقل كافة الموترات إلى ذاكرة GPU. |
to() | Results | إرجاع نسخة من كائن 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
يمكن استخدام كائن Boxes للفهرسة، والمعالجة، وتحويل مربعات الإحاطة إلى تنسيقات مختلفة.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.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
يمكن استخدام كائن Masks للفهرسة، والمعالجة، وتحويل الأقنعة إلى مقاطع.
from ultralytics import YOLO
# Load a pretrained YOLO26n-seg Segment model
model = YOLO("yolo26n-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() | الطريقة | إرجاع موتر الأقنعة على ذاكرة CPU. |
numpy() | الطريقة | إرجاع موتر الأقنعة كمصفوفة NumPy. |
cuda() | الطريقة | إرجاع موتر الأقنعة على ذاكرة GPU. |
to() | الطريقة | إرجاع موتر الأقنعة مع الجهاز ونوع البيانات المحددين. |
xyn | خاصية (torch.Tensor) | قائمة بالمقاطع المطبعة ممثلة كموترات. |
xy | خاصية (torch.Tensor) | قائمة بالمقاطع بإحداثيات البكسل ممثلة كموترات. |
لمزيد من التفاصيل، راجع توثيق فئة Masks.
Keypoints
يمكن استخدام كائن Keypoints للفهرسة، والمعالجة، وتطبيع الإحداثيات.
from ultralytics import YOLO
# Load a pretrained YOLO26n-pose Pose model
model = YOLO("yolo26n-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() | الطريقة | إرجاع موتر النقاط الرئيسية (keypoints tensor) على ذاكرة CPU. |
numpy() | الطريقة | إرجاع موتر النقاط الرئيسية كمصفوفة NumPy. |
cuda() | الطريقة | إرجاع موتر النقاط الرئيسية على ذاكرة GPU. |
to() | الطريقة | إرجاع موتر النقاط الرئيسية بالجهاز ونوع البيانات المحددين. |
xyn | خاصية (torch.Tensor) | قائمة من النقاط الرئيسية المطبّعة ممثلة كموترات. |
xy | خاصية (torch.Tensor) | قائمة من النقاط الرئيسية بإحداثيات البكسل ممثلة كموترات. |
conf | خاصية (torch.Tensor) | إرجاع قيم الثقة للنقاط الرئيسية إذا كانت متاحة، وإلا تُرجع None. |
لمزيد من التفاصيل، راجع توثيق فئة Keypoints.
Probs
يمكن استخدام كائن Probs للفهرسة، والحصول على فهارس ودرجات top1 و top5 للتصنيف.
from ultralytics import YOLO
# Load a pretrained YOLO26n-cls Classify model
model = YOLO("yolo26n-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() | الطريقة | إرجاع نسخة من موتر الاحتمالات على ذاكرة CPU. |
numpy() | الطريقة | إرجاع نسخة من موتر الاحتمالات كمصفوفة NumPy. |
cuda() | الطريقة | إرجاع نسخة من موتر الاحتمالات على ذاكرة GPU. |
to() | الطريقة | إرجاع نسخة من موتر الاحتمالات بالجهاز ونوع البيانات المحددين. |
top1 | خاصية (int) | فهرس فئة top 1. |
top5 | خاصية (list[int]) | فهارس فئات top 5. |
top1conf | خاصية (torch.Tensor) | ثقة فئة top 1. |
top5conf | خاصية (torch.Tensor) | ثقة فئات top 5. |
لمزيد من التفاصيل، راجع توثيق فئة Probs.
OBB
يمكن استخدام كائن OBB للفهرسة، والمعالجة، وتحويل صناديق الإحاطة الموجهة إلى تنسيقات مختلفة.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n-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() في كائنات Results تصور التنبؤات من خلال وضع الكائنات المكتشفة (مثل صناديق الإحاطة، والأقنعة، والنقاط الرئيسية، والاحتمالات) فوق الصورة الأصلية. تُرجع هذه الطريقة الصورة المشروحة كمصفوفة NumPy، مما يسمح بعرضها أو حفظها بسهولة.
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.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() وسائط متنوعة لتخصيص المخرجات:
| المعامل | النوع | الوصف | الافتراضي |
|---|---|---|---|
conf | bool | تضمين درجات ثقة الكشف. | True |
line_width | float | عرض خط صناديق الإحاطة. يتم تحجيمه مع حجم الصورة إذا كان None. | None |
font_size | float | حجم خط النص. يتم تحجيمه مع حجم الصورة إذا كان None. | None |
font | str | اسم الخط للتعليقات النصية. | 'Arial.ttf' |
pil | bool | إرجاع الصورة ككائن PIL Image. | False |
img | np.ndarray | صورة بديلة للرسم. تستخدم الصورة الأصلية إذا كانت None. | None |
im_gpu | torch.Tensor | صورة مسرعة بواسطة GPU لرسم القناع بشكل أسرع. الشكل: (1, 3, 640, 640). | None |
kpt_radius | int | نصف قطر النقاط الرئيسية المرسومة. | 5 |
kpt_line | bool | ربط النقاط الرئيسية بخطوط. | True |
labels | bool | تضمين تسميات الفئات في التعليقات التوضيحية. | True |
boxes | bool | وضع صناديق الإحاطة فوق الصورة. | True |
masks | bool | وضع الأقنعة فوق الصورة. | True |
probs | bool | تضمين احتمالات التصنيف. | True |
show | bool | عرض الصورة المشروحة مباشرة باستخدام عارض الصور الافتراضي. | False |
save | bool | حفظ الصورة المشروحة في ملف محدد بواسطة filename. | False |
filename | str | مسار واسم الملف لحفظ الصورة المشروحة إذا كان save مضبوطاً على True. | None |
color_mode | str | تحديد وضع اللون، على سبيل المثال، 'instance' أو 'class'. | 'class' |
txt_color | tuple[int, int, int] | لون نص RGB لصندوق الإحاطة وتسمية تصنيف الصورة. | (255, 255, 255) |
الاستدلال الآمن للخيوط (Thread-Safe Inference)
يعد ضمان سلامة الخيوط أثناء الاستدلال أمراً بالغ الأهمية عند تشغيل نماذج 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=("yolo26n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo26n.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("yolo26n.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") لتصور النتائج وحفظها. يتم إنشاء أي أدلة أصل مفقودة في مسار اسم الملف تلقائياً (على سبيل المثال، result.save("path/to/result.jpg")). للحصول على قائمة شاملة بهذه الطرق، راجع قسم العمل مع النتائج.


