عد الكائنات في المناطق باستخدام Ultralytics YOLO26#
يقوم RegionCounter solution في Ultralytics YOLO26 بتعقب الكائنات عبر إطارات الفيديو وفي كل إطار، يحسب الكائنات التي يقع مركز مربع التحديد الخاص بها داخل كل منطقة تقوم بتعريفها. يتم رسم كل منطقة على الإطار بعداد حي خاص بها، بحيث يمكنك مراقبة عدة مناطق، مثل ممرات المتاجر أو مسارات الطرق أو مناطق الإنتاج، باستخدام استدعاء Python واحد أو أمر CLI واحد.
Watch: Object Counting in Different Regions using Ultralytics YOLO | Ultralytics Solutions
لماذا تستخدم عد المناطق؟#
- عدة مناطق في تمريرة واحدة: قم بتمرير قاموس من المضلعات المسماة وسيحصل كل نطاق على عد مستقل مرسوم على الإطار، بحيث يغطي بث فيديو واحد كل منطقة تهتم بها.
- التتبع المدمج: تشغيل الحل لاكتشاف YOLO26 وobject tracking داخلياً، لذلك لا توجد خطوط أنابيب تتبع منفصلة تحتاج إلى ربطها.
- أعداد يمكنك قراءتها برمجياً: يُرجع كل إطار معالج كائن نتائج يحتوي على قاموس لأعداد المناطق، جاهز للوحات المعلومات، أو التنبيهات، أو التسجيل.
تطبيقات العالم الحقيقي#
| التجزئة | شوارع السوق |
|---|---|
![]() | ![]() |
| عد الأشخاص في المناطق باستخدام Ultralytics YOLO | عد الحشود في المناطق باستخدام Ultralytics YOLO |
كيفية عد الكائنات في المناطق باستخدام Ultralytics YOLO#
قم بتشغيل حل RegionCounter على مصدر فيديو من CLI أو Python. يمكن أن تكون المنطقة قائمة من النقاط (نطاق واحد) أو قاموساً يربط أسماء النطاقات بقوائم النقاط. يقوم مثال Python أدناه بعد الكائنات في منطقتين مسماتين وكتابة الإطارات المعالجة إلى ملف فيديو مخرج:
# Run a region counting example
yolo solutions region show=True
# Pass a source video
yolo solutions region source="path/to/video.mp4"
# Pass a custom region
yolo solutions region region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"وسائط RegionCounter()#
إليك جدول يحتوي على وسائط RegionCounter:
| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
model | str | None | المسار إلى ملف نموذج Ultralytics YOLO. |
region | list أو dict | None | النقاط التي تحدد منطقة الاهتمام، إما قائمة من صفوف (x, y) أو قاموس يربط أسماء المناطق بقوائم النقاط لمناطق متعددة (RegionCounter فقط). عندما يكون None، تتراجع الحلول التي تتطلب منطقة إلى افتراضي مُحدد مسبقًا. |
line_width | int | 2 | سمك الخط للمربعات والنقاط الرئيسية والعدادات التي ترسمها الحلول. |
verbose | bool | True | يمكّن سجل الحلول لكل إطار لشكل الإدخال، وعدد الفئات، وسرعة المعالجة. استدعاء التتبع بحد ذاته صامت دائماً. |
يتيح حل RegionCounter استخدام معاملات تعقب الكائنات:
| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
tracker | str | 'botsort.yaml' | يحدد خوارزمية التتبع المراد استخدامها. الخيارات المضمنة: botsort.yaml، وbytetrack.yaml، وocsort.yaml، وdeepocsort.yaml، وfasttrack.yaml، وtracktrack.yaml. |
conf | float | 0.25 | يضبط عتبة الثقة للاكتشافات؛ تسمح القيم المنخفضة بتتبع المزيد من الكائنات ولكنها قد تتضمن إيجابيات كاذبة. |
iou | float | 0.7 | يحدد عتبة Intersection over Union (IoU) لتصفية عمليات الكشف المتداخلة. |
classes | list | None | يقوم بتصفية النتائج حسب الفهرس الفئة. على سبيل المثال، يقوم classes=[0, 2, 3] بتتبع الفئات المحددة فقط. |
device | str | None | يحدد الجهاز للاستدلال (مثل cpu أو cuda:0 أو 0). يسمح للمستخدمين بالاختيار بين وحدة المعالجة المركزية (CPU)، أو وحدة معالجة رسومية (GPU) محددة، أو أجهزة الحوسبة الأخرى لتنفيذ النموذج. |
بالإضافة إلى ذلك، يتم دعم إعدادات التصور التالية:
| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
show | bool | False | إذا كان True، يعرض الصور أو الفيديوهات المشروحة في نافذة. مفيد للحصول على ملاحظات مرئية فورية أثناء التطوير أو الاختبار. |
show_conf | bool | True | يعرض درجة الثقة لكل اكتشاف بجانب التصنيف. يوفر رؤية حول مدى يقين النموذج في كل اكتشاف. |
show_labels | bool | True | يعرض تصنيفات كل اكتشاف في المخرجات المرئية. يوفر فهماً فورياً للكائنات المكتشفة. |
كيف يعمل عد المناطق#
يحول RegionCounter solution كل منطقة تمررها إلى مضلع، مع ثلاث نقاط على الأقل لكل منطقة. تصبح قائمة النقاط البسيطة منطقة واحدة تسمى Region#01، بينما يحتفظ القاموس بأسماء المناطق الخاصة بك؛ ويتم رسم كل منطقة بلونها الخاص من لوحة ألوان Ultralytics. بعد ذلك، تتم معالجة كل إطار في ثلاث خطوات:
- يكتشف تتبع YOLO26 كل كائن في الإطار ويتابعه
- بالنسبة لكل كائن يتم تتبعه، يحسب الحل مركز الصندوق المحيط (bbox) ويتحقق من أي مضلعات المناطق تحتويه
- يتم رسم عدد كل منطقة في مركزها، وتتم إعادة تعيين الأعداد قبل الإطار التالي
نظرًا لأن العد يعيد البدء في كل إطار، فإن الرقم المعروض على المنطقة يمثل إشغالها الحالي، مما يعني عدد الكائنات الموجودة بداخلها في الوقت الحالي، وليس إجماليًا تراكميًا. لحساب الكائنات التي تعبر الحدود بشكل تراكمي، استخدم ObjectCounter solution بدلاً من ذلك.
يقوم كل استدعاء أيضاً بإرجاع كائن نتائج يحتوي سمته plot_im على الإطار المعلق بينما يربط قاموسه region_counts أسماء المناطق بأعدادها، حتى تتمكن من إدخال الأرقام في منطق التطبيق الخاص بك.
الخلاصة#
يقوم حل Ultralytics YOLO26 RegionCounter بمراقبة أعداد الكائنات الحية في أكبر عدد تحتاجه من المناطق المسماة باستخدام بأسطر قليلة من الكود. للمضي قدمًا، احسب عمليات عبور الحدود باستخدام object counting، أو تتبع الكائنات داخل منطقة واحدة باستخدام TrackZone، أو استكشف Ultralytics Solutions الأخرى.
الأسئلة الشائعة#
يقوم Ultralytics YOLO26 بحساب الكائنات في المناطق عن طريق تعقب كل كائن في الإطار واختبار ما إذا كان مركز مربع التحديد الخاص به يقع داخل كل مضلع محدد من قبل المستخدم. العد المعروض على المنطقة هو إشغالها الحالي لهذا الإطار، وليس إجماليًا تراكميًا. يتم سرد خيارات التكوين في قسم
RegionCounter()Arguments.قم بتمرير وسيطة
regionكقاموس يربط أسماء المناطق بقوائم النقاط، كما في main example:from ultralytics import solutions region_points = { "region-01": [(50, 50), (250, 50), (250, 250), (50, 250)], "region-02": [(640, 640), (780, 640), (780, 720), (640, 720)], } regioncounter = solutions.RegionCounter(region=region_points, model="yolo26n.pt", show=True)يتم رسم كل نطاق مسمى بلونه الخاص مع عدد مستقل.
يحمل الكائن المُرجع بواسطة كل استدعاء
regioncounter(im0)قاموسregion_countsيربط أسماء المناطق بأعدادها، إلى جانبplot_im(الإطار المُعلق) وtotal_tracks(عدد الكائنات المتتبعة). اطبع كائن النتائج لفحص جميع الحقول المتاحة.نعم. مرر وسيطة
classesمع مؤشرات الفئات المراد الاحتفاظ بها، على سبيل المثالclasses=[0]لحساب الأشخاص فقط باستخدام نموذج مُدرب مسبقًا على COCO. توجد القائمة الكاملة للمعاملات المتعلقة بالتتبع في قسمRegionCounter()Arguments.RegionCounterيوضح عدد الكائنات الموجودة داخل كل منطقة مضلعة في الإطار الحالي، بينما يقوم ObjectCounter بحساب الكائنات بشكل تراكمي أثناء عبورها لخط أو حدود منطقة، مع تتبع إجماليات الدخول والخروج. استخدمRegionCounterللإشغال الحي لمنطقة واحدة أو أكثر وObjectCounterلحساب الدخول والخروج؛ المناطق على شكل خط مدعومة بواسطةObjectCounterفقط.

