انتقل إلى المحتوى

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

مقدمة

This guide provides a comprehensive overview of three fundamental types of data visualizations: line graphs, bar plots, and pie charts. Each section includes step-by-step instructions and code snippets on how to create these visualizations using Python.



شاهد: How to generate Analytical Graphs using Ultralytics | Line Graphs, Bar Plots, Area and Pie Charts

عينات بصرية

رسم بياني خطيقطعة أرض باررسم بياني دائري
رسم بياني خطيقطعة أرض باررسم بياني دائري

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

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

أمثلة على التحليلات

 yolo solutions analytics show=True

# pass the source
yolo solutions analytics source="path/to/video/file.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/file.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))

# Video writer
out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1920, 1080),  # This is fixed
)

# Init analytics
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],  # If you want to count specific classes i.e person and car with COCO pretrained model.
)

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

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

جدال Analytics

إليك الجدول الذي يحتوي على Analytics الحجج

اسمنوعافتراضيوصف
analytics_typestrlineنوع الرسم البياني، أي "خطي"، "عمودي"، "مساحي"، "دائري"
modelstrNoneالمسار إلى Ultralytics YOLO ملف نموذج
line_widthint2سمك الخط للمربعات المحيطة.
showboolFalseضع علامة للتحكم في ما إذا كنت تريد عرض دفق الفيديو أم لا.

الحجج model.track

جدالنوعافتراضيوصف
sourcestrNoneيحدد الدليل المصدر للصور أو مقاطع الفيديو. يدعم مسارات الملفات وعناوين URL.
persistboolFalseتمكين التتبع المستمر للكائنات بين الإطارات، والحفاظ على المعرفات عبر تسلسلات الفيديو.
trackerstrbotsort.yamlيحدد خوارزمية التتبع المراد استخدامها، على سبيل المثال, bytetrack.yaml أو botsort.yaml.
conffloat0.3تعيين عتبة الثقة للاكتشافات؛ تسمح القيم المنخفضة بتتبع المزيد من الكائنات ولكنها قد تتضمن نتائج إيجابية كاذبة.
ioufloat0.5يضبط عتبة التقاطع على الاتحاد (IoU) لتصفية الاكتشافات المتداخلة.
classeslistNoneتصفية النتائج حسب فهرس الفئة. على سبيل المثال, classes=[0, 2, 3] يتتبع الفئات المحددة فقط.
verboseboolTrueيتحكم في عرض نتائج التتبع، مما يوفر إخراجًا مرئيًا للأجسام المتعقبة.

استنتاج

يعد فهم متى وكيف تستخدم أنواعًا مختلفة من التصورات أمرًا بالغ الأهمية لتحليل البيانات بفعالية. تُعد الرسوم البيانية الخطية والمخططات الشريطية والمخططات الدائرية أدوات أساسية يمكن أن تساعدك في نقل قصة بياناتك بشكل أكثر وضوحًا وفعالية.

الأسئلة المتداولة

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

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

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

مثل:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("Path/to/video/file.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,
    (1920, 1080),  # 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
        im0 = analytics.process_data(im0, frame_count)  # update analytics graph every frame
        out.write(im0)  # write the video file
    else:
        break

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

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

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

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

  1. Real-time Data Visualization: Seamlessly integrate object detection results into bar plots for dynamic updates.
  2. سهولة الاستخدام: تجعل واجهة برمجة التطبيقات والوظائف البسيطة من السهل تنفيذ البيانات وتصورها.
  3. التخصيص: قم بتخصيص العناوين والملصقات والألوان وغيرها لتناسب متطلباتك الخاصة.
  4. الكفاءة: التعامل بكفاءة مع كميات كبيرة من البيانات وتحديث المخططات في الوقت الفعلي أثناء معالجة الفيديو.

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

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("Path/to/video/file.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,
    (1920, 1080),  # 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
        im0 = analytics.process_data(im0, frame_count)  # update analytics graph every frame
        out.write(im0)  # 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/file.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,
    (1920, 1080),  # 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
        im0 = analytics.process_data(im0, frame_count)  # update analytics graph every frame
        out.write(im0)  # 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/file.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,
    (1920, 1080),  # 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
        im0 = analytics.process_data(im0, frame_count)  # update analytics graph every frame
        out.write(im0)  # write the video file
    else:
        break

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

للتعرف على الوظائف الكاملة، راجع قسم التتبع.

What makes Ultralytics YOLO11 different from other object detection solutions like OpenCV and TensorFlow?

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

  1. State-of-the-art Accuracy: YOLO11 provides superior accuracy in object detection, segmentation, and classification tasks.
  2. سهولة الاستخدام: تسمح واجهة برمجة التطبيقات سهلة الاستخدام بالتنفيذ والتكامل السريع دون الحاجة إلى ترميز واسع النطاق.
  3. أداء في الوقت الحقيقي: مُحسَّن للاستدلال عالي السرعة، ومناسب لتطبيقات الوقت الحقيقي.
  4. تطبيقات متنوعة: يدعم العديد من المهام المختلفة بما في ذلك التتبع متعدد الكائنات، والتدريب على النماذج المخصصة، والتصدير إلى تنسيقات مختلفة مثل ONNX و TensorRT و CoreML.
  5. وثائق شاملة: وثائق شاملة وموارد مدونة شاملة لتوجيه المستخدمين خلال كل خطوة.

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

📅 Created 6 months ago ✏️ Updated 7 days ago

التعليقات