التنبؤ باستخدام النماذج مع Ultralytics YOLO#
مقدمة#
في عالم التعلّم الآلي والرؤية الحاسوبية، تُسمّى عملية استخلاص المعنى من البيانات المرئية غالبًا الاستدلال أو التنبؤ. يوفّر Ultralytics YOLO26 ميزة فعّالة تُعرف باسم وضع predict، وهي مصممة للاستدلال عالي الأداء وفي الوقت الفعلي عبر مجموعة واسعة من مصادر البيانات.
اطّلع على معاينة YOLO27 غير المُصدرة للتعرّف على أمثلة الاستدلال المخطط لها.
شاهد: كيفية استخراج النتائج من مهام Ultralytics YOLO26 للمشاريع المخصصة 🚀
تطبيقات واقعية#
| التصنيع | الرياضة | السلامة |
|---|---|---|
| الكشف عن قطع غيار المركبات | الكشف عن لاعبي كرة القدم | الكشف عن سقوط الأشخاص |
لماذا تستخدم Ultralytics YOLO للاستدلال؟#
إليك أسبابًا تدعوك إلى التفكير في استخدام وضع التنبؤ في YOLO26 لتلبية احتياجاتك المختلفة للاستدلال:
- تعدد الاستخدامات: يمكنه إجراء الاستدلال على الصور ومقاطع الفيديو وحتى البث المباشر.
- الأداء: صُمم لمعالجة البيانات بسرعة عالية وفي الوقت الفعلي دون التضحية بـ الدقة.
- سهولة الاستخدام: واجهتا Python وCLI بديهيتان للتطوير والاختبار بسرعة.
- قابلية عالية للتخصيص: تتوفر إعدادات ومعلمات متنوعة لضبط سلوك استدلال النموذج وفقًا لمتطلباتك المحددة.
- جاهز للإنتاج: انشر النماذج على هيئة نقاط نهاية للاستدلال في منصة Ultralytics مع التوسع التلقائي والمراقبة، أو أجرِ الاستدلال محليًا.
الميزات الرئيسية لوضع التنبؤ#
صُمم وضع التنبؤ في YOLO26 ليكون قويًا ومتعدد الاستخدامات، ويتميز بما يلي:
- التوافق مع مصادر بيانات متعددة: سواء كانت بياناتك صورًا منفردة أو مجموعة صور أو ملفات فيديو أو بث فيديو مباشر، فإن وضع التنبؤ يلبي احتياجاتك.
- وضع البث: استخدم ميزة البث لإنشاء مولّد موفّر للذاكرة لكائنات
Results. فعّل هذه الميزة بتعيينstream=Trueفي طريقة الاستدعاء الخاصة بالمُتنبئ. وعلى عكس السلوك الافتراضي (stream=False)، الذي يعيد قائمة تضم جميع النتائج، فإنstream=Trueيُصدر النتائج واحدة تلو الأخرى، ما يجعله مفيدًا على نحو خاص لمقاطع الفيديو الطويلة والبث المباشر. - المعالجة الدفعية: عالج عدة صور أو إطارات فيديو في دفعة واحدة، مما يقلل إجمالي وقت الاستدلال أكثر.
- سهولة التكامل: تكامل بسهولة مع مسارات البيانات الحالية ومكونات البرامج الأخرى بفضل واجهة API المرنة.
تعيد نماذج Ultralytics YOLO إما قائمة Python من كائنات Results أو مولّدًا موفّرًا للذاكرة من كائنات Results عند تمرير stream=True إلى النموذج أثناء الاستدلال:
from ultralytics import YOLO
# تحميل نموذج
model = YOLO("yolo26n.pt") # نموذج YOLO26n مُدرّب مسبقًا
# إجراء استدلال دفعِي على قائمة من الصور
results = model(["image1.jpg", "image2.jpg"]) # إرجاع قائمة من كائنات Results
# معالجة قائمة النتائج
for result in results:
boxes = result.boxes # كائن Boxes لمخرجات مربعات الإحاطة
masks = result.masks # كائن Masks لمخرجات أقنعة التجزئة
keypoints = result.keypoints # كائن Keypoints لمخرجات تقدير الوضعية
probs = result.probs # كائن Probs لمخرجات التصنيف
obb = result.obb # كائن الصناديق الموجّهة لمخرجات OBB
result.show() # العرض على الشاشة
result.save(filename="result.jpg") # الحفظ على القرصمصادر الاستدلال#
يمكن لـ 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
# تحميل نموذج YOLO26n مُدرّب مسبقًا
model = YOLO("yolo26n.pt")
# تحديد مسار ملف الصورة
source = "path/to/image.jpg"
# إجراء الاستدلال على المصدر
results = model(source) # قائمة من كائنات Resultsوسيطات الاستدلال#
يقبل model.predict() عدة وسيطات يمكن تمريرها وقت الاستدلال لتجاوز القيم الافتراضية:
الحجم الثابت مقابل المستطيل الأدنى (rect)#
افتراضيًا، يستخدم predict rect=True، ما يتيح الحشو إلى المستطيل الأدنى متى أمكن. تُغيّر أبعاد الصورة لتناسب imgsz، ثم تُحشى حتى أقرب مضاعف لخطوة النموذج فقط، لذا قد يكون الموتر النهائي أصغر من imgsz. ولا يُستخدم الحشو إلى المستطيل الأدنى إلا عندما تكون أبعاد جميع الصور في الدفعة متطابقة وتدعمه الواجهة الخلفية (PyTorch .pt، أو تصدير بأبعاد ديناميكية مثل ONNX الديناميكي). وإلا، فتُحشى الصور إلى الهدف ذي الأبعاد الكاملة imgsz.
استخدم rect=False للحشو دائمًا إلى الهدف ذي الأبعاد الكاملة imgsz. ويُنصح بهذا الخيار عندما تحتاج إلى حجم إدخال ثابت يتوافق مع النماذج المُصدّرة (ONNX أو TensorRT، وما إلى ذلك).
عدد صحيح مقابل صف imgsz
- تُحوّل قيمة
imgsz=640الصحيحة إلى هدف مربع(640, 640)بعد تقريبها إلى مضاعف خطوة النموذج. - تحدد قيمة
imgsz=(384, 672)الصفّية هدفًا مستطيلًا. معrect=True، قد يكون الموتر الفعلي أصغر من هذا الهدف.
التدريب مقابل predict/export
لا يقبل التدريب سوى قيمة imgsz صحيحة واحدة (وتُحوّل قائمة [h, w] إلى أكبر قيمة فيها). أما predict وexport فيقبلان عددًا صحيحًا أو صفًا (height, width).
from ultralytics import YOLO
# تحميل نموذج YOLO26n مُدرّب مسبقًا
model = YOLO("yolo26n.pt")
# تشغيل الاستدلال على 'bus.jpg' باستخدام الوسيطات
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 محددة أو NPU من Huawei Ascend أو أجهزة حوسبة أخرى لتنفيذ النموذج. |
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 Video |
.webm | yolo predict source=video.webm | مشروع WebM |
التعامل مع النتائج#
تعيد جميع استدعاءات predict() في Ultralytics قائمة من كائنات Results:
from ultralytics import YOLO
# تحميل نموذج YOLO26n مُدرّب مسبقًا
model = YOLO("yolo26n.pt")
# تشغيل الاستدلال على صورة
results = model("https://ultralytics.com/images/bus.jpg")
results = model(
[
"https://ultralytics.com/images/bus.jpg",
"https://ultralytics.com/images/zidane.jpg",
]
) # استدلال على دفعاتتتضمن كائنات 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 يحتوي على خريطة فئات كثيفة لكل بكسل. |
depth | DepthMap, optional | كائن DepthMap يحتوي على خريطة عمق كثيفة لكل بكسل. |
speed | dict | قاموس لسرعات المعالجة المسبقة والاستدلال والمعالجة اللاحقة، بالمللي ثانية لكل صورة. |
names | dict | قاموس يربط فهارس الفئات بأسمائها. |
path | str | مسار ملف الصورة. |
save_dir | str, optional | الدليل الذي تُحفظ فيه النتائج. |
النتائج حسب المهمة#
تعتمد الحقول التي تُملأ أدناه على مهمة النموذج — قارن بين الكشف، والتجزئة، والتجزئة الدلالية، وتقدير العمق، والتصنيف، والوضعية، وOBB إذا لم تختر مهمة بعد. يُعيد كل تنبؤ كائن Results واحدًا لكل صورة أو إطار. تكون الحقول المشتركة المذكورة أعلاه متاحة دائمًا، بينما تُخزّن بيانات التنبؤ الخاصة بكل مهمة في الحقول أدناه. تكون موترات إحداثيات YOLO والثقة من النوع torch.float32؛ أما موترات الاحتمالات فمن النوع torch.float32 ما لم يُستخدم استدلال FP16 (quantize=16)، وعندها تكون من النوع 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 | يحوّل نتائج الكشف إلى إطار بيانات Polars. |
to_csv() | str | يحوّل نتائج الكشف إلى تنسيق CSV. |
to_json() | str | يحوّل نتائج الكشف إلى تنسيق JSON. |
لمزيد من التفاصيل، راجع وثائق الفئة Results.
الصناديق#
يمكن استخدام كائن Boxes لفهرسة صناديق الإحاطة ومعالجتها وتحويلها إلى تنسيقات مختلفة.
from ultralytics import YOLO
# تحميل نموذج YOLO26n مُدرّب مسبقًا
model = YOLO("yolo26n.pt")
# تشغيل الاستدلال على صورة
results = model("https://ultralytics.com/images/bus.jpg") # قائمة results
# عرض النتائج
for r in results:
print(r.boxes) # اطبع كائن 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
# حمّل نموذج تقسيم YOLO26n-seg مُدرّبًا مسبقًا
model = YOLO("yolo26n-seg.pt")
# تشغيل الاستدلال على صورة
results = model("https://ultralytics.com/images/bus.jpg") # قائمة results
# عرض النتائج
for r in results:
print(r.masks) # اطبع كائن 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 خريطة فئات كثيفة واحدة لنتائج التجزئة الدلالية. وعلى خلاف Masks، لا يحتوي على قناع ثنائي لكل كائن، ولا يوفر أدوات مساعدة للمضلعات.
from ultralytics import YOLO
# حمّل نموذج دلالي YOLO26n-sem مُدرّبًا مسبقًا
model = YOLO("yolo26n-sem.pt")
# تشغيل الاستدلال على صورة
results = model("https://ultralytics.com/images/bus.jpg") # قائمة results
# عرض النتائج
for r in results:
print(r.semantic_mask.data) # اطبع خريطة معرّفات الفئات H × W| الاسم | النوع | الوصف |
|---|---|---|
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
# حمّل نموذج وضعية YOLO26n-pose مُدرّبًا مسبقًا
model = YOLO("yolo26n-pose.pt")
# تشغيل الاستدلال على صورة
results = model("https://ultralytics.com/images/bus.jpg") # قائمة results
# عرض النتائج
for r in results:
print(r.keypoints) # اطبع كائن Keypoints الذي يحتوي على النقاط المفتاحية المكتشفةإليك جدولًا لطرق وخصائص الفئة Keypoints، يتضمن الاسم والنوع والوصف:
| الاسم | النوع | الوصف |
|---|---|---|
cpu() | الطريقة | يعيد موتر النقاط المفتاحية في ذاكرة CPU. |
numpy() | الطريقة | يعيد موتر النقاط المفتاحية كمصفوفة NumPy. |
cuda() | الطريقة | يعيد موتر النقاط المفتاحية في ذاكرة GPU. |
to() | الطريقة | يعيد موتر النقاط المفتاحية بالجهاز ونوع البيانات المحددين. |
xyn | الخاصية (torch.Tensor) | إحداثيات النقاط المفتاحية المُطبَّعة ذات الشكل (N,K,2). |
xy | الخاصية (torch.Tensor) | إحداثيات النقاط المفتاحية بالبكسل ذات الشكل (N,K,2). |
conf | الخاصية (torch.Tensor) | يعيد قيم الثقة للنقاط المفتاحية إن توفرت، وإلا يعيد None. |
لمزيد من التفاصيل، راجع وثائق الفئة Keypoints.
الاحتمالات#
يمكن استخدام كائن Probs للحصول على فهارس التصنيف ودرجاته top1 وtop5.
from ultralytics import YOLO
# حمّل نموذج تصنيف YOLO26n-cls مُدرّبًا مسبقًا
model = YOLO("yolo26n-cls.pt")
# تشغيل الاستدلال على صورة
results = model("https://ultralytics.com/images/bus.jpg") # قائمة results
# عرض النتائج
for r in results:
print(r.probs) # اطبع كائن Probs الذي يحتوي على احتمالات الفئات المكتشفةإليك جدولًا يلخّص طرق وخصائص الفئة Probs:
| الاسم | النوع | الوصف |
|---|---|---|
cpu() | الطريقة | يعيد نسخة من موتر probs في ذاكرة CPU. |
numpy() | الطريقة | يعيد نسخة من موتر probs على هيئة مصفوفة NumPy. |
cuda() | الطريقة | يعيد نسخة من موتر probs في ذاكرة GPU. |
to() | الطريقة | يعيد نسخة من موتر probs باستخدام الجهاز ونوع البيانات المحددين. |
top1 | الخاصية (int) | فهرس الفئة الأولى الأعلى ترتيبًا. |
top5 | الخاصية (list[int]) | فهارس الفئات الخمس الأعلى ترتيبًا. |
top1conf | الخاصية (torch.Tensor) | درجة الثقة للفئة الأولى الأعلى ترتيبًا. |
top5conf | الخاصية (torch.Tensor) | درجات الثقة للفئات الخمس الأعلى ترتيبًا. |
لمزيد من التفاصيل، راجع وثائق الفئة Probs.
OBB#
يمكن استخدام الكائن OBB لفهرسة مربعات الإحاطة الموجّهة ومعالجتها وتحويلها إلى تنسيقات مختلفة.
from ultralytics import YOLO
# تحميل نموذج YOLO26n مُدرّب مسبقًا
model = YOLO("yolo26n-obb.pt")
# تشغيل الاستدلال على صورة
results = model("https://ultralytics.com/images/boats.jpg") # قائمة results
# عرض النتائج
for r in results:
print(r.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 بعد تطبيعها حسب حجم الصورة. |
لمزيد من التفاصيل، راجع وثائق الفئة 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)
# معالجة النتائج
# بدء خيوط يمتلك كل منها مثيل نموذج خاصًا به
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
# تحميل نموذج YOLO
model = YOLO("yolo26n.pt")
# افتح ملف الفيديو
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)
# تكرار إطارات الفيديو
while cap.isOpened():
# قراءة إطار من الفيديو
success, frame = cap.read()
if success:
# إجراء استدلال YOLO على الإطار
results = model(frame)
# تصور النتائج على الإطار
annotated_frame = results[0].plot()
# عرض الإطار المشروح
cv2.imshow("YOLO Inference", annotated_frame)
# إنهاء الحلقة إذا ضُغط على 'q'
if cv2.waitKey(1) & 0xFF == ord("q"):
break
else:
# إنهاء الحلقة عند الوصول إلى نهاية الفيديو
break
# تحرير كائن التقاط الفيديو وإغلاق نافذة العرض
cap.release()
cv2.destroyAllWindows()ينفّذ هذا البرنامج تنبؤات على كل إطار من الفيديو، ويصور النتائج، ويعرضها في نافذة. يمكن الخروج من الحلقة بالضغط على 'q'.
ما الخطوة التالية؟#
هل أنت مستعد لتجاوز استخدام نموذج مدرّب مسبقًا؟ تأكد من أن مهمتك تلائم مشكلتك، وهيّئ بياناتك باستخدام دليل مجموعات البيانات، ثم درّب النموذج عليها.
الأسئلة الشائعة#
Ultralytics YOLO نموذج متطور للكشف عن الكائنات، وتقسيم المثيلات، والتقسيم الدلالي، وتقدير العمق، والتصنيف، وتقدير الوضعية، والكشف باستخدام مربعات الإحاطة الموجّهة (OBB) في الوقت الفعلي. يتيح وضع التنبؤ للمستخدمين إجراء استدلال عالي السرعة على مصادر بيانات متنوعة، مثل الصور ومقاطع الفيديو والبث المباشر. وقد صُمم لتحقيق الأداء والتنوع، كما يوفر أوضاع المعالجة الدفعية والبث. لمزيد من التفاصيل حول ميزاته، راجع وضع التنبؤ في 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) # كائنات النتائج embeddings = model.embed(source) # قائمة تضمينات torch.Tensorبعد إجراء الاستدلال باستخدام YOLO، تحتوي كائنات
Resultsعلى طرق لعرض الصور المشروحة وحفظها. يمكنك استخدام طرق مثلresult.show()وresult.save(filename="result.jpg")لتصور النتائج وحفظها. تُنشأ تلقائيًا أي مجلدات رئيسية غير موجودة في مسار اسم الملف (مثلresult.save("path/to/result.jpg")). للاطلاع على قائمة شاملة بهذه الطرق، راجع قسم العمل مع النتائج.