التحليلات باستخدام 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، اتبع الخطوات التالية:
- قم بتحميل نموذج 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
الفصل، قم بزيارة التحليلات باستخدام Ultralytics YOLO11 📊 📊 القسم.
ما هي فوائد استخدام 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="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()
للتعرف على الوظائف الكاملة، راجع قسم التتبع.
ما الذي يجعل Ultralytics YOLO11 مختلفًا عن حلول اكتشاف الأجسام الأخرى مثل OpenCV و TensorFlow?
Ultralytics YOLO11 عن حلول اكتشاف الأجسام الأخرى مثل OpenCV و TensorFlow لأسباب متعددة:
- دقة فائقة: يوفر YOLO11 دقة فائقة في مهام اكتشاف الأجسام وتجزئتها وتصنيفها.
- سهولة الاستخدام: تسمح واجهة برمجة التطبيقات سهلة الاستخدام بالتنفيذ والتكامل السريع دون الحاجة إلى ترميز واسع النطاق.
- أداء في الوقت الحقيقي: مُحسَّن للاستدلال عالي السرعة، ومناسب لتطبيقات الوقت الحقيقي.
- تطبيقات متنوعة: يدعم العديد من المهام المختلفة بما في ذلك التتبع متعدد الكائنات، والتدريب على النماذج المخصصة، والتصدير إلى تنسيقات مختلفة مثل ONNX و TensorRT و CoreML.
- وثائق شاملة: وثائق شاملة وموارد مدونة شاملة لتوجيه المستخدمين خلال كل خطوة.
للمزيد من المقارنات التفصيلية وحالات الاستخدام، استكشف مدونةUltralytics .