عد الكائنات باستخدام Ultralytics YOLO11
ما هو عد الكائنات؟
Object counting with Ultralytics YOLO11 involves accurate identification and counting of specific objects in videos and camera streams. YOLO11 excels in real-time applications, providing efficient and precise object counting for various scenarios like crowd analysis and surveillance, thanks to its state-of-the-art algorithms and deep learning capabilities.
شاهد: عد الكائنات باستخدام Ultralytics YOLOv8 | شاهد: Class-wise Object Counting using Ultralytics YOLO11 |
مزايا عد الكائنات؟
- تحسين الموارد: يسهل عد الكائنات إدارة الموارد بكفاءة من خلال توفير تعدادات دقيقة وتحسين تخصيص الموارد في تطبيقات مثل إدارة المخزون.
- الأمان المحسن: يعمل عد الكائنات على تعزيز الأمان والمراقبة من خلال تتبع الكيانات وعدها بدقة ، مما يساعد في الكشف الاستباقي عن التهديدات.
- اتخاذ قرارات مستنيرة: يوفر عد الكائنات رؤى قيمة لاتخاذ القرار ، وتحسين العمليات في البيع بالتجزئة ، وإدارة حركة المرور ، والعديد من المجالات الأخرى.
تطبيقات العالم الحقيقي
السوقيات | تربيه الاحياء المائيه |
---|---|
Conveyor Belt Packets Counting Using Ultralytics YOLO11 | Fish Counting in Sea using Ultralytics YOLO11 |
مثال على عد الكائنات باستخدام 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))
# Define region points
# region_points = [(20, 400), (1080, 400)] # For line counting
region_points = [(20, 400), (1080, 404), (1080, 360), (20, 360)] # For rectangle region counting
# region_points = [(20, 400), (1080, 404), (1080, 360), (20, 360), (20, 400)] # For polygon region counting
# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Init Object Counter
counter = solutions.ObjectCounter(
show=True, # Display the output
region=region_points, # Pass region points
model="yolo11n.pt", # model="yolo11n-obb.pt" for object counting using YOLO11 OBB model.
# classes=[0, 2], # If you want to count specific classes i.e person and car with COCO pretrained model.
# show_in=True, # Display in counts
# show_out=True, # Display out counts
# line_width=2, # Adjust the line width for bounding boxes and text display
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
im0 = counter.count(im0)
video_writer.write(im0)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
جدال ObjectCounter
إليك الجدول الذي يحتوي على ObjectCounter
الحجج
اسم | نوع | افتراضي | وصف |
---|---|---|---|
model | str | None | المسار إلى Ultralytics YOLO ملف نموذج |
region | list | [(20, 400), (1260, 400)] | قائمة النقاط التي تحدد منطقة العد. |
line_width | int | 2 | سمك الخط للمربعات المحيطة. |
show | bool | False | ضع علامة للتحكم في ما إذا كنت تريد عرض دفق الفيديو أم لا. |
show_in | bool | True | علامة للتحكم في ما إذا كان سيتم عرض التعداد الداخلي على دفق الفيديو أم لا. |
show_out | bool | True | علامة للتحكم في ما إذا كان سيتم عرض الأعداد الخارجة على دفق الفيديو. |
الحجج 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؟
لعد الكائنات في مقطع فيديو باستخدام Ultralytics YOLO11، يمكنك اتباع الخطوات التالية:
- استيراد المكتبات اللازمة (
cv2
,ultralytics
). - حدد منطقة العد (على سبيل المثال، مضلع، خط، إلخ).
- قم بإعداد التقاط الفيديو وتهيئة عداد الكائنات.
- قم بمعالجة كل إطار لتتبع الأجسام وإحصائها داخل المنطقة المحددة.
إليك مثال بسيط للعد في منطقة ما:
import cv2
from ultralytics import solutions
def count_objects_in_region(video_path, output_video_path, model_path):
"""Count objects in a specific region within a video."""
cap = cv2.VideoCapture(video_path)
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 = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
region_points = [(20, 400), (1080, 404), (1080, 360), (20, 360)]
counter = solutions.ObjectCounter(show=True, region=region_points, model=model_path)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
im0 = counter.count(im0)
video_writer.write(im0)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo11n.pt")
استكشف المزيد من التكوينات والخيارات في قسم عد الكائنات.
ما هي مزايا استخدام Ultralytics YOLO11 لعد الكائنات؟
يوفر استخدام Ultralytics YOLO11 لحساب الأجسام عدة مزايا:
- تحسين الموارد: يسهّل إدارة الموارد بكفاءة من خلال توفير عمليات عدّ دقيقة، مما يساعد على تحسين تخصيص الموارد في صناعات مثل إدارة المخزون.
- تعزيز الأمن: يعزز الأمن والمراقبة من خلال تتبع الكيانات وإحصائها بدقة، مما يساعد في الكشف الاستباقي عن التهديدات.
- اتخاذ قرارات مستنيرة: يقدم رؤى قيمة لاتخاذ القرارات وتحسين العمليات في مجالات مثل البيع بالتجزئة وإدارة حركة المرور وغيرها.
للحصول على تطبيقات واقعية وأمثلة على التعليمات البرمجية، قم بزيارة قسم مزايا عد الكائنات.
كيف يمكنني حساب فئات محددة من الكائنات باستخدام Ultralytics YOLO11؟
لحساب فئات محددة من الكائنات باستخدام Ultralytics YOLO11، تحتاج إلى تحديد الفئات التي تهتم بها أثناء مرحلة التتبع. فيما يلي مثال Python :
import cv2
from ultralytics import solutions
def count_specific_classes(video_path, output_video_path, model_path, classes_to_count):
"""Count specific classes of objects in a video."""
cap = cv2.VideoCapture(video_path)
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 = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
line_points = [(20, 400), (1080, 400)]
counter = solutions.ObjectCounter(show=True, region=line_points, model=model_path, classes=classes_to_count)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
im0 = counter.count(im0)
video_writer.write(im0)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo11n.pt", [0, 2])
في هذا المثال classes_to_count=[0, 2]
مما يعني أنه يحسب كائنات الفئة 0
و 2
(على سبيل المثال، شخص وسيارة).
Why should I use YOLO11 over other object detection models for real-time applications?
Ultralytics يوفر YOLO11 العديد من المزايا مقارنةً بنماذج اكتشاف الأجسام الأخرى مثل Faster R-CNN و SSD والإصدارات السابقة YOLO :
- Speed and Efficiency: YOLO11 offers real-time processing capabilities, making it ideal for applications requiring high-speed inference, such as surveillance and autonomous driving.
- Accuracy: It provides state-of-the-art accuracy for object detection and tracking tasks, reducing the number of false positives and improving overall system reliability.
- Ease of Integration: YOLO11 offers seamless integration with various platforms and devices, including mobile and edge devices, which is crucial for modern AI applications.
- المرونة: يدعم مهام مختلفة مثل اكتشاف الكائنات وتجزئتها وتتبعها بنماذج قابلة للتكوين لتلبية متطلبات حالة استخدام محددة.
Check out Ultralytics YOLO11 Documentation for a deeper dive into its features and performance comparisons.
هل يمكنني استخدام YOLO11 للتطبيقات المتقدمة مثل تحليل الحشود وإدارة حركة المرور؟
نعم، يعد Ultralytics YOLO11 مناسبًا تمامًا للتطبيقات المتقدمة مثل تحليل الحشود وإدارة حركة المرور نظرًا لقدراته على الكشف في الوقت الحقيقي وقابليته للتوسع ومرونة التكامل. تسمح ميزاته المتقدمة بتتبع الأجسام بدقة عالية وإحصائها وتصنيفها في البيئات الديناميكية. ومن أمثلة حالات الاستخدام ما يلي:
- تحليل الحشود: مراقبة التجمعات الكبيرة وإدارتها، وضمان السلامة وتحسين تدفق الحشود.
- إدارة حركة المرور: تتبع المركبات وإحصاء عددها، وتحليل أنماط حركة المرور، وإدارة الازدحام في الوقت الفعلي.
For more information and implementation details, refer to the guide on Real World Applications of object counting with YOLO11.