Meet YOLO26: next-gen vision AI.

Link to this sectionالتحليلات باستخدام Ultralytics YOLO26#

Link to this sectionمقدمة#

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



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

Link to this sectionنماذج مرئية#

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

Link to this sectionلماذا تعتبر الرسوم البيانية مهمة#

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

Link to this sectionوسائط Analytics#

فيما يلي جدول يوضح وسائط Analytics:

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

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

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

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

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

Link to this sectionالخلاصة#

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

Link to this sectionالأسئلة الشائعة#

Link to this sectionكيف يمكنني إنشاء رسم بياني خطي باستخدام Ultralytics YOLO26 Analytics؟#

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

  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.

Link to this sectionما هي فوائد استخدام 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()

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

Link to this sectionلماذا يجب أن أستخدم Ultralytics YOLO26 لإنشاء مخططات دائرية في مشاريع تصور البيانات الخاصة بي؟#

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

  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()

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

Link to this sectionهل يمكن استخدام 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()

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

Link to this sectionما الذي يجعل Ultralytics YOLO26 مختلفاً عن حلول اكتشاف الكائنات الأخرى مثل OpenCV وTensorFlow؟#

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

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

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

التعليقات