رؤية YOLO 2026:

توقع النموذج باستخدام Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

مقدمة#

في عالم machine learning وcomputer vision، تُعرف عملية فهم البيانات المرئية غالبًا باسم الاستدلال أو التنبؤ. توفر Ultralytics YOLO26 ميزة قوية تُعرف باسم predict mode، المصممة خصيصًا للاستدلال عالي الأداء في الوقت الفعلي عبر مجموعة واسعة من مصادر البيانات.



Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀

تطبيقات العالم الحقيقي#

التصنيعالرياضةالسلامة
كشف قطع غيار المركباتكشف لاعبي كرة القدمكشف سقوط الأشخاص

لماذا تستخدم Ultralytics YOLO للاستدلال؟#

إليك الأسباب التي تجعلك تفكر في استخدام وضع التوقع في YOLO26 لتلبية احتياجات الاستدلال المختلفة لديك:

  • تعدد الاستخدامات: القدرة على تشغيل الاستدلال على الصور، ومقاطع الفيديو، وحتى البث المباشر.
  • الأداء: مصمم للمعالجة عالية السرعة في الوقت الفعلي دون التضحية بـaccuracy.
  • سهولة الاستخدام: واجهات Python وCLI بديهية للنشر والاختبار السريع.
  • قابلية عالية للتخصيص: إعدادات ومعلمات متنوعة لضبط سلوك استدلال النموذج وفقاً لمتطلباتك المحددة.
  • جاهز للإنتاج: انشر النماذج كـUltralytics Platform inference endpoints مع التقييم التلقائي للمقياس والمراقبة، أو قم بتشغيل الاستدلال محليًا.

الميزات الرئيسية لوضع التوقع#

صُمم وضع التوقع في YOLO26 ليكون قوياً ومتعدد الاستخدامات، حيث يتميز بـ:

  • التوافق مع مصادر بيانات متعددة: سواء كانت بياناتك في شكل صور فردية، أو مجموعة من الصور، أو ملفات فيديو، أو بث فيديو في الوقت الفعلي، فإن وضع التوقع يلبي احتياجاتك.
  • وضع التدفق (Streaming Mode): استخدم ميزة التدفق لإنشاء مولد موفر للذاكرة لكائنات Results. قم بتفعيل ذلك عن طريق ضبط stream=True في طريقة استدعاء المُتنبئ. على عكس السلوك الافتراضي (stream=False)، الذي يُرجع قائمة تحتوي على جميع النتائج، فإن 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.jpg'str أو Pathملف صورة فردي.
URL'https://ultralytics.com/images/bus.jpg'strرابط URL لصورة.
لقطة شاشة'screen'strالتقاط لقطة شاشة.
PILImage.open('image.jpg')PIL.Imageتنسيق HWC مع قنوات RGB.
OpenCVcv2.imread('image.jpg')np.ndarrayتنسيق HWC مع قنوات BGR uint8 (0-255).
NumPynp.zeros((640,1280,3))np.ndarrayتنسيق HWC مع قنوات BGR uint8 (0-255).
torchtorch.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.
كاميرا ويب ✅0intفهرس جهاز الكاميرا المتصل لتشغيل الاستدلال عليه.

فيما يلي أمثلة برمجية لاستخدام كل نوع مصدر:

مصادر التوقع

تشغيل الاستدلال على ملف صورة.

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، مما يتيح حشو minimum-rectangle عندما يكون ذلك ممكنًا. يتم تغيير حجم الصورة لتناسب داخل imgsz وحشوها فقط لأقرب مضاعف خطوة، لذلك قد يكون الموتر النهائي أصغر من imgsz. يتم استخدام حشو الحد الأدنى للمستطيل فقط عندما تكون جميع الصور في الدفعة لها نفس الشكل وكان النظام الخلفي يدعم ذلك (PyTorch .pt، أو ONNX الديناميكي / Triton). وإلا، تتم حشو الصور إلى هدف imgsz الكامل.

استخدم rect=False للحشو دائماً حتى هدف imgsz الكامل. يُنصح بذلك عندما تحتاج إلى حجم إدخال ثابت ليطابق النماذج المصدرة (ONNX، وTensorRT، وما إلى ذلك).

عدد صحيح مقابل صفيف imgsz

  • يصبح integer imgsz=640 هدفًا مربعًا (640, 640) بعد تقريب الخطوة.
  • يُحدد tuple imgsz=(384, 672) هدفًا مستطيلًا. مع rect=True وauto=True، يمكن أن يكون الموتر الفعلي أصغر من هذا الهدف.

التدريب مقابل التنبؤ/التصدير

يقبل التدريب عددًا صحيحًا واحدًا فقط imgsz (يتم فرض قائمة [h, w] لتكون القيمة الأكبر). يقبل Predict والتصدير إما عددًا صحيحًا أو (height, width) tuple.

مثال
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)

وسائط الاستدلال:

الوسيطالنوعالافتراضيالوصف
sourcestr أو int أو NoneNoneيحدد مصدر البيانات للاستدلال. يمكن أن يكون مسار صورة، أو ملف فيديو، أو دليل، أو عنوان URL، أو معرف جهاز للبث المباشر. إذا تم حذفه، يتم تسجيل تحذير ويتراجع النموذج إلى أصول العرض المضمنة (ultralytics/assets، أو عنوان URL للعرض لـ OBB). يدعم نطاقًا واسعًا من التنسيقات والمصادر، مما يتيح تطبيقًا مرنًا عبر أنواع مختلفة من المدخلات.
conffloat0.25يعين الحد الأدنى لعتبة الثقة للاكتشافات. سيتم تجاهل الكائنات التي يتم اكتشافها بثقة أقل من هذه العتبة. يمكن أن يساعد تعديل هذه القيمة في تقليل النتائج الإيجابية الخاطئة.
ioufloat0.7عتبة التقاطع فوق الاتحاد (IoU) لإلغاء القمع غير الأقصى (NMS). تؤدي القيم الأقل إلى اكتشافات أقل عن طريق القضاء على الصناديق المتداخلة، وهو أمر مفيد لتقليل التكرارات.
imgszint أو tuple640هدف Letterbox. يعطي العدد الصحيح N×N مربعًا؛ ويعطي الصفحي (height, width). مع rect=True، قد يكون الموتر الفعلي أصغر من هذا الهدف بسبب حشو المستطيل الأدنى. استخدم rect=False لحجم ثابت. انظر الشكل الثابت مقابل الحد الأدنى للمستطيل.
rectboolTrueإذا كان True، فاستخدم حشو المستطيل الأدنى عندما يكون ذلك ممكنًا (دفعة بنفس الشكل وخلفية مدعومة). إذا كان False، فاحش دائمًا إلى كامل imgsz. انظر الشكل الثابت مقابل الحد الأدنى للمستطيل.
quantizeint أو strNoneدقة الاستدلال: يُمكّن 16/"fp16" استدلال FP16 على وحدات معالجة الرسومات المدعومة؛ ويعتبر 32/"fp32"/غير المعين هو FP32. يتم تكوين تقييس INT8/PTQ أثناء التصدير، ثم يُستخدم عن طريق تحميل النموذج المُصدَّر. يحل محل علامة half المُهملة.
devicestrNoneيحدد جهاز الاستدلال (على سبيل المثال، cpu، أو cuda:0، أو 0، أو npu أو npu:0). يسمح للمستخدمين بالاختيار بين وحدة معالجة مركزية CPU، أو وحدة معالجة رسومات GPU محددة، أو وحدة NPU من Huawei Ascend، أو أجهزة حسابية أخرى لتنفيذ النموذج.
dnnboolFalseإذا تم استخدام True، فإنه يستخدم وحدة OpenCV DNN بدلاً من ONNX Runtime للاستدلال بنموذج ONNX.
datastrNoneالمسار إلى ملف YAML لمجموعة البيانات (مثل coco8.yaml) المقروء فقط لـ names الخاص به، وفقط عندما لا يحمل النموذج المُحمَّل أسماء فئات خاصة به: تصدير طرف ثالث، أو تصدير Ultralytics مفصول عن بيانات التعريف التي يُشحن معها. بخلاف ذلك، يُبلغ مثل هذا النموذج عن class0 وclass1 وما إلى ذلك.
batchint1يحدد حجم الدفعة للاستدلال (يعمل فقط عندما يكون المصدر دليلًا أو ملف فيديو أو ملف .txt). يمكن أن يوفر حجم دفعة أكبر إنتاجية أعلى، مما يقصر إجمالي الوقت اللازم للاستدلال.
max_detint300الحد الأقصى لعدد الاكتشافات المسموح به لكل صورة. يحد من إجمالي عدد الكائنات التي يمكن للنموذج اكتشافها في استدلال واحد، مما يمنع المخرجات المفرطة في المشاهد الكثيفة.
vid_strideint1خطوة الإطار لمدخلات الفيديو. يسمح بتخطي الإطارات في الفيديوهات لتسريع المعالجة على حساب الدقة الزمنية. تعالج القيمة 1 كل إطار، بينما تتخطى القيم الأعلى الإطارات.
stream_bufferboolFalseيحدد ما إذا كان سيتم وضع الإطارات الواردة في طابور لبث الفيديو. إذا كان False، يتم إسقاط الإطارات القديمة لاستيعاب الإطارات الجديدة (متحسن لتطبيقات الوقت الفعلي). إذا كان True، فإنه يضع الإطارات الجديدة في مخزن مؤقت، مما يضمن عدم تخطي أي إطارات، ولكنه سيسبب تأخيرًا (latency) إذا كان معدل الإطارات للاستدلال أقل من معدل إطارات البث.
visualizeboolFalseيحفظ خريطة حرارية لتفعيل الفئات بجانب كل تنبؤ، مما يوضح البكسلات التي رفعت درجات الفئة المتوقعة. يحترم conf و classes، بحيث يربط classes=[0] تلك الفئة فقط. متاح فقط لنماذج Ultralytics المصنوعة بـ PyTorch.
augmentboolFalseيُفعل تحسين وقت الاختبار (TTA) للتنبؤات، مما قد يحسن متانة الكشف على حساب سرعة الاستدلال. متاح فقط لنماذج Ultralytics المصنوعة بـ PyTorch.
agnostic_nmsboolFalseيُفَعِّل كتم التداخل غير الأقصى (NMS) المستقل عن الفئة، حيث يكتم الصناديق المتراكبة ذات النقاط الأقل عبر الفئات المختلفة بدلاً من الفئة نفسها فقط. مفيد في سيناريوهات الكشف متعدد الفئات حيث يكون تداخل الفئات شائعاً. بالنسبة للنماذج ذات النهاية إلى النهاية (YOLO26، YOLOv10)، فإن هذا يمنع فقط ظهور نفس الاكتشاف بتسميات فئات متعددة (نسخ متطابقة IoU=1.0) ولا ينفذ كتماً يعتمد على عتبة IoU بين الصناديق المتميزة.
classeslist[int]Noneيُصفي التنبؤات إلى مجموعة من معرفات الفئات. سيتم إرجاع الاكتشافات التي تنتمي إلى الفئات المحددة فقط. مفيد للتركيز على الكائنات ذات الصلة في مهام الاكتشاف متعدد الفئات.
retina_masksboolFalseيُرجع أقنعة تجزئة عالية الدقة. ستتطابق الأقنعة المُرجعة (masks.data) مع حجم الصورة الأصلي إذا تم تمكينها. إذا تم تعطيلها، فستكون لها حجم الصورة المستخدم أثناء الاستدلال.
embedlist[int]Noneيحدد الطبقات التي يتم استخراج متجهات الخصائص أو الـ embeddings منها. استخدم model.embed(source) لتضمينات الطبقة قبل الأخيرة، أو model.predict(source, embed=[layer]) لتحديد طبقات معينة. مفيد للمهام اللاحقة مثل التجميع أو البحث عن التشابه. متاح فقط لنماذج Ultralytics المصنوعة بـ PyTorch.
projectstrNoneاسم مجلد المشروع حيث يتم حفظ مخرجات التنبؤ إذا تم تمكين save.
namestrNoneاسم تشغيل التنبؤ. يُستخدم لإنشاء مجلد فرعي داخل مجلد المشروع، حيث يتم تخزين مخرجات التنبؤ إذا تم تمكين save.
streamboolFalseيُمكّن المعالجة الموفرة للذاكرة للفيديوهات الطويلة أو الصور العديدة عن طريق إرجاع مولد لكائنات النتائج بدلاً من تحميل جميع الإطارات في الذاكرة دفعة واحدة.
verboseboolTrueيتحكم في ما إذا كان يجب عرض سجلات الاستدلال التفصيلية في الطرفية، مما يوفر ملاحظات في الوقت الفعلي حول عملية التنبؤ.
compilebool أو strFalseيمكّن تجميع رسم البياني PyTorch 2.x torch.compile باستخدام backend='inductor'. يقبل True"default"، False ← تعطيل، أو وضع نصي مثل "default"، "reduce-overhead"، "max-autotune-no-cudagraphs". يتراجع إلى الوضع الحماسي (eager) مع تحذير إذا كان غير مدعوم.
channels_lastboolFalseيستخدم تنسيق الذاكرة channels_last (NHWC) لعمليات الالتفاف أثناء الاستدلال، مما يسّرع وحدات معالجة الرسومات CUDA Tensor Core دون أي تغيير في النتائج. ينطبق على نماذج PyTorch الأصلية فقط؛ ويتم تجاهله لوحدة المعالجة المركزية (CPU)، و MPS، والتنسيقات المصدرة مثل TensorRT و ONNX.
end2endboolNoneيتجاوز وضع النهاية إلى النهاية في نماذج YOLO التي تدعم الاستدلال الخالي من NMS (مثل YOLO26 وYOLOv10). يتيح لك تعيينه إلى False إجراء التنبؤ باستخدام خط أنابيب NMS التقليدي، مما يتيح لك أيضًا الاستفادة من وسيطة iou. انظر دليل الكشف من النهاية إلى النهاية للحصول على التفاصيل.

وسائط التصور:

الوسيطالنوعالافتراضيالوصف
showboolFalseإذا كان True، يعرض الصور أو الفيديوهات المشروحة في نافذة. مفيد للحصول على ملاحظات مرئية فورية أثناء التطوير أو الاختبار.
saveboolFalse or Trueيُمكن حفظ الصور أو الفيديوهات المرفقة في ملفات. مفيد للتوثيق أو المزيد من التحليل أو مشاركة النتائج. الافتراضي هو True عند استخدام CLI و False عند الاستخدام في Python.
save_framesboolFalseعند معالجة الفيديوهات، يحفظ الإطارات الفردية كصور. مفيد لاستخراج إطارات معينة أو للتحليل التفصيلي إطاراً بإطار.
save_txtboolFalseيحفظ نتائج الكشف في ملف نصي، باتباع التنسيق [class] [x_center] [y_center] [width] [height] [confidence]. مفيد للتكامل مع أدوات التحليل الأخرى.
save_confboolFalseيتضمن درجات الثقة في الملفات النصية المحفوظة. يعزز التفاصيل المتاحة للمعالجة اللاحقة والتحليل.
save_cropboolFalseيحفظ صوراً مقصوصة للاكتشافات. مفيد لزيادة مجموعة البيانات أو التحليل أو إنشاء مجموعات بيانات مركزة لكائنات معينة.
show_labelsboolTrueيعرض تصنيفات كل اكتشاف في المخرجات المرئية. يوفر فهماً فورياً للكائنات المكتشفة.
show_confboolTrueيعرض درجة الثقة لكل اكتشاف بجانب التصنيف. يوفر رؤية حول مدى يقين النموذج في كل اكتشاف.
show_boxesboolTrueيرسم صناديق الإحاطة حول الكائنات المكتشفة. ضروري للتحديد البصري وموقع الكائنات في الصور أو إطارات الفيديو.
line_widthint or NoneNoneيحدد عرض خط صناديق الإحاطة. إذا كان None، يتم ضبط عرض الخط تلقائيًا بناءً على حجم الصورة. يوفر تخصيصًا مرئيًا للوضوح.

تنسيقات الصور والفيديو#

تدعم YOLO26 تنسيقات الصور والفيديو المختلفة، كما هو محدد في ultralytics/data/utils.py. راجع الجداول أدناه للحصول على اللاحقات الصالحة وأوامر التنبؤ النموذجية.

الصور#

يحتوي الجدول أدناه على تنسيقات صور Ultralytics الصالحة.

ملاحظة

تتطلب تنسيقات HEIC/HEIF استخدام pi-heif، والذي يتم تثبيته تلقائيًا عند الاستخدام الأول. يتم دعم AVIF بشكل أصلي بواسطة Pillow.

لواحق الصورمثال على أمر التنبؤالمرجع
.avifyolo predict source=image.avifAV1 Image File Format
.bmpyolo predict source=image.bmpMicrosoft BMP File Format
.dngyolo predict source=image.dngAdobe DNG
.heicyolo predict source=image.heicHigh Efficiency Image Format
.heifyolo predict source=image.heifHigh Efficiency Image Format
.jp2yolo predict source=image.jp2JPEG 2000
.jpegyolo predict source=image.jpegJPEG
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpoMulti Picture Object
.pngyolo predict source=image.pngPortable Network Graphics
.tifyolo predict source=image.tifTag Image File Format
.tiffyolo predict source=image.tiffTag Image File Format
.webpyolo predict source=image.webpWebP

مقاطع الفيديو#

يحتوي الجدول أدناه على تنسيقات فيديو Ultralytics الصالحة.

لواحق الفيديومثال على أمر التنبؤالمرجع
.asfyolo predict source=video.asfAdvanced Systems Format
.aviyolo predict source=video.aviAudio Video Interleave
.gifyolo predict source=video.gifGraphics Interchange Format
.m4vyolo predict source=video.m4vMPEG-4 Part 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movQuickTime File Format
.mp4yolo predict source=video.mp4MPEG-4 Part 14 - Wikipedia
.mpegyolo predict source=video.mpegMPEG-1 Part 2
.mpgyolo predict source=video.mpgMPEG-1 Part 2
.tsyolo predict source=video.tsMPEG Transport Stream
.wmvyolo predict source=video.wmvWindows Media Video
.webmyolo predict source=video.webmWebM Project

العمل مع النتائج#

ستقوم جميع استدعاءات 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 السمات التالية:

السمة (Attribute)النوعالوصف
orig_imgnp.ndarrayالصورة الأصلية كمصفوفة NumPy.
orig_shapetupleأبعاد الصورة الأصلية بتنسيق (الارتفاع، العرض).
boxesBoxes, optionalكائن Boxes يحتوي على مربعات الإحاطة (bounding boxes) للكشف.
masksMasks, optionalكائن Masks يحتوي على أقنعة الكشف.
probsProbs, optionalكائن Probs يحتوي على احتمالات كل فئة لمهمة التصنيف.
keypointsKeypoints, optionalكائن Keypoints يحتوي على النقاط الرئيسية المكتشفة لكل كائن.
obbOBB, optionalكائن OBB يحتوي على مربعات إحاطة موجهة (oriented bounding boxes).
semantic_maskSemanticMask, optionalكائن SemanticMask يحتوي على خريطة فئات كثيفة لكل بكسل.
speeddictقاموس بسرعات المعالجة الأولية، والاستنتاج، والمعالجة اللاحقة بالملي ثانية لكل صورة.
namesdictقاموس يربط معرفات الفئات بأسماء الفئات.
pathstrمسار ملف الصورة.
save_dirstr, optionalالدليل لحفظ النتائج.

النتائج حسب المهمة#

تعتمد الحقول التي يتم ملؤها أدناه على مهمة نموذجك — compare detection, segmentation, semantic segmentation, depth estimation, classification, pose, and OBB إذا لم تكن قد اخترت واحدة بعد. يُرجع كل تنبؤ كائن Results واحدًا لكل صورة أو إطار. الحقول المشتركة أعلاه متاحة دائماً، بينما يتم تخزين بيانات التنبؤ الخاصة بالمهمة في الحقول أدناه. تكون موترات الإحداثيات، والثقة، والاحتمالات عبارة عن torch.float32 ما لم يتم استخدام الدقة النصفية، وعندها تصبح torch.float16. بعد result.numpy()، تصبح الموترات مصفوفات NumPy مع أنواع بيانات NumPy مطابقة. أقنعة المثيلات هي موترات ثنائية torch.uint8، بينما تستخدم الأقنعة الدلالية أصغر نوع بيانات صحيح عملي لمعرفات الفئات: torch.uint8، أو torch.int16، أو torch.int32، اعتمادًا على عدد الفئات.

السمة (Attribute)النوعالشكلالوصف
result.boxesBoxes(N)مربعات الكشف.
result.boxes.datatorch.float32(N,6/7)[x1,y1,x2,y2,conf,cls] الخام، بالإضافة إلى معرف مسار اختياري.
result.boxes.xyxytorch.float32(N,4)مربعات بكسل xyxy.
result.boxes.conftorch.float32(N,)درجات الثقة.
result.boxes.clstorch.float32(N,)معرفات الفئات؛ يتم تحويلها إلى int للأسماء.

تمتلك كائنات Results الطرق التالية:

الطريقة (Method)نوع الإرجاعالوصف
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 DataFrame.
to_csv()strتحويل نتائج الكشف إلى تنسيق CSV.
to_json()strتحويل نتائج الكشف إلى تنسيق JSON.

لمزيد من التفاصيل، راجع توثيق فئة Results.

صناديق (Boxes)#

يمكن استخدام كائن 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()الطريقة (Method)نقل الكائن إلى ذاكرة CPU.
numpy()الطريقة (Method)تحويل الكائن إلى مصفوفة NumPy.
cuda()الطريقة (Method)نقل الكائن إلى ذاكرة CUDA.
to()الطريقة (Method)نقل الكائن إلى الجهاز المحدد.
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 للفهرسة، ومعالجة، وتحويل الأقنعة إلى أجزاء.

الأقنعة (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()الطريقة (Method)إرجاع موتور الأقنعة على ذاكرة CPU.
numpy()الطريقة (Method)إرجاع موتور الأقنعة كمصفوفة NumPy.
cuda()الطريقة (Method)إرجاع موتور الأقنعة على ذاكرة GPU.
to()الطريقة (Method)إرجاع موتور الأقنعة مع الجهاز ونوع البيانات المحدد.
xynالخاصية (list[np.ndarray])قائمة بمضلعات الأقنعة المطبعة.
xyالخاصية (list[np.ndarray])قائمة بمضلعات الأقنعة بإحداثيات البكسل.

لمزيد من التفاصيل، راجع توثيق فئة Masks.

SemanticMask#

يخزن SemanticMask خريطة فئة كثيفة واحدة لنتائج التجزئة الدلالية. على عكس Masks، فهي لا تحتوي على قناع ثنائي واحد لكل كائن ولا توفر مساعدات للمضلعات.

SemanticMask
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()الطريقة (Method)إرجاع موتور القناع الدلالي على ذاكرة CPU.
numpy()الطريقة (Method)إرجاع موتور القناع الدلالي كمصفوفة NumPy.
cuda()الطريقة (Method)إرجاع موتور القناع الدلالي على ذاكرة GPU.
to()الطريقة (Method)إرجاع موتور القناع الدلالي مع الجهاز ونوع البيانات المحدد.

النقاط الرئيسية (Keypoints)#

يمكن استخدام كائن 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()الطريقة (Method)إرجاع موتور النقاط الرئيسية على ذاكرة CPU.
numpy()الطريقة (Method)إرجاع موتور النقاط الرئيسية كمصفوفة NumPy.
cuda()الطريقة (Method)إرجاع موتور النقاط الرئيسية على ذاكرة GPU.
to()الطريقة (Method)إرجاع موتر النقاط الرئيسية (keypoints tensor) بالجهاز (device) ونوع البيانات (dtype) المحددين.
xynالخاصية (torch.Tensor)قائمة من النقاط الرئيسية المطبّعة (normalized) ممثلة كموترات.
xyالخاصية (torch.Tensor)قائمة من النقاط الرئيسية بإحداثيات البكسل ممثلة كموترات.
confالخاصية (torch.Tensor)إرجاع قيم ثقة النقاط الرئيسية إذا كانت متاحة، وإلا يتم إرجاع None.

لمزيد من التفاصيل، راجع توثيق فئة Keypoints.

Probs#

يمكن استخدام كائن Probs للحصول على مؤشرات ودرجات التصنيف top1 وtop5.

Probs
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()الطريقة (Method)إرجاع نسخة من موتر الاحتمالات (probs tensor) على ذاكرة CPU.
numpy()الطريقة (Method)إرجاع نسخة من موتر الاحتمالات (probs tensor) كمصفوفة NumPy.
cuda()الطريقة (Method)إرجاع نسخة من موتر الاحتمالات (probs tensor) على ذاكرة GPU.
to()الطريقة (Method)إرجاع نسخة من موتر الاحتمالات (probs tensor) بالجهاز (device) ونوع البيانات (dtype) المحددين.
top1الخاصية (int)مؤشر الفئة الأولى (top 1).
top5الخاصية (list[int])مؤشرات الفئات الخمس الأولى (top 5).
top1confالخاصية (torch.Tensor)ثقة الفئة الأولى (top 1).
top5confالخاصية (torch.Tensor)ثقات الفئات الخمس الأولى (top 5).

لمزيد من التفاصيل، راجع توثيق فئة Probs.

OBB#

يمكن استخدام كائن 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()الطريقة (Method)نقل الكائن إلى ذاكرة CPU.
numpy()الطريقة (Method)تحويل الكائن إلى مصفوفة NumPy.
cuda()الطريقة (Method)نقل الكائن إلى ذاكرة CUDA.
to()الطريقة (Method)نقل الكائن إلى الجهاز المحدد.
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 مُطبّعة (normalized) حسب حجم الصورة.

لمزيد من التفاصيل، راجع توثيق فئة 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() وسائط مختلفة لتخصيص الإخراج:

الوسيطالنوعالوصفالافتراضي
confboolتضمين درجات ثقة الكشف.True
line_widthfloatعرض الخط لمربعات الإحاطة. يتناسب مع حجم الصورة إذا كان None.None
font_sizefloatحجم خط النص. يتناسب مع حجم الصورة إذا كان None.None
fontstrاسم الخط للتعليقات النصية.'Arial.ttf'
pilboolإرجاع الصورة ككائن صورة PIL.False
imgnp.ndarray | torch.Tensorصورة بديلة. يجب أن تكون الموثورات (Tensors) متجاورة من نوع HWC BGR uint8.None
kpt_radiusintنصف قطر النقاط الرئيسية المرسومة.5
kpt_lineboolتوصيل النقاط الرئيسية بخطوط.True
labelsboolتضمين تسميات الفئات في التعليقات.True
boxesboolتركيب صناديق الإحاطة على الصورة.True
masksboolتركيب الأقنعة على الصورة.True
probsboolتضمين احتمالات التصنيف.True
showboolعرض الصورة المعنونة مباشرة باستخدام عارض الصور الافتراضي.False
saveboolاحفظ الصورة المعلقة في ملف محدد بواسطة filename.False
filenamestrمسار واسم الملف لحفظ الصورة المعلقة إذا كان save هو True.None
color_modestrتحديد وضع اللون، على سبيل المثال، 'instance' أو 'class'.'class'
txt_colortuple[int, int, int]لون نص BGR لصندوق الإحاطة وتسمية تصنيف الصورة.(255, 255, 255)

الاستدلال الآمن خيطياً#

يعد ضمان سلامة الخيوط (thread safety) أثناء الاستدلال أمراً بالغ الأهمية عند تشغيل نماذج YOLO متعددة بالتوازي عبر خيوط مختلفة. يضمن الاستدلال الآمن للخيوط أن تكون تنبؤات كل خيط معزولة ولا تتداخل مع بعضها البعض، مما يتجنب ظروف السباق (race conditions) ويضمن مخرجات متسقة وموثوقة.

عند استخدام نماذج 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 Thread-Safe Inference Guide. سيوفر لك هذا الدليل جميع المعلومات اللازمة لتجنب الأخطاء الشائعة وضمان تشغيل الاستدلال متعدد الترابط بسلاسة.

حلقة مصدر التدفق for#

إليك برنامج نصي بلغة Python باستخدام OpenCV (cv2) وYOLO لتشغيل الاستدلال على إطارات الفيديو. يفترض هذا البرنامج النصي أنك قمت بالفعل بتثبيت الحزم اللازمة (opencv-python وultralytics).

حلقة البث for
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'.

ما هي الخطوة التالية#

هل أنت مستعد لتجاوز النموذج المدرب مسبقًا؟ Confirm your task fits your problem، وقم بتنسيق بياناتك الخاصة باستخدام Datasets guide، ثم train on it.

الأسئلة الشائعة#

  • Ultralytics YOLO هو نموذج متطور لـobject detection في الوقت الفعلي، وinstance segmentation، وsemantic segmentation، وdepth estimation، وclassification. يتيح predict mode الخاص به للمستخدمين إجراء استدلال عالي السرعة على مصادر بيانات مختلفة مثل الصور، ومقاطع الفيديو، والبث المباشر. تم تصميم هذا النموذج ليناسب الأداء والتنوع، كما أنه يوفر معالجة على دفعات وأوضاع بث. لمزيد من التفاصيل حول ميزاته، راجع Ultralytics YOLO predict mode.

  • يمكن لـ Ultralytics YOLO معالجة نطاق واسع من مصادر البيانات، بما في ذلك الصور الفردية، ومقاطع الفيديو، والأدلة، وعناوين URL، والتدفقات. يمكنك تحديد مصدر البيانات في استدعاء model.predict(). على سبيل المثال، استخدم 'image.jpg' لصورة محلية أو 'https://ultralytics.com/images/bus.jpg' لعنوان URL. تحقق من الأمثلة التفصيلية لمختلف inference sources في الوثائق.

  • لتحسين سرعة الاستدلال وإدارة الذاكرة بكفاءة، يمكنك استخدام وضع التدفق عن طريق ضبط stream=True في طريقة استدعاء المُتنبئ. يُنشئ وضع التدفق مولدًا موفرًا للذاكرة لكائنات Results بدلاً من تحميل كافة الإطارات في الذاكرة. لمعالجة مقاطع الفيديو الطويلة أو مجموعات البيانات الكبيرة، يُعد وضع التدفق مفيدًا بشكل خاص. تعرف على المزيد حول streaming mode.

  • يدعم الأسلوب model.predict() في YOLO وسائط مختلفة مثل conf وiou وimgsz وdevice والمزيد. تتيح لك هذه الوسائط تخصيص عملية الاستدلال، وتعيين معلمات مثل عتبات الثقة، وحجم الصورة، والجهاز المستخدم للحساب. يمكن العثور على أوصاف تفصيلية لهذه الوسائط في قسم inference arguments.

  • استخدم 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")). للحصول على قائمة شاملة لهذه الطرق، راجع قسم working with results.

التعليقات