Ultralytics YOLO27:
Get Started

الخرائط الحرارية لتتبّع الكائنات باستخدام Ultralytics YOLO26#

Open Heatmaps In Colab

يتتبّع حل الخريطة الحرارية في Ultralytics YOLO26 الكائنات عبر إطارات الفيديو، ويعرض شدة حركتها المتراكمة على كل إطار؛ فتتوهّج المناطق المزدحمة بألوان دافئة، بينما تبقى المناطق الهادئة بألوان باردة. وبالاستناد إلى تتبّع الكائنات باستخدام YOLO26، يحوّل الحل أي فيديو إلى خريطة نشاط مكاني تكشف تدفق حركة المرور وتنقل الحشود ومناطق التوقف، باستدعاء واحد في Python أو بأمر واحد في CLI.



شاهد: كيفية إنشاء خرائط حرارية باستخدام Ultralytics YOLO26 | تصور نشاط الكائنات | رؤية الذكاء الاصطناعي في تجارة التجزئة 🚀

لماذا تستخدم الخرائط الحرارية لتحليلات الفيديو؟#

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

تطبيقات في العالم الحقيقي#

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

كيفية إنشاء خرائط حرارية باستخدام Ultralytics YOLO#

شغّل حل الخريطة الحرارية على مصدر فيديو باستخدام CLI أو Python. يكتب مثال Python الإطارات المعالَجة في ملف فيديو للإخراج:

الخرائط الحرارية باستخدام Ultralytics YOLO
# Run a heatmap example
yolo solutions heatmap show=True

# Pass a source video
yolo solutions heatmap source="path/to/video.mp4"

# Pass a custom colormap
yolo solutions heatmap colormap=cv2.COLORMAP_INFERNO

# Heatmaps + object counting
yolo solutions heatmap region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"

وسيطات Heatmap()#

إليك جدولًا بمعاملات Heatmap:

المعاملالنوعالافتراضيالوصف
modelstrNoneمسار ملف نموذج Ultralytics YOLO.
colormapintcv2.COLORMAP_DEEPGREENخريطة الألوان المستخدمة للخريطة الحرارية.
show_inboolTrueعلم للتحكم في عرض أعداد الدخول على بث الفيديو.
show_outboolTrueعلم للتحكم في عرض أعداد الخروج على بث الفيديو.
regionlist أو dictNoneالنقاط التي تحدد منطقة الاهتمام، سواء أكانت قائمة من الصفوف (x, y) أم قاموسًا يربط أسماء المناطق بقوائم النقاط لمناطق متعددة (في RegionCounter فقط). عندما يكون None، تستخدم الحلول التي تتطلب منطقة إعدادًا افتراضيًا محددًا مسبقًا.
line_widthint2سماكة الخط للصناديق والنقاط المفتاحية والعدادات التي يرسمها الحل.
verboseboolTrueيفعّل سجل الحل لكل إطار، ويشمل شكل المدخل وعدد الفئات وسرعة المعالجة. يظل استدعاء التتبع نفسه صامتًا دائمًا.

يمكنك أيضًا تطبيق معاملات track مختلفة في الحل Heatmap.

المعاملالنوعالافتراضيالوصف
trackerstr'tracktrack.yaml'يحدد خوارزمية التتبع المطلوب استخدامها. الخيارات المضمنة: botsort.yaml، bytetrack.yaml، ocsort.yaml، deepocsort.yaml، fasttrack.yaml، tracktrack.yaml.
conffloat0.25يضبط عتبة الثقة للكشوفات؛ إذ تسمح القيم الأقل بتتبع مزيد من الكائنات، لكنها قد تتضمن إيجابيات كاذبة.
ioufloat0.7يضبط عتبة التقاطع على الاتحاد (IoU) لتصفية الكشوفات المتداخلة.
classeslistNoneيصفّي النتائج حسب فهرس الفئة. على سبيل المثال، لا يتتبع classes=[0, 2, 3] إلا الفئات المحددة.
devicestrNoneيحدد الجهاز المستخدم للاستدلال (مثل cpu أو cuda:0 أو 0). ويتيح للمستخدمين الاختيار بين CPU أو GPU محددة أو أجهزة حوسبة أخرى لتنفيذ النموذج.
imgszint or tuple640حجم صورة الاستدلال المستهدف: عدد صحيح لصورة مربعة، أو زوج (height, width). تُعدّل الأبعاد وفقًا لخطوة النموذج.
max_detint300الحد الأقصى لعدد الكشوفات التي يُحتفظ بها لكل إطار قبل التتبع، ما يحد من عدد الكائنات التي يعالجها الحل في المشاهد الكثيفة.
quantizeint or strNoneدقة الاستدلال: 16 (FP16) أو 32/unset (FP32) لنماذج PyTorch وTorchScript خارج CPU؛ أما التنسيقات الأخرى فتستخدم الدقة التي يحددها الملف الاصطناعي وبيئة التشغيل. يحل هذا الوسيط محل الوسيطة half المهملة.

بالإضافة إلى ذلك، تُدرج أدناه معاملات التصوّر المدعومة:

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

مخططات ألوان الخرائط الحرارية#

يقبل المعامل colormap أي مخطط ألوان في OpenCV. مرّر الثابت من الوحدة cv2، مثل colormap=cv2.COLORMAP_INFERNO:

اسم مخطط الألوانالوصف
cv2.COLORMAP_AUTUMNمخطط ألوان الخريف
cv2.COLORMAP_BONEمخطط ألوان العظم
cv2.COLORMAP_JETخريطة ألوان Jet
cv2.COLORMAP_WINTERخريطة ألوان Winter
cv2.COLORMAP_RAINBOWخريطة ألوان Rainbow
cv2.COLORMAP_OCEANخريطة ألوان Ocean
cv2.COLORMAP_SUMMERخريطة ألوان Summer
cv2.COLORMAP_SPRINGخريطة ألوان Spring
cv2.COLORMAP_COOLخريطة ألوان Cool
cv2.COLORMAP_HSVخريطة ألوان HSV (تدرج اللون، التشبع، القيمة)
cv2.COLORMAP_PINKخريطة ألوان Pink
cv2.COLORMAP_HOTخريطة ألوان Hot
cv2.COLORMAP_PARULAخريطة ألوان Parula
cv2.COLORMAP_MAGMAخريطة ألوان Magma
cv2.COLORMAP_INFERNOخريطة ألوان Inferno
cv2.COLORMAP_PLASMAخريطة ألوان Plasma
cv2.COLORMAP_VIRIDISخريطة ألوان Viridis
cv2.COLORMAP_CIVIDISخريطة ألوان Cividis
cv2.COLORMAP_TWILIGHTخريطة ألوان Twilight
cv2.COLORMAP_TWILIGHT_SHIFTEDخريطة ألوان Twilight المنقولة
cv2.COLORMAP_TURBOخريطة ألوان Turbo
cv2.COLORMAP_DEEPGREENخريطة ألوان Deep Green

آلية عمل الخرائط الحرارية#

تمتد حلول الخرائط الحرارية من الفئة ObjectCounter. عند معالجة الإطار الأول، تُنشئ طبقة كثافة فارغة تطابق حجم الإطار. ثم يُعالج كل إطار في خطوتين:

  1. يكتشف التتبّع في YOLO26 كل كائن في الإطار ويتتبعه
  2. لكل كائن متتبَّع، تزداد كثافة الخريطة الحرارية ضمن منطقة دائرية مركزها صندوق الإحاطة الخاص به

مرة واحدة لكل إطار، تُطبَّع طبقة الكثافة المتراكمة، وتُلوَّن باستخدام خريطة الألوان المحددة، ثم تُدمج مع الإطار الأصلي. تظهر الطبقة المتراكبة بعد تتبّع كائن واحد على الأقل؛ وحتى ذلك الحين، تُعرض الإطارات دون طبقة الخريطة الحرارية المتراكبة.

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

الخلاصة#

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

الأسئلة الشائعة#

  • ينشئ Ultralytics YOLO26 خرائط حرارية بتتبّع الكائنات عبر إطارات الفيديو وتجميع قيمة كثافة في موقع كل كائن متتبَّع، ثم تلوين النتيجة ودمجها مع الإطار الأصلي. تتراكم كثافة أعلى في المناطق التي تظهر فيها الكائنات بكثرة أو تمكث فيها طويلًا، وتُمثَّل بألوان أكثر دفئًا. للاطلاع على خيارات الإعداد، راجع قسم وسيطات Heatmap().

  • استخدم cv2.VideoWriter من OpenCV واكتب results.plot_im لكل إطار معالَج، كما هو موضح في المثال الرئيسي. تحتوي السمة plot_im على الإطار بعد تطبيق طبقة الخريطة الحرارية المتراكبة عليه.

  • نعم. مرّر وسيط region إلى Heatmap() مع نقاط خط أو مستطيل أو مضلع، وسيحصي الحل الكائنات التي تدخل تلك المنطقة وتخرج منها أثناء تكوّن الخريطة الحرارية. تتضمن النتائج المعادة in_count وout_count، بالإضافة إلى أعداد الكائنات حسب الفئة. راجع دليل عدّ الكائنات للاطلاع على تفاصيل إعداد المنطقة.

  • مرّر وسيط classes إلى Heatmap() مع فهارس الفئات التي تريد الاحتفاظ بها. على سبيل المثال، ينشئ classes=[0, 2] الخريطة الحرارية اعتمادًا على الأشخاص والسيارات فقط (فهارس الفئات 0 و2 في COCO):

    import cv2
    
    from ultralytics import solutions
    
    cap = cv2.VideoCapture("path/to/video.mp4")
    heatmap = solutions.Heatmap(show=True, model="yolo26n.pt", classes=[0, 2])
    
    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            break
        results = heatmap(im0)
    cap.release()
    cv2.destroyAllWindows()
  • تدمج الخرائط الحرارية في Ultralytics YOLO26 اكتشاف الكائنات والتتبّع وتجميع الكثافة وعرض الطبقة المتراكبة في استدعاء واحد، بينما تتطلب منك الأدوات العامة مثل OpenCV أو Matplotlib إنشاء مسار المعالجة بنفسك. يعالج الحل تدفقات الفيديو في الوقت الفعلي، ويدعم التتبّع المستمر وخرائط الألوان القابلة للتخصيص مباشرةً. للاطلاع على تفاصيل النموذج الأساسي، راجع صفحة نموذج YOLO26.

التعليقات