خرائط حرارية لتتبّع الكائنات باستخدام Ultralytics YOLO26#
يتتبّع حل الخرائط الحرارية في 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#
شغّل حل الخرائط الحرارية على مصدر فيديو من CLI أو Python. يكتب مثال Python الإطارات المعالَجة في ملف فيديو للإخراج:
# 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:
| الوسيطة | النوع | الافتراضي | الوصف |
|---|---|---|---|
model | str | None | المسار إلى ملف نموذج Ultralytics YOLO. |
colormap | int | cv2.COLORMAP_DEEPGREEN | خريطة الألوان المستخدمة للخريطة الحرارية. |
show_in | bool | True | علامة للتحكم في ما إذا كان سيتم عرض أعداد الدخول في دفق الفيديو. |
show_out | bool | True | علامة للتحكم في ما إذا كان سيتم عرض أعداد الخروج في دفق الفيديو. |
region | list أو dict | None | النقاط التي تحدد منطقة الاهتمام، إما على شكل قائمة من صفوف (x, y) أو قاموس يربط أسماء المناطق بقوائم النقاط لمناطق متعددة (RegionCounter فقط). عندما تكون قيمة None، تعود الحلول التي تتطلب منطقة إلى إعداد افتراضي محدد مسبقًا. |
line_width | int | 2 | سُمك الخط للصناديق والنقاط الرئيسية والأعداد التي يرسمها الحل. |
verbose | bool | True | يمكّن سجل الحل لكل إطار، والذي يتضمن شكل الإدخال وأعداد الفئات وسرعة المعالجة. ويظل استدعاء التتبع نفسه صامتًا دائمًا. |
يمكنك أيضًا تطبيق وسيطات track مختلفة في حل Heatmap.
| الوسيطة | النوع | الافتراضي | الوصف |
|---|---|---|---|
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 | يعرض تسميات كل كشف في المخرجات المرئية. ويوفر فهمًا فوريًا للكائنات المكتشفة. |
خرائط ألوان الخريطة الحرارية#
يقبل وسيط 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. وينشئ في الإطار المعالَج الأول طبقة شدة فارغة مطابقة لحجم الإطار. ثم يُعالَج كل إطار في خطوتين:
- يكتشف YOLO26 كل كائن في الإطار ويتتبّعه
- بالنسبة إلى كل كائن متتبَّع، تزداد شدة الخريطة الحرارية داخل منطقة دائرية تتمركز في صندوقه المحيط
مرة واحدة لكل إطار، تُطبَّع طبقة الشدة المتراكمة، وتُلوَّن باستخدام خريطة الألوان المحددة، ثم تُدمج مع الإطار الأصلي. يظهر التراكب بمجرد تتبّع كائن واحد على الأقل؛ وتُعرض الإطارات التي لا تحتوي على كائنات متتبَّعة من دون تراكب الخريطة الحرارية.
والنتيجة تصور ديناميكي يتراكم بمرور الوقت، ويكشف أنماط حركة المرور، وحركات الحشود، أو السلوكيات المكانية الأخرى في بيانات الفيديو. عند تعيين 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.

