التحليلات باستخدام 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_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، اتبع الخطوات التالية:
- قم بتحميل نموذج YOLO11 وافتح ملف الفيديو الخاص بك.
- قم بتهيئة
Analytics
مع ضبط النوع على "خط". - قم بالتكرار من خلال إطارات الفيديو، مع تحديث الرسم البياني الخطي بالبيانات ذات الصلة، مثل عدد الكائنات في كل إطار.
- احفظ فيديو الإخراج الذي يعرض الرسم البياني الخطي.
مثل:
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 لإنشاء المخططات الشريطية عدة فوائد:
- Real-time Data Visualization: Seamlessly integrate object detection results into bar plots for dynamic updates.
- سهولة الاستخدام: تجعل واجهة برمجة التطبيقات والوظائف البسيطة من السهل تنفيذ البيانات وتصورها.
- التخصيص: قم بتخصيص العناوين والملصقات والألوان وغيرها لتناسب متطلباتك الخاصة.
- الكفاءة: التعامل بكفاءة مع كميات كبيرة من البيانات وتحديث المخططات في الوقت الفعلي أثناء معالجة الفيديو.
استخدم المثال التالي لإنشاء مخطط شريطي:
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 هو خيار ممتاز لإنشاء المخططات الدائرية للأسباب التالية:
- التكامل مع كشف الكائنات: دمج نتائج اكتشاف الكائنات مباشرةً في المخططات الدائرية للحصول على رؤى فورية.
- واجهة برمجة تطبيقات سهلة الاستخدام: سهلة الإعداد والاستخدام مع الحد الأدنى من التعليمات البرمجية.
- قابلة للتخصيص: خيارات تخصيص متنوعة للألوان والملصقات وغيرها.
- تحديثات في الوقت الفعلي: التعامل مع البيانات وتصورها في الوقت الفعلي، وهو أمر مثالي لمشاريع تحليلات الفيديو.
إليك مثالاً سريعاً:
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 لأسباب متعددة:
- State-of-the-art Accuracy: YOLO11 provides superior accuracy in object detection, segmentation, and classification tasks.
- سهولة الاستخدام: تسمح واجهة برمجة التطبيقات سهلة الاستخدام بالتنفيذ والتكامل السريع دون الحاجة إلى ترميز واسع النطاق.
- أداء في الوقت الحقيقي: مُحسَّن للاستدلال عالي السرعة، ومناسب لتطبيقات الوقت الحقيقي.
- تطبيقات متنوعة: يدعم العديد من المهام المختلفة بما في ذلك التتبع متعدد الكائنات، والتدريب على النماذج المخصصة، والتصدير إلى تنسيقات مختلفة مثل ONNX و TensorRT و CoreML.
- وثائق شاملة: وثائق شاملة وموارد مدونة شاملة لتوجيه المستخدمين خلال كل خطوة.
للمزيد من المقارنات التفصيلية وحالات الاستخدام، استكشف مدونةUltralytics .