Meet YOLO26: next-gen vision AI.

Link to this sectionعد الكائنات في المناطق باستخدام Ultralytics YOLO26#

يقوم حل RegionCounter في Ultralytics YOLO26 بتتبع الكائنات عبر إطارات الفيديو، ويقوم في كل إطار بعد الكائنات التي يقع مركز صندوقها المحيط (bbox) داخل كل منطقة تحددها. يتم رسم كل منطقة على الإطار مع عددها المباشر، لذا يمكنك مراقبة عدة مناطق، مثل ممرات المتاجر، أو مسارات الطرق، أو مناطق الإنتاج، من خلال استدعاء Python واحد أو أمر CLI.



Watch: Object Counting in Different Regions using Ultralytics YOLO | Ultralytics Solutions

Link to this sectionلماذا تستخدم عد المناطق؟#

  • عدة مناطق في تمريرة واحدة: قم بتمرير قاموس من المضلعات المسماة وسيحصل كل نطاق على عد مستقل مرسوم على الإطار، بحيث يغطي بث فيديو واحد كل منطقة تهتم بها.
  • تتبع مدمج: يقوم الحل بتشغيل كشف YOLO26 وتتبع الكائنات داخلياً، لذا لا توجد خط أنابيب تتبع منفصل يجب ربطه.
  • أعداد يمكنك قراءتها برمجياً: يُرجع كل إطار معالج كائن نتائج يحتوي على قاموس لأعداد المناطق، جاهز للوحات المعلومات، أو التنبيهات، أو التسجيل.

Link to this sectionتطبيقات العالم الحقيقي#

التجزئةشوارع السوق
Ultralytics YOLO يعد الأشخاص داخل مناطق مضلعة مرسومة في متجر تجزئةأعداد مناطق Ultralytics YOLO متراكبة على سوق مزدحم
عد الأشخاص في المناطق باستخدام Ultralytics YOLOعد الحشود في المناطق باستخدام Ultralytics YOLO

Link to this sectionكيفية عد الكائنات في المناطق باستخدام Ultralytics YOLO#

قم بتشغيل حل RegionCounter على مصدر فيديو من CLI أو Python. يمكن أن تكون المنطقة قائمة من النقاط (نطاق واحد) أو قاموساً يربط أسماء النطاقات بقوائم النقاط. يقوم مثال Python أدناه بعد الكائنات في منطقتين مسماتين وكتابة الإطارات المعالجة إلى ملف فيديو مخرج:

عد المناطق باستخدام Ultralytics YOLO
# 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)]"

Link to this sectionوسائط RegionCounter()#

إليك جدول يحتوي على وسائط RegionCounter:

الوسيطالنوعالافتراضيالوصف
modelstrNoneالمسار إلى ملف نموذج Ultralytics YOLO.
regionlist أو dictNoneالنقاط التي تحدد منطقة الاهتمام، سواء كانت قائمة من أزواج (x, y) أو قاموس يربط أسماء المناطق بقوائم النقاط لمناطق متعددة (لـ RegionCounter فقط). عند ضبطها على None، تعود الحلول التي تتطلب منطقة إلى القيمة الافتراضية المحددة مسبقاً.

يتيح حل RegionCounter استخدام معاملات تتبع الكائنات:

الوسيطالنوعالافتراضيالوصف
trackerstr'botsort.yaml'يحدد خوارزمية التتبع المطلوب استخدامها. الخيارات المدمجة هي: botsort.yaml و bytetrack.yaml و ocsort.yaml و deepocsort.yaml و fasttrack.yaml و tracktrack.yaml.
conffloat0.1يضبط عتبة الثقة للاكتشافات؛ تسمح القيم المنخفضة بتتبع المزيد من الكائنات ولكنها قد تتضمن إيجابيات كاذبة.
ioufloat0.7يضبط عتبة تقاطع الاتحاد (IoU) لتصفية الاكتشافات المتداخلة.
classeslistNoneيصفي النتائج حسب فهرس الفئة. على سبيل المثال، classes=[0, 2, 3] يتتبع الفئات المحددة فقط.
verboseboolTrueيتحكم في عرض نتائج التتبع، مما يوفر مخرجاً مرئياً للكائنات المتعقبة.
devicestrNoneيحدد الجهاز للاستدلال (على سبيل المثال، cpu أو cuda:0 أو 0). يسمح للمستخدمين بالاختيار بين وحدة المعالجة المركزية، أو وحدة معالجة رسومات محددة، أو أجهزة حوسبة أخرى لتنفيذ النموذج.

بالإضافة إلى ذلك، يتم دعم إعدادات التصور التالية:

الوسيطالنوعالافتراضيالوصف
showboolFalseإذا كان True، فإنه يعرض الصور أو مقاطع الفيديو المشروحة في نافذة. مفيد للحصول على ملاحظات مرئية فورية أثناء التطوير أو الاختبار.
line_widthint or NoneNoneيحدد عرض خط صناديق التحديد. إذا كان None، يتم تعديل عرض الخط تلقائياً بناءً على حجم الصورة. يوفر تخصيصاً مرئياً للوضوح.
show_confboolTrueيعرض درجة الثقة لكل اكتشاف بجانب التصنيف. يوفر رؤية حول مدى يقين النموذج في كل اكتشاف.
show_labelsboolTrueيعرض تصنيفات كل اكتشاف في المخرجات المرئية. يوفر فهماً فورياً للكائنات المكتشفة.

Link to this sectionكيف يعمل عد المناطق#

يحول حل RegionCounter كل منطقة تمررها إلى مضلع، مع ثلاث نقاط على الأقل لكل منطقة. تصبح قائمة النقاط البسيطة نطاقاً واحداً باسم Region#01، بينما يحتفظ القاموس بأسماء النطاقات الخاصة بك؛ يتم رسم كل نطاق بلونه الخاص من لوحة ألوان Ultralytics. ثم تتم معالجة كل إطار في ثلاث خطوات:

  1. يكتشف تتبع YOLO26 كل كائن في الإطار ويتابعه
  2. بالنسبة لكل كائن يتم تتبعه، يحسب الحل مركز الصندوق المحيط (bbox) ويتحقق من أي مضلعات المناطق تحتويه
  3. يتم رسم عدد كل منطقة في مركزها، وتتم إعادة تعيين الأعداد قبل الإطار التالي

نظراً لأن الأعداد تتم إعادة تشغيلها كل إطار، فإن الرقم الموضح في المنطقة هو إشغالها الحالي، مما يعني عدد الكائنات الموجودة داخلها في الوقت الحالي، وليس إجمالي تراكمي. لعد الكائنات التي تعبر حدوداً بشكل تراكمي، استخدم حل ObjectCounter بدلاً من ذلك.

يُرجع كل استدعاء أيضاً كائن نتائج يحتوي سمة plot_im الخاصة به على الإطار المشروح، ويحتوي قاموس region_counts الخاص به على تعيين أسماء المناطق لأعدادها، بحيث يمكنك تغذية الأرقام في منطق تطبيقك الخاص.

Link to this sectionالخلاصة#

يراقب حل Ultralytics YOLO26 RegionCounter أعداد الكائنات المباشرة في العديد من النطاقات المسماة التي تحتاجها ببضعة أسطر من التعليمات البرمجية. للمضي قدماً، قم بعد عبور الحدود باستخدام عد الكائنات، أو تتبع الكائنات داخل نطاق واحد باستخدام TrackZone، أو استكشف حلول Ultralytics الأخرى.

Link to this sectionالأسئلة الشائعة#

Link to this sectionكيف يعمل عد الكائنات في المناطق في Ultralytics YOLO26؟#

يعد Ultralytics YOLO26 الكائنات في المناطق عن طريق تتبع كل كائن في الإطار واختبار ما إذا كان مركز صندوقه المحيط (bbox) يقع داخل كل مضلع محدد من قبل المستخدم. العدد الموضح في المنطقة هو إشغالها الحالي لهذا الإطار، وليس إجمالي تراكمي. خيارات التكوين مدرجة في قسم وسائط RegionCounter().

Link to this sectionكيف يمكنني عد الكائنات في مناطق متعددة في وقت واحد؟#

مرر وسيط region كقاموس يربط أسماء النطاقات بقوائم النقاط، كما في المثال الرئيسي:

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)

يتم رسم كل نطاق مسمى بلونه الخاص مع عدد مستقل.

Link to this sectionكيف أحصل على أعداد المناطق برمجياً؟#

يحمل الكائن الذي تم إرجاعه بواسطة كل استدعاء regioncounter(im0) قاموس region_counts الذي يربط أسماء المناطق بأعدادها، إلى جانب plot_im (الإطار المشروح) وtotal_tracks (عدد الكائنات التي يتم تتبعها). اطبع كائن النتائج لفحص جميع الحقول المتاحة.

Link to this sectionهل يمكنني عد فئات كائنات محددة فقط في منطقة ما؟#

نعم. مرر وسيط classes مع فهارس الفئات للاحتفاظ بها، على سبيل المثال classes=[0] لعد الأشخاص فقط باستخدام نموذج مدرب مسبقاً على COCO. القائمة الكاملة للوسائط المتعلقة بالتتبع موجودة في قسم وسائط RegionCounter().

Link to this sectionما الفرق بين RegionCounter و ObjectCounter؟#

يعرض RegionCounter عدد الكائنات الموجودة داخل كل نطاق مضلع في الإطار الحالي، بينما يعد ObjectCounter الكائنات تراكمياً عند عبورها خطاً أو حدود منطقة، مع تتبع إجمالي الدخول والخروج. استخدم RegionCounter للإشغال المباشر لنطاق واحد أو أكثر و ObjectCounter لعد الدخول والخروج؛ المناطق على شكل خط مدعومة فقط بواسطة ObjectCounter.

التعليقات