التنبؤ بالنماذج باستخدام Ultralytics YOLO#
مقدمة#
في عالم تعلّم الآلة ورؤية الحاسوب، تُسمّى عملية فهم البيانات المرئية غالبًا الاستدلال أو التنبؤ. يقدّم Ultralytics YOLO26 ميزة قوية تُعرف باسم وضع التنبؤ، ومصمّمة للاستدلال عالي الأداء وفي الوقت الفعلي عبر مجموعة واسعة من مصادر البيانات.
Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀
التطبيقات الواقعية#
| التصنيع | الرياضة | السلامة |
|---|---|---|
| اكتشاف قطع غيار المركبات | اكتشاف لاعبي كرة القدم | اكتشاف سقوط الأشخاص |
لماذا تستخدم Ultralytics YOLO للاستدلال؟#
إليك أسبابًا تدفعك إلى التفكير في استخدام وضع التنبؤ في YOLO26 لتلبية احتياجاتك المختلفة من الاستدلال:
- تعدد الاستخدامات: قادر على تنفيذ الاستدلال على الصور ومقاطع الفيديو وحتى التدفقات المباشرة.
- الأداء: مُصمَّم للمعالجة الفورية وعالية السرعة دون التضحية بـالدقة.
- سهولة الاستخدام: واجهات Python وCLI سهلة الاستخدام للنشر والاختبار السريعين.
- قابلية تخصيص عالية: إعدادات ومعلمات متنوعة لضبط سلوك الاستدلال في النموذج وفقًا لمتطلباتك المحددة.
- جاهز للإنتاج: انشر النماذج كنقاط نهاية للاستدلال على Ultralytics Platform مع التوسع التلقائي والمراقبة، أو نفّذ الاستدلال محليًا.
الميزات الأساسية لوضع التنبؤ#
صُمّم وضع التنبؤ في YOLO26 ليكون متينًا ومتعدد الاستخدامات، ويتميز بما يلي:
- التوافق مع مصادر بيانات متعددة: سواء كانت بياناتك على شكل صور منفردة أو مجموعة صور أو ملفات فيديو أو تدفقات فيديو فورية، فإن وضع التنبؤ يلبي احتياجاتك.
- وضع البث: استخدم ميزة البث لإنشاء مولّد موفّر للذاكرة من كائنات
Results. فعّل ذلك من خلال ضبطstream=Trueفي طريقة استدعاء المتنبئ. بخلاف السلوك الافتراضي (stream=False) الذي يعيد قائمة تحتوي على جميع النتائج، ينتجstream=Trueالنتائج واحدة تلو الأخرى، ما يجعله مفيدًا خصوصًا لمقاطع الفيديو الطويلة والتدفقات المباشرة. - المعالجة الدفعية: عالج صورًا متعددة أو إطارات فيديو متعددة في دفعة واحدة، مما يقلل زمن الاستدلال الإجمالي بدرجة أكبر.
- سهولة التكامل: يمكنك التكامل بسهولة مع مسارات البيانات الحالية ومكونات البرامج الأخرى بفضل واجهة 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.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). |
| 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.mp4' | str أو Path | ملف فيديو بتنسيقات مثل MP4 وAVI وغيرهما. |
| دليل ✅ | 'path/' | str أو Path | مسار إلى دليل يحتوي على صور أو مقاطع فيديو. |
| glob ✅ | 'path/*.jpg' | str | نمط Glob لمطابقة ملفات متعددة. استخدم الحرف * كحرف بدل. |
| YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' | str | عنوان URL لمقطع فيديو على YouTube. |
| تدفق ✅ | 'rtsp://example.com/media.mp4' | str | عنوان URL لبروتوكولات البث مثل RTSP أو RTMP أو TCP، أو لعنوان IP. |
| تدفقات متعددة ✅ | 'list.streams' | str أو Path | ملف نصي *.streams يحتوي على عنوان URL لتدفق واحد في كل صف؛ أي إن 8 تدفقات ستعمل بحجم دفعة يساوي 8. |
| كاميرا الويب ✅ | 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)#
يستخدم predict افتراضيًا rect=True، الذي يفعّل حشو المستطيل الأدنى عند الإمكان. تُقاس الصورة لتلائم داخل imgsz وتُحشى فقط إلى أقرب مضاعف للخطوة، لذلك قد يكون الموتر النهائي أصغر من 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. يعطي العدد الصحيح N×N مربعًا، بينما يعطي الزوج (height, width). ومع rect=True، قد يكون الموتر الفعلي أصغر من هذا الهدف بسبب الحشو بالحد الأدنى للمستطيل. استخدم rect=False لحجم ثابت. راجع الشكل الثابت مقابل الحد الأدنى للمستطيل. |
rect | bool | True | إذا كان True، فاستخدم الحشو بالحد الأدنى للمستطيل متى أمكن (دفعة ذات الشكل نفسه وخلفية مدعومة). وإذا كان False، فاحشو دائمًا إلى imgsz الكامل. راجع الشكل الثابت مقابل الحد الأدنى للمستطيل. |
quantize | int أو str | None | دقة الاستدلال: 16/"fp16" و 32/"fp32"/غير المحدد تحدد حساب FP16 أو FP32 لنماذج PyTorch و TorchScript؛ بينما تحسب التنسيقات الأخرى بالدقة التي تحددها ملفاتها ووقت تشغيلها. عند 16 تقوم OpenVINO بتقريب المدخلات إلى FP16 على العميل وتوسيعها مرة أخرى إلى FP32، دون تغيير ما يحسبه وقت التشغيل. يتم تكوين الكمي INT8/PTQ أثناء التصدير، ثم يُستخدَم عن طريق تحميل النموذج المصدر. يحل محل علامة half المهملة. |
device | str | None | يحدد الجهاز المستخدم للاستدلال (مثل cpu أو cuda:0 أو 0 أو npu أو npu:0). ويتيح للمستخدمين الاختيار بين CPU أو GPU محدد أو Huawei Ascend NPU أو أجهزة حوسبة أخرى لتنفيذ النموذج. |
dnn | bool | False | إذا كان True، فاستخدم وحدة DNN في OpenCV بدلًا من ONNX Runtime لاستدلال نموذج ONNX. |
data | str | None | مسار YAML لمجموعة بيانات (مثل coco8.yaml) يُقرأ فقط من أجل names، وفقط عندما لا يحمل النموذج المحمّل أسماء فئات خاصة به: أي تصدير من جهة خارجية أو تصدير من Ultralytics منفصل عن البيانات الوصفية المرفقة به. ويُبلغ هذا النموذج بخلاف ذلك عن class0 وclass1 وما إلى ذلك. |
batch | int | 1 | يحدد حجم الدفعة للاستدلال (ولا يعمل إلا عندما يكون المصدر دليلًا أو ملف فيديو أو ملف .txt). ويمكن أن يوفر حجم الدفعة الأكبر معدل نقل أعلى، ما يقلل إجمالي الوقت المطلوب للاستدلال. |
max_det | int | 300 | الحد الأقصى لعدد عمليات الاكتشاف المسموح بها لكل صورة. ويحد إجمالي عدد الكائنات التي يمكن للنموذج اكتشافها في استدلال واحد، ما يمنع المخرجات المفرطة في المشاهد الكثيفة. |
vid_stride | int | 1 | خطوة الإطارات لمدخلات الفيديو. تتيح تخطي الإطارات في مقاطع الفيديو لتسريع المعالجة على حساب الدقة الزمنية. تعالج القيمة 1 كل إطار، بينما تتخطى القيم الأعلى بعض الإطارات. |
stream_buffer | bool | False | يحدد ما إذا كان ينبغي وضع الإطارات الواردة في قائمة انتظار لبث الفيديو. إذا كان False، تُسقط الإطارات القديمة لاستيعاب الإطارات الجديدة (وهو محسن للتطبيقات في الوقت الفعلي). وإذا كان True، تُوضع الإطارات الجديدة في مخزن مؤقت، ما يضمن عدم تخطي أي إطار، لكنه يسبب زمن استجابة إذا كان معدل إطارات الاستدلال أقل من معدل إطارات البث. |
visualize | bool | False | يحفظ خريطة حرارية لتنشيط الفئة بجانب كل تنبؤ، موضحًا وحدات البكسل التي رفعت درجات الفئة المتنبأ بها. ويراعي conf وclasses، ولذلك يعيّن classes=[0] تلك الفئة فقط. ولا يتوفر إلا لنماذج Ultralytics PyTorch. |
augment | bool | False | يمكّن زيادة البيانات وقت الاختبار (TTA) للتنبؤات، ما قد يحسن متانة الاكتشاف على حساب سرعة الاستدلال. ولا يتوفر إلا لنماذج Ultralytics PyTorch. |
agnostic_nms | bool | False | يمكن عملية القمع غير المرتبط بالفئة (NMS)، حيث يتم قمع المربعات المتداخلة الأقل تسجيلًا عبر الفئات المختلفة بدلاً من الفئة نفسها فقط. مفيد في سيناريوهات الكشف متعدد الفئات حيث يكون تداخل الفئات شائعًا. مع الاستدلال الخالي من NMS (nms=False على YOLO26 أو YOLOv10)، يمنع هذا فقط نفس الاكتشاف من الظهور بتسميات فئات متعددة (تكرارات IoU=1.0) ولا يقوم بقمع يعتمد على عتبة IoU بين المربعات المتميزة. |
classes | list[int] | None | يصفّي التنبؤات إلى مجموعة من معرّفات الفئات. ولن تُعاد إلا عمليات الاكتشاف التي تنتمي إلى الفئات المحددة. ويفيد ذلك في التركيز على الكائنات ذات الصلة في مهام الاكتشاف متعدد الفئات. |
retina_masks | bool | False | يعيد أقنعة تقسيم عالية الدقة. وستطابق الأقنعة المُعادة (masks.data) حجم الصورة الأصلية إذا فُعّلت. وإذا عُطّلت، فسيكون لها حجم الصورة المستخدم أثناء الاستدلال. |
embed | list[int] | None | يحدد الطبقات التي تُستخرج منها متجهات الميزات أو التضمينات. استخدم model.embed(source) لتضمينات الطبقة قبل الأخيرة، أو model.predict(source, embed=[layer]) لتحديد طبقات بعينها. ويفيد ذلك في المهام اللاحقة مثل التجميع أو البحث عن التشابه. ولا يتوفر إلا لنماذج Ultralytics PyTorch. |
project | str | None | اسم دليل المشروع الذي تُحفظ فيه مخرجات التنبؤ إذا فُعّل save. |
name | str | None | اسم تشغيل التنبؤ. ويُستخدم لإنشاء دليل فرعي داخل مجلد المشروع تُخزَّن فيه مخرجات التنبؤ إذا فُعّل save. |
stream | bool | False | يمكّن المعالجة الفعالة للذاكرة لمقاطع الفيديو الطويلة أو الصور العديدة عبر إعادة مولّد من كائنات Results بدلًا من تحميل جميع الإطارات إلى الذاكرة دفعة واحدة. |
verbose | bool | True | يتحكم في عرض سجلات الاستدلال التفصيلية في الطرفية، موفرًا ملاحظات فورية حول عملية التنبؤ. |
compile | bool أو str | False | يمكّن تجميع الرسم البياني باستخدام torch.compile في PyTorch 2.x مع backend='inductor'. يقبل True → "default"، أو False → للتعطيل، أو وضعًا نصيًا مثل "default" و"reduce-overhead" و"max-autotune-no-cudagraphs". ويعود إلى التنفيذ الفوري مع إصدار تحذير إذا لم يكن مدعومًا. |
channels_last | bool | None | يستخدم تنسيق ذاكرة channels_last (NHWC) للاستدلال الأصلي في PyTorch. ويمكّنه None تلقائيًا على وحدات CPU x86 في Linux وWindows المفعّل فيها oneDNN مع PyTorch 1.13 أو أحدث، بينما يعطّله False، ويطلبه True على أجهزة CPU x86 أو CUDA المدعومة. وتظل ARM64 وMPS وإصدارات PyTorch الأقدم ووحدات CPU التي لا تحتوي على oneDNN والتنسيقات المُصدَّرة مثل TensorRT وONNX دون تغيير. |
nms | bool، اختياري | None | يشغل استدلال من واحد إلى متعدد مع NMS افتراضيًا (None أو True). قم بتعيين False لاستخدام الرأس الفردي الخالي من NMS عند توفره. راجع دليل الكشف من طرف إلى طرف للحصول على التفاصيل. |
وسيطات التصور:
| الوسيطة | النوع | الافتراضي | الوصف |
|---|---|---|---|
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. راجع الجداول أدناه للاطلاع على اللواحق الصالحة وأوامر predict النموذجية.
الصور#
يحتوي الجدول أدناه على تنسيقات الصور الصالحة في Ultralytics.
تتطلب تنسيقات HEIC/HEIF الحزمة pi-heif، التي تُثبَّت تلقائيًا عند الاستخدام الأول. ويدعم Pillow تنسيق AVIF دعمًا أصليًا.
| لواحق الصور | مثال على أمر Predict | المرجع |
|---|---|---|
.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.
| امتدادات الفيديو | مثال على أمر Predict | المرجع |
|---|---|---|
.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 | فيديو Windows Media |
.webm | yolo predict source=video.webm | مشروع WebM |
العمل مع النتائج#
ستُرجع جميع استدعاءات Ultralytics predict() قائمةً من كائنات 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 يحتوي على مربعات الإحاطة الموجّهة. |
semantic_mask | SemanticMask, optional | كائن SemanticMask يحتوي على خريطة فئات كثيفة لكل بكسل. |
speed | dict | قاموس لسرعات المعالجة المسبقة والاستدلال والمعالجة اللاحقة بالمللي ثانية لكل صورة. |
names | dict | قاموس يربط فهارس الفئات بأسماء الفئات. |
path | str | مسار ملف الصورة. |
save_dir | str, optional | الدليل لحفظ النتائج. |
النتائج حسب المهمة#
الحقول التي يتم تعبئتها أدناه تعتمد على مهمة نموذجك — قارن بين الكشف، والتجزئة، والتجزئة الدلالية، وتحديد العمق، والتصنيف، الوضعية، و OBB إذا لم تقم باختيار واحدة بعد. تُرجع كل عملية تنبؤ كائن Results واحد لكل صورة أو إطار. الحقول المشتركة أعلاه متاحة دائماً، بينما يتم تخزين بيانات التنبؤ الخاصة بالمهمة في الحقول أدناه. موترات الإحداثيات والثقة الخاصة بـ YOLO هي torch.float32؛ وموتررات الاحتمالية هي torch.float32 ما لم يتم استخدام الدقة النصفية، فتصبح torch.float16. بعد result.numpy()، تصبح الموترات مصفوفات NumPy مع أنواع بيانات NumPy مطابقة. أقنعة الحالات هي موترات ثنائية torch.uint8، بينما تستخدم الأقنعة الدلالية أصغر نوع بيانات صحيح عملي لمعرفات الفئات: torch.uint8، أو torch.int16، أو torch.int32، بناءً على عدد الفئات.
| السمة | النوع | الشكل | الوصف |
|---|---|---|---|
result.boxes | Boxes | (N) | مربعات الكشف. |
result.boxes.data | torch.float32 | (N,6/7) | [x1,y1,x2,y2,conf,cls] الخام، بالإضافة إلى معرّف التتبع الاختياري. |
result.boxes.xyxy | torch.float32 | (N,4) | مربعات البكسلات xyxy. |
result.boxes.conf | torch.float32 | (N,) | درجات الثقة. |
result.boxes.cls | torch.float32 | (N,) | معرّفات الفئات؛ حوّلها إلى int للحصول على الأسماء. |
تحتوي كائنات 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 | يرسم نتائج الكشف على صورة BGR مُدخلة ويُرجع الصورة المُعنونة. |
show() | None | يعرض الصورة مع نتائج الاستدلال المُعنونة. |
save() | str | يحفظ صورة نتائج الاستدلال المُعنونة في ملف ويُرجع اسم الملف. |
verbose() | str | يُرجع سلسلة سجل لكل مهمة، مع تفصيل نتائج الكشف والتصنيف. |
save_txt() | str | يحفظ نتائج الكشف في ملف نصي ويُرجع مسار الملف المحفوظ. |
save_crop() | None | يحفظ صور الكشف المقصوصة في الدليل المحدد. |
summary() | List[Dict[str, Any]] | يحوّل نتائج الاستدلال إلى قاموس ملخّص مع إمكانية التطبيع. |
to_df() | DataFrame | يحوّل نتائج الكشف إلى DataFrame من Polars. |
to_csv() | str | يحوّل نتائج الكشف إلى تنسيق CSV. |
to_json() | str | يحوّل نتائج الكشف إلى تنسيق JSON. |
لمزيد من التفاصيل، راجع وثائق فئة Results.
المربعات#
يمكن استخدام كائن 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 لفهرسة الأقنعة ومعالجتها وتحويلها إلى مقاطع.
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، بما في ذلك الاسم والنوع والوصف:
| الاسم | النوع | الوصف |
|---|---|---|
data | الخاصية (torch.Tensor) | موتر القناع الثنائي torch.uint8 ذو الشكل (N,H,W) والقيم 0 أو 1. |
cpu() | الطريقة | يُرجع موتر الأقنعة في ذاكرة CPU. |
numpy() | الطريقة | يُرجع موتر الأقنعة كمصفوفة NumPy. |
cuda() | الطريقة | يُرجع موتر الأقنعة في ذاكرة GPU. |
to() | الطريقة | يُرجع موتر الأقنعة باستخدام الجهاز ونوع البيانات المحددين. |
xyn | الخاصية (list[np.ndarray]) | قائمة بمضلعات الأقنعة المُطبَّعة. |
xy | الخاصية (list[np.ndarray]) | قائمة بمضلعات الأقنعة بإحداثيات البكسل. |
لمزيد من التفاصيل، راجع وثائق فئة Masks.
SemanticMask#
يخزّن SemanticMask خريطة فئات كثيفة واحدة لنتائج التقسيم الدلالي. بخلاف Masks، لا يحتوي على قناع ثنائي واحد لكل كائن ولا يوفر أدوات مساعدة للمضلعات.
from ultralytics import YOLO
# Load a pretrained YOLO26n-sem Semantic model
model = YOLO("yolo26n-sem.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.semantic_mask.data) # print the H x W class-ID map| الاسم | النوع | الوصف |
|---|---|---|
data | الخاصية (torch.Tensor) | خريطة معرّفات الفئات ذات الشكل (H,W). نوع البيانات هو torch.uint8 أو torch.int16 أو torch.int32، ويُحدَّد ذلك حسب عدد الفئات. |
shape | الخاصية (tuple) | شكل خريطة الفئات، ويطابق عادةً result.orig_shape. |
cpu() | الطريقة | يعيد موتر القناع الدلالي في ذاكرة CPU. |
numpy() | الطريقة | يعيد موتر القناع الدلالي في صورة مصفوفة NumPy. |
cuda() | الطريقة | يعيد موتر القناع الدلالي في ذاكرة GPU. |
to() | الطريقة | يعيد موتر القناع الدلالي باستخدام الجهاز ونوع البيانات المحددين. |
النقاط المفصلية#
يمكن استخدام الكائن 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() | الطريقة | يعيد موتر النقاط الأساسية في ذاكرة 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() | الطريقة | يعيد نسخة من موتر probs في ذاكرة CPU. |
numpy() | الطريقة | يعيد نسخة من موتر probs في صورة مصفوفة NumPy. |
cuda() | الطريقة | يعيد نسخة من موتر probs في ذاكرة GPU. |
to() | الطريقة | يعيد نسخة من موتر probs باستخدام الجهاز ونوع البيانات المحددين. |
top1 | الخاصية (int) | فهرس الفئة الأولى. |
top5 | الخاصية (list[int]) | فهارس أفضل 5 فئات. |
top1conf | الخاصية (torch.Tensor) | ثقة الفئة الأولى. |
top5conf | الخاصية (torch.Tensor) | درجات ثقة أفضل 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 | torch.Tensor | صورة بديلة. يجب أن تكون الموترات متجاورة بتنسيق HWC BGR uint8. | 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] | لون نص BGR لمربع الإحاطة وتسمية تصنيف الصورة. | (255, 255, 255) |
الاستدلال الآمن من حيث الخيوط#
يُعد ضمان أمان الخيوط أثناء الاستدلال أمرًا بالغ الأهمية عند تشغيل نماذج YOLO متعددة بالتوازي عبر خيوط مختلفة. ويضمن الاستدلال الآمن للخيوط عزل تنبؤات كل خيط وعدم تداخلها مع بعضها، مما يتجنب حالات التنافس ويضمن مخرجات متسقة وموثوقة.
عند استخدام نماذج YOLO في تطبيق متعدد الخيوط، من المهم إنشاء كائنات نموذج منفصلة لكل خيط أو استخدام تخزين محلي للخيوط لمنع التعارضات:
إنشاء نموذج واحد داخل كل خيط لضمان استدلال آمن للخيوط:
from threading import Thread
from ultralytics import YOLO
def thread_safe_predict(model, image_path):
"""Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
model = YOLO(model)
results = model.predict(image_path)
# Process results
# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("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 هو نموذج متطور لـاكتشاف الكائنات وتقسيم الكائنات والتقسيم الدلالي وتقدير العمق والتصنيف في الوقت الفعلي. يتيح وضع predict للمستخدمين إجراء استدلال عالي السرعة على مصادر بيانات متنوعة، مثل الصور ومقاطع الفيديو والبثوث المباشرة. وبفضل تصميمه لتحقيق الأداء وتعدد الاستخدامات، يوفر أيضًا وضعي المعالجة الدفعية والبث. لمزيد من التفاصيل حول ميزاته، راجع وضع predict في Ultralytics YOLO.
يمكن لـ Ultralytics YOLO معالجة مجموعة واسعة من مصادر البيانات، بما في ذلك الصور الفردية ومقاطع الفيديو والأدلة وعناوين URL والبثوث. يمكنك تحديد مصدر البيانات في استدعاء
model.predict(). على سبيل المثال، استخدم'image.jpg'لصورة محلية أو'https://ultralytics.com/images/bus.jpg'لعنوان URL. راجع الأمثلة التفصيلية لمصادر الاستدلال المتنوعة في الوثائق.لتحسين سرعة الاستدلال وإدارة الذاكرة بكفاءة، يمكنك استخدام وضع البث من خلال تعيين
stream=Trueفي طريقة استدعاء المتنبئ. ينشئ وضع البث مولّدًا موفرًا للذاكرة من كائناتResultsبدلًا من تحميل جميع الإطارات إلى الذاكرة. ويُعد وضع البث مفيدًا خصوصًا لمعالجة مقاطع الفيديو الطويلة أو مجموعات البيانات الكبيرة. تعرّف على المزيد حول وضع البث.تدعم الطريقة
model.predict()في YOLO وسائط متنوعة، مثلconfوiouوimgszوdeviceوغيرها. تتيح لك هذه الوسائط تخصيص عملية الاستدلال، من خلال ضبط معلمات مثل عتبات الثقة وحجم الصورة والجهاز المستخدم للحساب. يمكن العثور على أوصاف تفصيلية لهذه الوسائط في قسم وسائط الاستدلال.استخدم
model.embed(source)لاستخراج تضمينات الميزات من الطبقة قبل الأخيرة، أو مرّرembed=[layer_index]إلىmodel.predict()لاختيار طبقات محددة.from ultralytics import YOLO model = YOLO("yolo26n.pt") source = "https://ultralytics.com/images/bus.jpg" results = model.predict(source) # Results objects embeddings = model.embed(source) # list of torch.Tensor embeddingsبعد إجراء الاستدلال باستخدام YOLO، تحتوي كائنات
Resultsعلى أساليب لعرض الصور المشروحة وحفظها. يمكنك استخدام أساليب مثلresult.show()وresult.save(filename="result.jpg")لتصور النتائج وحفظها. تُنشأ تلقائيًا أي أدلة رئيسية مفقودة في مسار اسم الملف، مثلresult.save("path/to/result.jpg"). للحصول على قائمة شاملة بهذه الأساليب، راجع قسم التعامل مع النتائج.