Skip to main content

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

مقدمة

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



Watch: How to generate Analytical Graphs using Ultralytics | Line Graphs, Bar Plots, Area and Pie Charts

عينات مرئية

الرسم البياني الخطيالرسم البياني الشريطيالمخطط الدائري
رسم بياني خطي لتحليلات YOLO لتتبع الكائناترسم بياني شريطي لتحليلات YOLO لعدد الكائنات المكتشفةمخطط دائري لتحليلات YOLO لتوزيع الفئات

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

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

Analytics الوسائط

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

الوسيط (Argument)النوع (Type)الافتراضي (Default)الوصف (Description)
modelstrNoneالمسار إلى ملف نموذج Ultralytics YOLO.
analytics_typestr'line'نوع الرسم البياني، أي line, bar, area، أو pie.

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

الوسيط (Argument)النوع (Type)الافتراضي (Default)الوصف (Description)
trackerstr'botsort.yaml'يحدد خوارزمية التتبع المستخدمة، على سبيل المثال، bytetrack.yaml أو botsort.yaml.
conffloat0.1يحدد عتبة الثقة للاكتشافات؛ تسمح القيم الأقل بتتبع المزيد من الكائنات ولكن قد تتضمن إيجابيات كاذبة.
ioufloat0.7يضبط Intersection over Union عتبة (IoU) لتصفية الاكتشافات المتداخلة.
classeslistNoneيصفي النتائج حسب فهرس الفئة. على سبيل المثال، classes=[0, 2, 3] يتتبع فقط الفئات المحددة.
verboseboolTrueيتحكم في عرض نتائج التتبع، مما يوفر مخرجات مرئية للكائنات المتعقبة.
devicestrNoneيحدد الجهاز للاستنتاج (مثلاً، cpu, cuda:0 أو 0). يسمح للمستخدمين بالاختيار بين CPU، أو GPU معين، أو أجهزة حوسبة أخرى لتنفيذ النموذج.

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

الوسيط (Argument)النوع (Type)الافتراضي (Default)الوصف (Description)
showboolFalseإذا True، يعرض الصور أو مقاطع الفيديو المشروحة في نافذة. مفيد للحصول على ملاحظات مرئية فورية أثناء التطوير أو الاختبار.
line_widthint or NoneNoneيحدد عرض خط صناديق الإحاطة. إذا None، يتم ضبط عرض الخط تلقائياً بناءً على حجم الصورة. يوفر تخصيصاً مرئياً للوضوح.

الخلاصة

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

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

كيف يمكنني إنشاء رسم بياني خطي باستخدام Ultralytics YOLO26 للتحليلات؟

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

  1. قم بتحميل نموذج YOLO26 وافتح ملف الفيديو الخاص بك.
  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، قم بزيارة التحليلات باستخدام Ultralytics YOLO26.

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

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

  1. تصور البيانات في الوقت الفعلي: دمج نتائج اكتشاف الكائنات بسلاسة في رسوم بيانية شريطية للحصول على تحديثات ديناميكية.
  2. سهولة الاستخدام: تجعل الـ API والوظائف البسيطة من السهل تنفيذ البيانات وتصورها.
  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 YOLO26 لإنشاء مخططات دائرية في مشاريع تصور البيانات الخاصة بي؟

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

  1. التكامل مع اكتشاف الكائنات: دمج نتائج اكتشاف الكائنات مباشرة في مخططات دائرية للحصول على رؤى فورية.
  2. API سهل الاستخدام: بسيط في الإعداد والاستخدام مع الحد الأدنى من الكود.
  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 YOLO26 لتتبع الكائنات وتحديث التصورات ديناميكيًا؟

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

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

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 YOLO26 مختلفًا عن حلول اكتشاف الكائنات الأخرى مثل OpenCV و TensorFlow?

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

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

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

التعليقات