عدّ الكائنات باستخدام Ultralytics YOLO26#
ما عدّ الكائنات؟#
يتضمن عدّ الكائنات باستخدام Ultralytics YOLO26 التعرّف الدقيق على كائنات محددة وعدّها في مقاطع الفيديو وتدفقات الكاميرا. يتفوق YOLO26 في التطبيقات الآنية، إذ يوفر عدًّا فعالًا ودقيقًا للكائنات في سيناريوهات مختلفة مثل تحليل الحشود والمراقبة، بفضل خوارزمياته المتطورة وقدراته على التعلم العميق.
شاهد: كيفية إجراء عدّ للكائنات في الوقت الفعلي باستخدام Ultralytics YOLO26 🚀
مزايا عدّ الكائنات#
- تحسين الموارد: يسهّل عدّ الكائنات إدارة الموارد بكفاءة من خلال توفير أعداد دقيقة، وتحسين توزيع الموارد في تطبيقات مثل إدارة المخزون.
- تعزيز الأمن: يعزز عدّ الكائنات الأمن والمراقبة من خلال تتبّع الكيانات وإحصائها بدقة، مما يساعد على اكتشاف التهديدات استباقيًا.
- اتخاذ قرارات مستنيرة: يوفر عدّ الكائنات رؤى قيّمة لاتخاذ القرارات وتحسين العمليات في تجارة التجزئة وإدارة حركة المرور ومجالات أخرى مختلفة.
تطبيقات في العالم الحقيقي#
| الخدمات اللوجستية | الاستزراع المائي |
|---|---|
![]() | ![]() |
| عدّ الطرود على سير ناقل باستخدام Ultralytics YOLO26 | عدّ الأسماك في البحر باستخدام Ultralytics YOLO26 |
عدّ الكائنات باستخدام YOLO26#
حدّد region للعدّ — نقطتين لخط أو ثلاث نقاط أو أكثر لمضلع — ومرّره إلى حلّ ObjectCounter. يتتبع العداد كل كائن عبر الإطارات، ويحصي حالات الدخول والخروج عند عبور الكائنات المتعقبة الخط أو مرورها عبر المنطقة، ثم يعيد إطارًا مشروحًا يمكنك كتابته في فيديو ناتج.
# Run a counting example
yolo solutions count show=True
# Pass a source video
yolo solutions count source="path/to/video.mp4"
# Pass region coordinates
yolo solutions count region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"تقبل الوسيطة region نقطتين (لخط) أو مضلعًا يتكون من ثلاث نقاط أو أكثر. حدّد الإحداثيات بالترتيب الذي ينبغي وصلها به، ليعرف العداد بدقة مواضع الدخول والخروج.
وسيطات ObjectCounter#
إليك جدولًا بمعاملات ObjectCounter:
| المعامل | النوع | الافتراضي | الوصف |
|---|---|---|---|
model | str | None | مسار ملف نموذج Ultralytics YOLO. |
show_in | bool | True | علم للتحكم في عرض أعداد الدخول على بث الفيديو. |
show_out | bool | True | علم للتحكم في عرض أعداد الخروج على بث الفيديو. |
region | list أو dict | None | النقاط التي تحدد منطقة الاهتمام، سواء أكانت قائمة من الصفوف (x, y) أم قاموسًا يربط أسماء المناطق بقوائم النقاط لمناطق متعددة (في RegionCounter فقط). عندما يكون None، تستخدم الحلول التي تتطلب منطقة إعدادًا افتراضيًا محددًا مسبقًا. |
line_width | int | 2 | سماكة الخط للصناديق والنقاط المفتاحية والعدادات التي يرسمها الحل. |
verbose | bool | True | يفعّل سجل الحل لكل إطار، ويشمل شكل المدخل وعدد الفئات وسرعة المعالجة. يظل استدعاء التتبع نفسه صامتًا دائمًا. |
يتيح حلّ ObjectCounter استخدام عدة وسيطات track:
| المعامل | النوع | الافتراضي | الوصف |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | يحدد خوارزمية التتبع المطلوب استخدامها. الخيارات المضمنة: botsort.yaml، bytetrack.yaml، ocsort.yaml، deepocsort.yaml، fasttrack.yaml، tracktrack.yaml. |
conf | float | 0.25 | يضبط عتبة الثقة للكشوفات؛ إذ تسمح القيم الأقل بتتبع مزيد من الكائنات، لكنها قد تتضمن إيجابيات كاذبة. |
iou | float | 0.7 | يضبط عتبة التقاطع على الاتحاد (IoU) لتصفية الكشوفات المتداخلة. |
classes | list | None | يصفّي النتائج حسب فهرس الفئة. على سبيل المثال، لا يتتبع classes=[0, 2, 3] إلا الفئات المحددة. |
device | str | None | يحدد الجهاز المستخدم للاستدلال (مثل cpu أو cuda:0 أو 0). ويتيح للمستخدمين الاختيار بين CPU أو GPU محددة أو أجهزة حوسبة أخرى لتنفيذ النموذج. |
imgsz | int or tuple | 640 | حجم صورة الاستدلال المستهدف: عدد صحيح لصورة مربعة، أو زوج (height, width). تُعدّل الأبعاد وفقًا لخطوة النموذج. |
max_det | int | 300 | الحد الأقصى لعدد الكشوفات التي يُحتفظ بها لكل إطار قبل التتبع، ما يحد من عدد الكائنات التي يعالجها الحل في المشاهد الكثيفة. |
quantize | int or str | None | دقة الاستدلال: 16 (FP16) أو 32/unset (FP32) لنماذج PyTorch وTorchScript خارج CPU؛ أما التنسيقات الأخرى فتستخدم الدقة التي يحددها الملف الاصطناعي وبيئة التشغيل. يحل هذا الوسيط محل الوسيطة half المهملة. |
بالإضافة إلى ذلك، تُدعم وسيطات التصور المذكورة أدناه:
| المعامل | النوع | الافتراضي | الوصف |
|---|---|---|---|
show | bool | False | إذا كان True، يعرض الصور أو مقاطع الفيديو المشروحة في نافذة. يفيد ذلك في الحصول على ملاحظات مرئية فورية أثناء التطوير أو الاختبار. |
show_conf | bool | True | يعرض درجة الثقة لكل اكتشاف بجوار التسمية، ما يوضح مدى يقين النموذج بشأن كل اكتشاف. |
show_labels | bool | True | يعرض تسميات كل اكتشاف في المخرجات المرئية، ما يتيح فهم الكائنات المكتشفة فورًا. |
الأسئلة الشائعة#
لعدّ الكائنات في فيديو باستخدام Ultralytics YOLO26، يمكنك اتباع الخطوات التالية:
- استورد المكتبات اللازمة (
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", "yolo26n.pt")للاطلاع على إعدادات وخيارات أكثر تقدمًا، راجع حلّ RegionCounter لعدّ الكائنات في مناطق متعددة في الوقت نفسه.
- استورد المكتبات اللازمة (
يوفر استخدام Ultralytics YOLO26 لعدّ الكائنات مزايا عديدة:
- تحسين الموارد: يسهّل إدارة الموارد بكفاءة من خلال توفير أعداد دقيقة، مما يساعد على تحسين توزيع الموارد في قطاعات مثل إدارة المخزون.
- تعزيز الأمن: يعزز الأمن والمراقبة من خلال تتبع الكيانات وعدّها بدقة، مما يساعد على اكتشاف التهديدات استباقيًا ويدعم أنظمة الأمن.
- اتخاذ قرارات مستنيرة: يوفر رؤى قيّمة لاتخاذ القرارات وتحسين العمليات في مجالات مثل تجارة التجزئة وإدارة حركة المرور وغيرها.
- المعالجة الآنية: تتيح بنية YOLO26 إجراء استدلال آني، مما يجعله مناسبًا لتدفقات الفيديو المباشرة والتطبيقات الحساسة للوقت.
للاطلاع على أمثلة التنفيذ والتطبيقات العملية، استكشف حلّ TrackZone لتتبع الكائنات في مناطق محددة.
لعدّ فئات محددة من الكائنات باستخدام Ultralytics YOLO26، عليك تحديد الفئات التي تهمك أثناء مرحلة التتبع. فيما يلي مثال باستخدام 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", "yolo26n.pt", [0, 2])في هذا المثال، تعني
classes_to_count=[0, 2]أنه يعدّ الكائنات من الفئتين0و2(مثل الشخص والسيارة في مجموعة بيانات COCO). يمكنك العثور على مزيد من المعلومات حول فهارس الفئات في وثائق مجموعة بيانات COCO.يوفر Ultralytics YOLO26 عدة مزايا مقارنةً بنماذج اكتشاف الكائنات الأخرى مثل Faster R-CNN وSSD وإصدارات YOLO السابقة:
- السرعة والكفاءة: يوفر YOLO26 إمكانات المعالجة الآنية، مما يجعله مثاليًا للتطبيقات التي تتطلب استدلالًا عالي السرعة، مثل المراقبة والقيادة الذاتية.
- الدقة: يوفر دقة متطورة في الاكتشاف والتتبع، مما يقلل الإيجابيات الكاذبة ويحسن موثوقية النظام إجمالًا.
- سهولة التكامل: يتيح YOLO26 تكاملًا سلسًا مع منصات وأجهزة مختلفة، بما فيها الأجهزة المحمولة وأجهزة الحافة، وهو أمر بالغ الأهمية لتطبيقات الذكاء الاصطناعي الحديثة.
- المرونة: يدعم مهام الاكتشاف والتجزئة، مع وضع التتبع فوقهما، كما يتيح نماذج قابلة للتهيئة لتلبية متطلبات حالات الاستخدام المحددة.
اطّلع على وثائق YOLO26 من Ultralytics للتعمق في ميزاته ومقارنات الأداء.
نعم، يلائم Ultralytics YOLO26 تمامًا التطبيقات المتقدمة مثل تحليل الحشود وإدارة حركة المرور، بفضل قدراته على الاكتشاف الآني وقابليته للتوسع ومرونة تكامله. وتتيح ميزاته المتقدمة تتبع الكائنات وعدّها وتصنيفها بدقة عالية في البيئات الديناميكية. تشمل حالات الاستخدام أمثلةً مثل:
- تحليل الحشود: راقب التجمعات الكبيرة وأدِرها، مع ضمان السلامة وتحسين تدفق الحشود باستخدام العدّ القائم على المناطق.
- إدارة حركة المرور: تتبع المركبات وعدّها، وحلّل أنماط حركة المرور، وأدِر الازدحام في الوقت الفعلي باستخدام إمكانات تقدير السرعة.
- تحليلات تجارة التجزئة: حلّل أنماط حركة العملاء وتفاعلهم مع المنتجات لتحسين تخطيط المتاجر والارتقاء بتجربة العملاء.
- الأتمتة الصناعية: عدّ المنتجات على السيور الناقلة وراقب خطوط الإنتاج لضبط الجودة وتحسين الكفاءة.
للاطلاع على تطبيقات أكثر تخصصًا، استكشف حلول Ultralytics، وهي مجموعة شاملة من الأدوات المصممة لمواجهة تحديات الرؤية الحاسوبية في العالم الحقيقي.

