You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

15 KiB

comments description keywords
true اكتشف كيفية استخدام وضع التنبؤ YOLOv8 لمهام مختلفة. تعرّف على مصادر التنبؤ المختلفة مثل الصور ومقاطع الفيديو وتنسيقات البيانات المختلفة. Ultralytics، YOLOv8، وضع التنبؤ، مصادر التنبؤ، مهام التنبؤ، وضع التدفق، معالجة الصور، معالجة الفيديو، التعلم الآلي، الذكاء الاصطناعي

التنبؤ بالنموذج باستخدام Ultralytics YOLO

البيئة والتكامل الخاصة بنظام Ultralytics YOLO

المقدمة

في عالم التعلم الآلي ورؤية الحاسوب، يُطلق على عملية استخلاص المعنى من البيانات البصرية اسم "الاستدلال" أو "التنبؤ". يوفر YOLOv8 من Ultralytics ميزة قوية تُعرف بـوضع التنبؤ والتي تم تصميمها خصيصًا للاستدلال في الوقت الحقيقي وبأداء عال على مجموعة واسعة من مصادر البيانات.



شاهد: كيفية استخراج النتائج من نموذج Ultralytics YOLOv8 لمشاريع مخصصة.

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

التصنيع الرياضة السلامة
Vehicle Spare Parts Detection Football Player Detection People Fall Detection
كشف قطع غيار المركبات كشف لاعبي كرة القدم كشف سقوط الأشخاص

لماذا يجب استخدام Ultralytics YOLO لعمليات التنبؤ؟

فيما يلي الأسباب التي يجب أخذها في الاعتبار عند الاستفادة من وضع التنبؤ YOLOv8 لاحتياجات التنبؤ المختلفة:

  • التنوع: قادر على التنبؤ على الصور ومقاطع الفيديو، وحتى التدفقات الحية.
  • الأداء: مصمم للتطبيقات في الوقت الحقيقي والمعالجة عالية السرعة دون التضحية بالدقة.
  • سهولة الاستخدام: واجهات Python والواجهة السطرية لتسريع النشر والاختبار.
  • قابلية التخصيص العالية: إعدادات ومعلمات مختلفة لضبط سلوك التنبؤ النموذج وفقًا لمتطلباتك المحددة.

الميزات الرئيسية لوضع التنبؤ

تم تصميم وضع التنبؤ الخاص بـ YOLOv8 ليكون قويًا ومتعدد الاستخدامات، ويتميز بما يلي:

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

تُرجع نماذج Ultralytics YOLO إما قائمة Python من كائنات "النتائج" أو مُنشئ برمجياً فعّال لكائنات الـ "النتائج" في حال تم تمرير stream=True إلى النموذج أثناء عملية التنبؤ:

!!! Example "التنبؤ"

=== "العودة بقائمة واحدة باستخدام `stream=False`"
    ```python
    from ultralytics import YOLO

    # تحميل نموذج
    model = YOLO('yolov8n.pt')  # نموذج YOLOv8n المُدرَّب مسبقًا

    # تشغيل التنبؤ بدُفعة على قائمة من الصور
    results = model(['im1.jpg', 'im2.jpg'])  # العودة بقائمة من كائنات 'النتائج'

    # معالجة قائمة النتائج
    for result in results:
        boxes = result.boxes  # كائن Boxes لمخرجات bbox
        masks = result.masks  # كائن Masks لمخرجات قنوات الفصل العنقودي
        keypoints = result.keypoints  # كائن Keypoints لمخرجات الاتجاهات
        probs = result.probs  # كائن Probs لمخرجات التصنيف
    ```

=== "العودة بمُنشئ فعال مع `stream=True`"
    ```python
    from ultralytics import YOLO

    # تحميل نموذج
    model = YOLO('yolov8n.pt')  # نموذج YOLOv8n المُدرَّب مسبقًا

    # تشغيل التنبؤ بدُفعة على قائمة من الصور
    results = model(['im1.jpg', 'im2.jpg'], stream=True)  # العودة بمُنشئ فعال لكائنات 'النتائج'

    # معالجة المُنشئ الفعال
    for result in results:
        boxes = result.boxes  # كائن Boxes لمخرجات bbox
        masks = result.masks  # كائن Masks لمخرجات قنوات الفصل العنقودي
        keypoints = result.keypoints  # كائن Keypoints لمخرجات الاتجاهات
        probs = result.probs  # كائن Probs لمخرجات التصنيف
    ```

مصادر التنبؤ

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

!!! Tip "طراز"

استخدم `stream=True` لمعالجة مقاطع الفيديو الطويلة أو مجموعات البيانات الكبيرة لإدارة الذاكرة بكفاءة. عندما تكون القيمة مساوية لـ `stream=False`، يتم تخزين النتائج لجميع الإطارات أو نقاط البيانات في الذاكرة، والتي يمكن أن تتراكم بسرعة وتُسبِّب أخطاء الذاكرة غير الكافية للمدخلات الكبيرة. على النقيض من ذلك، يستخدم التدفق `stream=True` مولدًا يُبقي نتائج الإطار الحالي أو نقطة البيانات الحالية في الذاكرة فقط، مما يقلل بشكل كبير من استهلاك الذاكرة ويمنع مشكلات عدم كفاية الذاكرة.
مصدر الوسيط النوع الملاحظات
صورة 'صورة.jpg' str or Path ملف صورة واحدة.
رابط URL 'https://ultralytics.com/images/bus.jpg' str رابط URL لصورة ما.
لقطة شاشة برمجية 'الشاشة' str قم بالتقاط لقطة شاشة برمجية.
PIL Image.open('im.jpg') PIL.Image الصيغة HWC مع قنوات RGB.
OpenCV cv2.imread('im.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 'المصادر.csv' str or Path ملف CSV يحتوي على مسارات الصور أو مقاطع الفيديو أو المجلدات.
فيديو 'الفيديو.mp4' str or Path ملف فيديو بتنسيقات مثل MP4 و AVI وما إلى ذلك.
الدليل 'المسار/' str or Path مسار إلى مجلد يحتوي على صور أو مقاطع فيديو.
glob 'المسار/*.jpg' str نمط glob لمطابقة عدة ملفات. استخدم حرف * كحرطوم.
يوتيوب 'https://youtu.be/LNwODJXcvt4' str رابط URL إلى فيديو يوتيوب.
تدفق 'rtsp://example.com/media.mp4' str عنوان URL لبروتوكولات التدفق مثل RTSP و RTMP و TCP أو عنوان IP.
تدفق متعدد 'list.streams' str or Path ملف نصي *.streams مع عنوان تدفق URL في كل صف، على سبيل المثال 8 تدفقات ستعمل بحجم دُفعة 8.

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

!!! Example "مصادر التنبؤ"

=== "الصورة"
    قم بأجراء عملية التنبؤ على ملف صورة.
    ```python
    from ultralytics import YOLO

    # تحميل نموذج YOLOv8n المدرب مسبقًا
    model = YOLO('yolov8n.pt')

    # تنشيط عملية التنبؤ لملف الصورة
    source = 'المسار/إلى/الصورة.jpg'

    # الجمع بين التنبؤ على المصدر
    results = model(source)  # قائمة كائنات النتائج
    ```

=== "لقطة شاشة برمجية"
    قم بأجراء عملية التنبؤ على محتوى الشاشة الحالي كلقطة شاشة.
    ```python
    from ultralytics import YOLO

    # تحميل نموذج YOLOv8n المدرب مسبقًا
    model = YOLO('yolov8n.pt')

    # تعريف اللقطة الحالية كمصدر
    source = 'الشاشة'

    # الجمع بين التنبؤ على المصدر
    results = model(source)  # قائمة كائنات النتائج
    ```

=== "رابط URL"
    قم بأجراء عملية التنبؤ على صورة موجودة على الإنترنت أو فيديو.
    ```python
    from ultralytics import YOLO

    # تحميل نموذج YOLOv8n المدرب مسبقًا
    model = YOLO('yolov8n.pt')

    # تعريف رابط الصورة أو الفيديو على الإنترنت
    source = 'https://ultralytics.com/images/bus.jpg'

    # الجمع بين التنبؤ على المصدر
    results = model(source)  # قائمة كائنات النتائج
    ```

=== "PIL"
    قم بأجراء عملية التنبؤ على صورة مفتوحة بواسطة مكتبة Python Imaging Library (PIL).
    ```python
    from PIL import Image
    from ultralytics import YOLO

    # تحميل نموذج YOLOv8n المدرب مسبقًا
    model = YOLO('yolov8n.pt')

    # فتح صورة باستخدام PIL
    source = Image.open('المسار/إلى/الصورة.jpg')

    # الجمع بين التنبؤ على المصدر
    results = model(source)  # قائمة كائنات النتائج
    ```

=== "OpenCV"
    قم بأجراء عملية التنبؤ على صورة مُقروءة بواسطة OpenCV.
    ```python
    import cv2
    from ultralytics import YOLO

    # تحميل نموذج YOLOv8n المدرب مسبقًا
    model = YOLO('yolov8n.pt')

    # قراءة صورة باستخدام OpenCV
    source = cv2.imread('المسار/إلى/الصورة.jpg')

    # الجمع بين التنبؤ على المصدر
    results = model(source)  # قائمة كائنات النتائج
    ```

=== "numpy"
    قم بأجراء عملية التنبؤ على صورة مُمثلة كمصفوفة numpy.
    ```python
    import numpy as np
    from ultralytics import YOLO

    # تحميل نموذج YOLOv8n المدرب مسبقًا
    model = YOLO('yolov8n.pt')

    # إنشاء مصفوفة numpy عشوائية في صيغة HWC (640, 640, 3) بقيم بين [0, 255] ونوع uint8
    source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype='uint8')

    # الجمع بين التنبؤ على المصدر
    results = model(source)  # قائمة كائنات النتائج
    ```