عد الكائنات باستخدام Ultralytics YOLO11
ما هو عد الكائنات؟
عدّ الكائنات باستخدام Ultralytics YOLO11 يتضمن تحديدًا دقيقًا للأجسام المحددة في مقاطع الفيديو وتدفقات الكاميرا وعدّها. YOLO11 يتفوق في تطبيقات الوقت الفعلي، حيث يوفر عدّ الأجسام بكفاءة ودقة لمختلف السيناريوهات مثل تحليل الحشود والمراقبة، وذلك بفضل أحدث الخوارزميات وقدرات التعلم العميق.
شاهد: عد الكائنات على مستوى الفئة باستخدام Ultralytics YOLOv8
مزايا عد الكائنات
- تحسين الموارد: يعمل عد الكائنات على تسهيل إدارة الموارد بكفاءة من خلال توفير عدّ دقيق، وتحسين تخصيص الموارد في تطبيقات مثل إدارة المخزون.
- تعزيز الأمن: يعمل عدّ الكائنات على تعزيز الأمن والمراقبة من خلال تتبع الكيانات وعدّها بدقة، مما يساعد في الكشف الاستباقي عن التهديدات.
- اتخاذ قرارات مستنيرة: يوفر عدّ الكائنات رؤى قيمة لاتخاذ القرارات، وتحسين العمليات في مجال البيع بالتجزئة وإدارة حركة المرور ومختلف المجالات الأخرى.
التطبيقات الواقعية
الخدمات اللوجستية | تربية الأحياء المائية |
---|---|
![]() |
![]() |
عد حزم الحزام الناقل باستخدام Ultralytics YOLO11 | عد الأسماك في البحر باستخدام Ultralytics YOLO11 |
عد الكائنات باستخدام Ultralytics YOLO
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# region_points = [(20, 400), (1080, 400)] # line counting
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)] # rectangle region
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)] # polygon region
# 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))
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize object counter object
counter = solutions.ObjectCounter(
show=True, # display the output
region=region_points, # pass region points
model="yolo11n.pt", # model="yolo11n-obb.pt" for object counting with OBB model.
# classes=[0, 2], # count specific classes i.e. person and car with COCO pretrained model.
# tracker="botsort.yaml", # choose trackers i.e "bytetrack.yaml"
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(im0)
# print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
ObjectCounter
الحجج
إليك الجدول الذي يحتوي على ObjectCounter
الحجج
الجدال | النوع | افتراضي | الوصف |
---|---|---|---|
model |
str |
None |
المسار إلى ملف نموذج Ultralytics YOLO Model File. |
show_in |
bool |
True |
علامة للتحكم في ما إذا كان سيتم عرض التعداد الداخلي على دفق الفيديو أم لا. |
show_out |
bool |
True |
علامة للتحكم في ما إذا كان سيتم عرض الأعداد الخارجة على دفق الفيديو. |
region |
list |
[(20, 400), (1260, 400)] |
قائمة النقاط التي تحدد منطقة العد. |
إن ObjectCounter
يسمح الحل باستخدام العديد من track
الحجج
الجدال | النوع | افتراضي | الوصف |
---|---|---|---|
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 ؟
لعد الكائنات في مقطع فيديو باستخدام 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, 400), (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 processing is complete.")
break
results = counter(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo11n.pt")
لمزيد من التكوينات والخيارات المتقدمة، راجع حل RegionCounter لحساب الكائنات في مناطق متعددة في وقت واحد.
ما هي مزايا استخدام Ultralytics YOLO11 لعد الكائنات؟
يوفر استخدام Ultralytics YOLO11 لعدّ الكائنات العديد من المزايا:
- تحسين الموارد: يسهّل إدارة الموارد بكفاءة من خلال توفير عمليات عدّ دقيقة، مما يساعد على تحسين تخصيص الموارد في صناعات مثل إدارة المخزون.
- تعزيز الأمن: يعمل على تعزيز الأمن والمراقبة من خلال تتبع الكيانات وإحصائها بدقة، مما يساعد في الكشف الاستباقي عن التهديدات وأنظمة الأمن.
- اتخاذ قرارات مستنيرة: يقدم رؤى قيمة لاتخاذ القرارات وتحسين العمليات في مجالات مثل البيع بالتجزئة وإدارة حركة المرور وغيرها.
- المعالجة في الوقت الحقيقي: تتيح بنية YOLO11 إمكانية الاستدلال في الوقت الفعلي، مما يجعلها مناسبة لبث الفيديو المباشر والتطبيقات الحساسة للوقت.
للحصول على أمثلة تنفيذية وتطبيقات عملية، استكشف حل TrackZone لتتبع الأجسام في مناطق محددة.
كيف يمكنني حساب فئات محددة من الكائنات باستخدام 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 processing is complete.")
break
results = counter(im0)
video_writer.write(results.plot_im)
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
(على سبيل المثال، شخص وسيارة في مجموعة بيانات COCO). يمكنك العثور على مزيد من المعلومات حول مؤشرات الفئات في وثائق مجموعة بيانات COCO.
لماذا يجب استخدام YOLO11 بدلاً من نماذج اكتشاف الكائنات الأخرى لتطبيقات الوقت الحقيقي؟
يوفر Ultralytics YOLO11 العديد من المزايا مقارنةً بنماذج اكتشاف الأجسام الأخرى مثل Faster R-CNN و SSD وإصدارات YOLO السابقة:
- السرعة والكفاءة: يوفر YOLO11 إمكانات معالجة في الوقت الفعلي، مما يجعله مثاليًا للتطبيقات التي تتطلب استدلالاً عالي السرعة، مثل المراقبة والقيادة الذاتية.
- الدقة: يوفر دقة فائقة في مهام اكتشاف الأجسام وتتبعها، مما يقلل من عدد النتائج الإيجابية الخاطئة ويحسن موثوقية النظام بشكل عام.
- سهولة التكامل: يوفر YOLO11 تكاملاً سلسًا مع مختلف المنصات والأجهزة، بما في ذلك الأجهزة المحمولة والأجهزة المتطورة، وهو أمر بالغ الأهمية لتطبيقات الذكاء الاصطناعي الحديثة.
- المرونة: يدعم مهام مختلفة مثل اكتشاف الكائنات وتجزئتها وتتبعها بنماذج قابلة للتكوين لتلبية متطلبات حالة استخدام محددة.
راجع Ultralytics YOLO11 Documentation للتعمق أكثر في ميزاته ومقارنات الأداء.
هل يمكنني استخدام YOLO11 للتطبيقات المتقدمة مثل تحليل الحشود وإدارة حركة المرور؟
نعم، يعد Ultralytics YOLO11 مناسبًا تمامًا للتطبيقات المتقدمة مثل تحليل الحشود وإدارة حركة المرور نظرًا لقدراته على الكشف في الوقت الحقيقي وقابليته للتطوير ومرونة التكامل. تسمح ميزاته المتقدمة بتتبع الأجسام بدقة عالية وإحصائها وتصنيفها في البيئات الديناميكية. من أمثلة حالات الاستخدام ما يلي:
- تحليل الحشود: مراقبة التجمعات الكبيرة وإدارتها، وضمان السلامة وتحسين تدفق الحشود من خلال العدّ حسب المنطقة.
- إدارة حركة المرور: تتبع المركبات وإحصاء عددها، وتحليل أنماط حركة المرور، وإدارة الازدحام في الوقت الفعلي باستخدام إمكانات تقدير السرعة.
- تحليلات البيع بالتجزئة: تحليل أنماط حركة العملاء وتفاعلات المنتجات لتحسين تخطيطات المتاجر وتحسين تجربة العملاء.
- الأتمتة الصناعية: عد المنتجات على سيور النقل ومراقبة خطوط الإنتاج لمراقبة الجودة وتحسين الكفاءة.
لمزيد من التطبيقات الأكثر تخصصًا، استكشف حلولUltralytics Solutions للحصول على مجموعة شاملة من الأدوات المصممة لمواجهة تحديات الرؤية الحاسوبية في العالم الحقيقي.