عدّ الكائنات باستخدام Ultralytics YOLO26#
ما عدّ الكائنات؟#
يتضمن عدّ الكائنات باستخدام Ultralytics YOLO26 التعرّف الدقيق على كائنات محددة وعدّها في مقاطع الفيديو وتدفّقات الكاميرات. يتفوّق YOLO26 في التطبيقات الفورية، إذ يوفّر عدًّا فعالًا ودقيقًا للكائنات في سيناريوهات متنوعة مثل تحليل الحشود والمراقبة، بفضل خوارزمياته المتطورة وقدراته في التعلّم العميق.
Watch: How to Perform Real-Time Object Counting with 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 | 'botsort.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/غير محدد (FP32) لنموذجي PyTorch وTorchScript؛ بينما تحسب التنسيقات الأخرى بالدقة التي تحددها ملفاتها ومحيط تشغيلها. يحل محل علامة 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 إمكانات المعالجة الفورية، مما يجعله مثاليًا للتطبيقات التي تتطلب استدلالًا عالي السرعة، مثل المراقبة والقيادة الذاتية.
- الدقة: يوفّر دقة متطورة في الاكتشاف والتتبّع، مما يقلل الإيجابيات الكاذبة ويحسّن موثوقية النظام overall.
- سهولة التكامل: يوفّر YOLO26 تكاملًا سلسًا مع مختلف المنصات والأجهزة، بما في ذلك الأجهزة المحمولة والأجهزة الطرفية، وهو أمر بالغ الأهمية لتطبيقات الذكاء الاصطناعي الحديثة.
- المرونة: يدعم مهام الاكتشاف والتقسيم، مع وضع التتبّع فوقها، كما يدعم نماذج قابلة للتهيئة لتلبية متطلبات حالات الاستخدام المحددة.
اطّلع على وثائق YOLO26 من Ultralytics للتعمّق في ميزاته ومقارنات أدائه.
نعم، يُعدّ Ultralytics YOLO26 مناسبًا تمامًا للتطبيقات المتقدمة مثل تحليل الحشود وإدارة حركة المرور، بفضل إمكانات الاكتشاف الفوري وقابليته للتوسع ومرونة تكامله. تتيح ميزاته المتقدمة تتبّع الكائنات وعدّها وتصنيفها بدقة عالية في البيئات الديناميكية. تشمل حالات الاستخدام أمثلةً مثل:
- تحليل الحشود: راقب التجمعات الكبيرة وأدرها، مع ضمان الأمان وتحسين تدفّق الحشود باستخدام العدّ المستند إلى المناطق.
- إدارة حركة المرور: تتبّع المركبات وعدّها، وحلّل أنماط حركة المرور، وأدر الازدحام في الوقت الفعلي باستخدام إمكانات تقدير السرعة.
- تحليلات البيع بالتجزئة: حلّل أنماط حركة العملاء وتفاعلاتهم مع المنتجات لتحسين تخطيط المتاجر والارتقاء بتجربة العملاء.
- الأتمتة الصناعية: عدّ المنتجات على الأحزمة الناقلة وراقب خطوط الإنتاج لتحسين مراقبة الجودة والكفاءة.
للمزيد من التطبيقات المتخصصة، استكشف حلول Ultralytics للحصول على مجموعة شاملة من الأدوات المصممة لمواجهة تحديات الرؤية الحاسوبية في العالم الحقيقي.

