Ultralytics YOLO27:

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

Open Heatmaps In Colab

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



Watch: How to Create Heatmaps with Ultralytics YOLO26 | Visualize Object Activity | VisionAI in Retail 🚀

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

  • رصد أنماط النشاط بنظرة واحدة: تتراكم الشدة حيث تقضي الكائنات المتتبَّعة وقتًا، لذلك تبرز الممرات ذات الحركة الكثيفة، أو الرفوف الشائعة، أو نقاط اختناق الحشود، من دون مراجعة يدوية إطارًا تلو الآخر.
  • التتبّع مضمّن: ينفّذ الحل عملية الكشف والتتبّع باستخدام 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'botsort.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/غير محدد (FP32) لنماذج PyTorch وTorchScript؛ وتُحسب التنسيقات الأخرى بالدقة التي يحددها ملفها البريفي وقت التشغيل. تحل محل علامة half المهملة.

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

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

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

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

اسم خريطة الألوانالوصف
cv2.COLORMAP_AUTUMNخريطة ألوان Autumn
cv2.COLORMAP_BONEخريطة ألوان 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] الخريطة الحرارية من الأشخاص والسيارات فقط (فهرا COCO للفئتين 0 و2):

    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.

التعليقات