التحليلات باستخدام Ultralytics YOLO11
مقدمة
يقدم هذا الدليل نظرة عامة شاملة على ثلاثة أنواع أساسية من تصورات البيانات: الرسوم البيانية الخطية والمخططات الشريطية والمخططات الدائرية. يتضمن كل قسم إرشادات خطوة بخطوة ومقتطفات التعليمات البرمجية حول كيفية إنشاء هذه التصورات باستخدام Python.
شاهد: كيفية إنشاء رسوم بيانية تحليلية باستخدام Ultralytics | الرسوم البيانية الخطية والمخططات الشريطية والمساحية والدائرية
عينات مرئية
الرسم البياني الخطي | مخطط شريطي | مخطط دائري |
---|---|---|
![]() |
![]() |
![]() |
لماذا الرسوم البيانية مهمة؟
- تعتبر الرسوم البيانية الخطية مثالية لتتبع التغييرات على مدى فترات قصيرة وطويلة ولمقارنة التغييرات لعدة مجموعات خلال نفس الفترة.
- من ناحية أخرى، تعتبر المخططات الشريطية مناسبة لمقارنة الكميات عبر فئات مختلفة وإظهار العلاقات بين الفئة وقيمتها العددية.
- أخيرًا، تعد المخططات الدائرية فعالة لتوضيح النسب بين الفئات وإظهار أجزاء من الكل.
تحليلات باستخدام 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
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
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(
"analytics_output.avi",
cv2.VideoWriter_fourcc(*"MJPG"),
fps,
(1280, 720), # this is fixed
)
# Initialize analytics object
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], # display analytics for specific detection classes
)
# Process video
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
# print(results) # access the output
out.write(results.plot_im) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows() # destroy all opened windows
Analytics
الوسائط
إليك جدول يوضح وسيطات التحليلات:
الوسيطة | النوع | افتراضي | الوصف |
---|---|---|---|
model |
str |
None |
مسار إلى ملف نموذج Ultralytics YOLO. |
analytics_type |
str |
line |
نوع الرسم البياني، على سبيل المثال، line , bar , area ، أو pie . |
يمكنك أيضًا الاستفادة من مختلف track
الوسائط في Analytics
الحل.
الوسيطة | النوع | افتراضي | الوصف |
---|---|---|---|
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 |
يتحكم في عرض نتائج التتبع، مما يوفر مخرجًا مرئيًا للكائنات التي يتم تتبعها. |
device |
str |
None |
يحدد الجهاز الخاص بالاستدلال (على سبيل المثال، cpu , cuda:0 أو 0 ). يسمح للمستخدمين بالاختيار بين CPU أو GPU معين أو أجهزة حساب أخرى لتنفيذ النموذج. |
بالإضافة إلى ذلك، يتم دعم وسائط العرض المرئي التالية:
الوسيطة | النوع | افتراضي | الوصف |
---|---|---|---|
show |
bool |
False |
إذا True ، يعرض الصور أو مقاطع الفيديو المشروحة في نافذة. مفيد للحصول على تعليقات مرئية فورية أثناء التطوير أو الاختبار. |
line_width |
None or int |
None |
يحدد عرض خطوط مربعات الإحاطة. إذا None ، يتم تعديل عرض الخط تلقائيًا بناءً على حجم الصورة. يوفر تخصيصًا مرئيًا للوضوح. |
الخلاصة
يُعد فهم متى وكيفية استخدام الأنواع المختلفة من التصورات أمرًا بالغ الأهمية لتحليل البيانات بشكل فعال. تعد الرسوم البيانية الخطية والمخططات الشريطية والمخططات الدائرية أدوات أساسية يمكن أن تساعدك في نقل قصة بياناتك بشكل أكثر وضوحًا وفعالية. يوفر حل Ultralytics YOLO11 Analytics طريقة مبسطة لإنشاء هذه التصورات من نتائج الكشف عن الكائنات وتتبعها، مما يسهل استخلاص رؤى ذات مغزى من بياناتك المرئية.
الأسئلة الشائعة
كيف يمكنني إنشاء رسم بياني خطي باستخدام Ultralytics YOLO11 Analytics؟
لإنشاء رسم بياني خطي باستخدام Ultralytics YOLO11 Analytics، اتبع الخطوات التالية:
- قم بتحميل نموذج YOLO11 وافتح ملف الفيديو الخاص بك.
- تهيئة
Analytics
فئة مع تعيين النوع إلى "line". - كرر عرض إطارات الفيديو، وقم بتحديث الرسم البياني الخطي بالبيانات ذات الصلة، مثل عدد الكائنات لكل إطار.
- احفظ الفيديو الناتج الذي يعرض الرسم البياني الخطي.
مثال:
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
class، قم بزيارة التحليلات باستخدام Ultralytics YOLO11 القسم.
ما هي فوائد استخدام Ultralytics YOLO11 لإنشاء مخططات شريطية؟
يوفر استخدام Ultralytics YOLO11 لإنشاء مخططات شريطية العديد من المزايا:
- تصور البيانات في الوقت الفعلي: دمج نتائج اكتشاف الكائنات بسلاسة في مخططات شريطية للحصول على تحديثات ديناميكية.
- سهولة الاستخدام: واجهة برمجة تطبيقات ووظائف بسيطة تجعل تنفيذ البيانات وتصورها أمرًا سهلاً.
- التخصيص: خصص العناوين والتسميات والألوان والمزيد لتناسب متطلباتك الخاصة.
- الكفاءة: التعامل بكفاءة مع كميات كبيرة من البيانات وتحديث المخططات في الوقت الفعلي أثناء معالجة الفيديو.
استخدم المثال التالي لإنشاء مخطط شريطي:
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 YOLO11 لإنشاء مخططات دائرية في مشاريع تصور البيانات الخاصة بي؟
يعد Ultralytics YOLO11 خيارًا ممتازًا لإنشاء مخططات دائرية للأسباب التالية:
- التكامل مع الكشف عن الكائنات: دمج نتائج الكشف عن الكائنات مباشرة في الرسوم البيانية الدائرية للحصول على رؤى فورية.
- واجهة برمجة تطبيقات سهلة الاستخدام: سهلة الإعداد والاستخدام بأقل قدر من التعليمات البرمجية.
- قابل للتخصيص: خيارات تخصيص متنوعة للألوان والتسميات والمزيد.
- تحديثات في الوقت الفعلي: تعامل مع البيانات وقم بتصورها في الوقت الفعلي، وهو مثالي لمشاريع تحليل الفيديو.
إليك مثال سريع:
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 YOLO11 لتتبع الكائنات وتحديث التصورات ديناميكيًا؟
نعم، يمكن استخدام Ultralytics YOLO11 لتتبع الكائنات وتحديث التصورات ديناميكيًا. وهو يدعم تتبع كائنات متعددة في الوقت الفعلي ويمكنه تحديث تصورات مختلفة مثل الرسوم البيانية الخطية والمخططات الشريطية والمخططات الدائرية بناءً على بيانات الكائنات التي يتم تتبعها.
مثال لتتبع وتحديث الرسم البياني الخطي:
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 YOLO11 عن حلول الكشف عن الأجسام الأخرى مثل OpenCV و TensorFlow؟
يتميز Ultralytics YOLO11 عن حلول الكشف عن الكائنات الأخرى مثل OpenCV و TensorFlow لأسباب متعددة:
- دقة فائقة: يوفر YOLO11 دقة فائقة في مهام الكشف عن الكائنات وتجزئتها وتصنيفها.
- سهولة الاستخدام: تتيح واجهة برمجة التطبيقات سهلة الاستخدام التنفيذ والتكامل السريع دون الحاجة إلى ترميز مكثف.
- أداء في الوقت الفعلي: مُحسَّن للاستدلال عالي السرعة، ومناسب للتطبيقات في الوقت الفعلي.
- تطبيقات متنوعة: يدعم مهام مختلفة بما في ذلك تتبع الكائنات المتعددة وتدريب النماذج المخصصة والتصدير إلى تنسيقات مختلفة مثل ONNX و TensorRT و CoreML.
- وثائق شاملة: وثائق واسعة النطاق و مصادر مدونة لإرشاد المستخدمين خلال كل خطوة.
لمزيد من المقارنات التفصيلية وحالات الاستخدام، استكشف مدونة Ultralytics الخاصة بنا.