تخطي إلى المحتوى

التحليلات باستخدام Ultralytics YOLO11

مقدمة

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



شاهد: كيفية إنشاء رسوم بيانية تحليلية باستخدام Ultralytics | الرسوم البيانية الخطية والمخططات الشريطية والمساحية والدائرية

عينات مرئية

الرسم البياني الخطي مخطط شريطي مخطط دائري
الرسم البياني الخطي مخطط شريطي مخطط دائري

لماذا الرسوم البيانية مهمة؟

  • تعتبر الرسوم البيانية الخطية مثالية لتتبع التغييرات على مدى فترات قصيرة وطويلة ولمقارنة التغييرات لعدة مجموعات خلال نفس الفترة.
  • من ناحية أخرى، تعتبر المخططات الشريطية مناسبة لمقارنة الكميات عبر فئات مختلفة وإظهار العلاقات بين الفئة وقيمتها العددية.
  • أخيرًا، تعد المخططات الدائرية فعالة لتوضيح النسب بين الفئات وإظهار أجزاء من الكل.

تحليلات باستخدام Ultralytics YOLO

yolo solutions analytics show=True

# Pass the source
yolo solutions analytics source="path/to/video.mp4"

# Generate the pie chart
yolo solutions analytics analytics_type="pie" show=True

# Generate the bar plots
yolo solutions analytics analytics_type="bar" show=True

# Generate the area plots
yolo solutions analytics analytics_type="area" show=True
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
out = cv2.VideoWriter(
    "analytics_output.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

# Initialize analytics object
analytics = solutions.Analytics(
    show=True,  # display the output
    analytics_type="line",  # pass the analytics type, could be "pie", "bar" or "area".
    model="yolo11n.pt",  # path to the YOLO11 model file
    # classes=[0, 2],  # display analytics for specific detection classes
)

# Process video
frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame

        # print(results)  # access the output

        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()  # destroy all opened windows

Analytics الوسائط

إليك جدول يوضح وسيطات التحليلات:

الوسيطة النوع افتراضي الوصف
model str None مسار إلى ملف نموذج Ultralytics YOLO.
analytics_type str line نوع الرسم البياني، على سبيل المثال، line, bar, area، أو pie.

يمكنك أيضًا الاستفادة من مختلف track الوسائط في Analytics الحل.

الوسيطة النوع افتراضي الوصف
tracker str 'botsort.yaml' يحدد خوارزمية التتبع المراد استخدامها، على سبيل المثال، bytetrack.yaml أو botsort.yaml.
conf float 0.3 يحدد عتبة الثقة للكشف؛ القيم الأقل تسمح بتتبع المزيد من الكائنات ولكن قد تتضمن نتائج إيجابية كاذبة.
iou float 0.5 يحدد عتبة التقاطع على الاتحاد (IoU) لتصفية الاكتشافات المتداخلة.
classes list None يقوم بتصفية النتائج حسب فهرس الفئة. على سبيل المثال، classes=[0, 2, 3] يتتبع الفئات المحددة فقط.
verbose bool True يتحكم في عرض نتائج التتبع، مما يوفر مخرجًا مرئيًا للكائنات التي يتم تتبعها.
device str None يحدد الجهاز الخاص بالاستدلال (على سبيل المثال، cpu, cuda:0 أو 0). يسمح للمستخدمين بالاختيار بين CPU أو GPU معين أو أجهزة حساب أخرى لتنفيذ النموذج.

بالإضافة إلى ذلك، يتم دعم وسائط العرض المرئي التالية:

الوسيطة النوع افتراضي الوصف
show bool False إذا True، يعرض الصور أو مقاطع الفيديو المشروحة في نافذة. مفيد للحصول على تعليقات مرئية فورية أثناء التطوير أو الاختبار.
line_width None or int None يحدد عرض خطوط مربعات الإحاطة. إذا None، يتم تعديل عرض الخط تلقائيًا بناءً على حجم الصورة. يوفر تخصيصًا مرئيًا للوضوح.

الخلاصة

يُعد فهم متى وكيفية استخدام الأنواع المختلفة من التصورات أمرًا بالغ الأهمية لتحليل البيانات بشكل فعال. تعد الرسوم البيانية الخطية والمخططات الشريطية والمخططات الدائرية أدوات أساسية يمكن أن تساعدك في نقل قصة بياناتك بشكل أكثر وضوحًا وفعالية. يوفر حل Ultralytics YOLO11 Analytics طريقة مبسطة لإنشاء هذه التصورات من نتائج الكشف عن الكائنات وتتبعها، مما يسهل استخلاص رؤى ذات مغزى من بياناتك المرئية.

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

كيف يمكنني إنشاء رسم بياني خطي باستخدام Ultralytics YOLO11 Analytics؟

لإنشاء رسم بياني خطي باستخدام Ultralytics YOLO11 Analytics، اتبع الخطوات التالية:

  1. قم بتحميل نموذج YOLO11 وافتح ملف الفيديو الخاص بك.
  2. تهيئة Analytics فئة مع تعيين النوع إلى "line".
  3. كرر عرض إطارات الفيديو، وقم بتحديث الرسم البياني الخطي بالبيانات ذات الصلة، مثل عدد الكائنات لكل إطار.
  4. احفظ الفيديو الناتج الذي يعرض الرسم البياني الخطي.

مثال:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="line",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

لمزيد من التفاصيل حول تكوين Analytics class، قم بزيارة التحليلات باستخدام Ultralytics YOLO11 القسم.

ما هي فوائد استخدام Ultralytics YOLO11 لإنشاء مخططات شريطية؟

يوفر استخدام Ultralytics YOLO11 لإنشاء مخططات شريطية العديد من المزايا:

  1. تصور البيانات في الوقت الفعلي: دمج نتائج اكتشاف الكائنات بسلاسة في مخططات شريطية للحصول على تحديثات ديناميكية.
  2. سهولة الاستخدام: واجهة برمجة تطبيقات ووظائف بسيطة تجعل تنفيذ البيانات وتصورها أمرًا سهلاً.
  3. التخصيص: خصص العناوين والتسميات والألوان والمزيد لتناسب متطلباتك الخاصة.
  4. الكفاءة: التعامل بكفاءة مع كميات كبيرة من البيانات وتحديث المخططات في الوقت الفعلي أثناء معالجة الفيديو.

استخدم المثال التالي لإنشاء مخطط شريطي:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="bar",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

لمعرفة المزيد، قم بزيارة قسم المخطط الشريطي في الدليل.

لماذا يجب عليّ استخدام Ultralytics YOLO11 لإنشاء مخططات دائرية في مشاريع تصور البيانات الخاصة بي؟

يعد Ultralytics YOLO11 خيارًا ممتازًا لإنشاء مخططات دائرية للأسباب التالية:

  1. التكامل مع الكشف عن الكائنات: دمج نتائج الكشف عن الكائنات مباشرة في الرسوم البيانية الدائرية للحصول على رؤى فورية.
  2. واجهة برمجة تطبيقات سهلة الاستخدام: سهلة الإعداد والاستخدام بأقل قدر من التعليمات البرمجية.
  3. قابل للتخصيص: خيارات تخصيص متنوعة للألوان والتسميات والمزيد.
  4. تحديثات في الوقت الفعلي: تعامل مع البيانات وقم بتصورها في الوقت الفعلي، وهو مثالي لمشاريع تحليل الفيديو.

إليك مثال سريع:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="pie",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

لمزيد من المعلومات، راجع قسم المخطط الدائري في الدليل.

هل يمكن استخدام Ultralytics YOLO11 لتتبع الكائنات وتحديث التصورات ديناميكيًا؟

نعم، يمكن استخدام Ultralytics YOLO11 لتتبع الكائنات وتحديث التصورات ديناميكيًا. وهو يدعم تتبع كائنات متعددة في الوقت الفعلي ويمكنه تحديث تصورات مختلفة مثل الرسوم البيانية الخطية والمخططات الشريطية والمخططات الدائرية بناءً على بيانات الكائنات التي يتم تتبعها.

مثال لتتبع وتحديث الرسم البياني الخطي:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="line",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

لمعرفة المزيد حول الوظائف الكاملة، راجع قسم التتبع.

ما الذي يميز Ultralytics YOLO11 عن حلول الكشف عن الأجسام الأخرى مثل OpenCV و TensorFlow؟

يتميز Ultralytics YOLO11 عن حلول الكشف عن الكائنات الأخرى مثل OpenCV و TensorFlow لأسباب متعددة:

  1. دقة فائقة: يوفر YOLO11 دقة فائقة في مهام الكشف عن الكائنات وتجزئتها وتصنيفها.
  2. سهولة الاستخدام: تتيح واجهة برمجة التطبيقات سهلة الاستخدام التنفيذ والتكامل السريع دون الحاجة إلى ترميز مكثف.
  3. أداء في الوقت الفعلي: مُحسَّن للاستدلال عالي السرعة، ومناسب للتطبيقات في الوقت الفعلي.
  4. تطبيقات متنوعة: يدعم مهام مختلفة بما في ذلك تتبع الكائنات المتعددة وتدريب النماذج المخصصة والتصدير إلى تنسيقات مختلفة مثل ONNX و TensorRT و CoreML.
  5. وثائق شاملة: وثائق واسعة النطاق و مصادر مدونة لإرشاد المستخدمين خلال كل خطوة.

لمزيد من المقارنات التفصيلية وحالات الاستخدام، استكشف مدونة Ultralytics الخاصة بنا.



📅 تم الإنشاء منذ سنة واحدة ✏️ تم التحديث منذ 4 أشهر

تعليقات