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

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

مقدمة

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



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

العينات المرئية

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

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

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

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

 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_type str line نوع الرسم البياني، أي "خطي"، "عمودي"، "مساحي"، "دائري"
model str None المسار إلى Ultralytics YOLO ملف نموذج
line_width int 2 سُمك الخط للمربعات المحدودة.
show bool False علامة للتحكم في عرض دفق الفيديو من عدمه.

الحجج model.track

الجدال النوع افتراضي الوصف
source str None يحدد الدليل المصدر للصور أو مقاطع الفيديو. يدعم مسارات الملفات وعناوين URL.
persist bool False تمكين التتبع المستمر للكائنات بين الإطارات، والحفاظ على المعرفات عبر تسلسلات الفيديو.
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 يتحكم في عرض نتائج التتبع، مما يوفر إخراجًا مرئيًا للأجسام المتعقبة.

الخاتمة

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

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

كيف يمكنني إنشاء رسم بياني خطي باستخدام 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 الفصل، قم بزيارة التحليلات باستخدام Ultralytics YOLO11 📊 📊 القسم.

ما هي فوائد استخدام 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="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()

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

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

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

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

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

📅 تم إنشاؤها قبل 6 أشهر ✏️ تم التحديث منذ 25 يومًا

التعليقات