انتقل إلى المحتوى

تصور البيانات المتقدم: خرائط الحرارة باستخدام Ultralytics YOLOv8 🚀

مقدمة في الخرائط الحرارية

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



شاهد: استخدام خرائط الحرارة Ultralytics YOLOv8

لماذا تختار خرائط الحرارة لتحليل البيانات؟

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

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

النقل التجزئه
Ultralytics YOLOv8 خريطة النقل الحرارية Ultralytics YOLOv8 خريطة التمثيل اللوني للبيع بالتجزئة
Ultralytics YOLOv8 خريطة النقل الحرارية Ultralytics YOLOv8 خريطة التمثيل اللوني للبيع بالتجزئة

تكوين خريطة التمثيل اللوني

  • heatmap_alphaتأكد من أن هذه القيمة ضمن النطاق (0.0 - 1.0).:
  • decay_factorيستخدم لإزالة خريطة التمثيل اللوني بعد أن لم يعد الكائن في الإطار ، ويجب أن تكون قيمته أيضا في النطاق (0.0 - 1.0).:

استخدام خرائط الحرارة Ultralytics YOLOv8 مثل

from ultralytics import YOLO
from ultralytics.solutions import heatmap
import cv2

model = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

# Video writer
video_writer = cv2.VideoWriter("heatmap_output.avi",
                               cv2.VideoWriter_fourcc(*'mp4v'),
                               fps,
                               (w, h))

# Init heatmap
heatmap_obj = heatmap.Heatmap()
heatmap_obj.set_args(colormap=cv2.COLORMAP_PARULA,
                     imw=w,
                     imh=h,
                     view_img=True,
                     shape="circle")

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    tracks = model.track(im0, persist=True, show=False)

    im0 = heatmap_obj.generate_heatmap(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
from ultralytics import YOLO
from ultralytics.solutions import heatmap
import cv2

model = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

# Video writer
video_writer = cv2.VideoWriter("heatmap_output.avi",
                               cv2.VideoWriter_fourcc(*'mp4v'),
                               fps,
                               (w, h))

line_points = [(20, 400), (1080, 404)]  # line for object counting

# Init heatmap
heatmap_obj = heatmap.Heatmap()
heatmap_obj.set_args(colormap=cv2.COLORMAP_PARULA,
                     imw=w,
                     imh=h,
                     view_img=True,
                     shape="circle",
                     count_reg_pts=line_points)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    tracks = model.track(im0, persist=True, show=False)

    im0 = heatmap_obj.generate_heatmap(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
from ultralytics import YOLO
from ultralytics.solutions import heatmap
import cv2

model = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

# Video writer
video_writer = cv2.VideoWriter("heatmap_output.avi",
                               cv2.VideoWriter_fourcc(*'mp4v'),
                               fps,
                               (w, h))

# Define region points
region_points = [(20, 400), (1080, 404), (1080, 360), (20, 360)]

# Init heatmap
heatmap_obj = heatmap.Heatmap()
heatmap_obj.set_args(colormap=cv2.COLORMAP_PARULA,
                     imw=w,
                     imh=h,
                     view_img=True,
                     shape="circle",
                     count_reg_pts=region_points)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    tracks = model.track(im0, persist=True, show=False)

    im0 = heatmap_obj.generate_heatmap(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
from ultralytics import YOLO
from ultralytics.solutions import heatmap
import cv2

model = YOLO("yolov8s.pt")   # YOLOv8 custom/pretrained model

im0 = cv2.imread("path/to/image.png")  # path to image file
h, w = im0.shape[:2]  # image height and width

# Heatmap Init
heatmap_obj = heatmap.Heatmap()
heatmap_obj.set_args(colormap=cv2.COLORMAP_PARULA,
                     imw=w,
                     imh=h,
                     view_img=True,
                     shape="circle")

results = model.track(im0, persist=True)
im0 = heatmap_obj.generate_heatmap(im0, tracks=results)
cv2.imwrite("ultralytics_output.png", im0)
from ultralytics import YOLO
from ultralytics.solutions import heatmap
import cv2

model = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

# Video writer
video_writer = cv2.VideoWriter("heatmap_output.avi",
                               cv2.VideoWriter_fourcc(*'mp4v'),
                               fps,
                               (w, h))

classes_for_heatmap = [0, 2]  # classes for heatmap

# Init heatmap
heatmap_obj = heatmap.Heatmap()
heatmap_obj.set_args(colormap=cv2.COLORMAP_PARULA,
                     imw=w,
                     imh=h,
                     view_img=True,
                     shape="circle")

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    tracks = model.track(im0, persist=True, show=False,
                         classes=classes_for_heatmap)

    im0 = heatmap_obj.generate_heatmap(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

الحجج set_args

اسم نوع افتراضي وصف
view_img bool False عرض الإطار مع خريطة التمثيل اللوني
colormap cv2.COLORMAP None السيرة الذاتية 2. خريطة الألوان لخريطة التمثيل اللوني
imw int None عرض خريطة التمثيل اللوني
imh int None ارتفاع خريطة التمثيل اللوني
heatmap_alpha float 0.5 قيمة ألفا للخريطة الحرارية
count_reg_pts list None نقاط منطقة عد الكائنات
count_txt_thickness int 2 عد القيم حجم النص
count_txt_color RGB Color (0, 0, 0) لون المقدمة لنص عدد الكائنات
count_color RGB Color (255, 255, 255) لون الخلفية ل كائن عدد النص
count_reg_color RGB Color (255, 0, 255) عد لون المنطقة
region_thickness int 5 عد قيمة سمك المنطقة
decay_factor float 0.99 عامل الاضمحلال لإزالة منطقة خريطة الحرارة بعد وقت محدد
shape str circle شكل خريطة التمثيل اللوني للعرض "مستقيم" أو "دائرة" مدعوم
line_dist_thresh int 15 عتبة المسافة الإقليدية لعداد الخط

الحجج model.track

اسم نوع افتراضي وصف
source im0 None الدليل المصدر للصور أو مقاطع الفيديو
persist bool False المسارات المستمرة بين الإطارات
tracker str botsort.yaml طريقة التتبع "bytetrack" أو "botsort"
conf float 0.3 عتبة الثقة
iou float 0.5 عتبة IOU
classes list None تصفية النتائج حسب الفئة ، أي الفئات = 0 ، أو الفئات = [0،2،3]

خريطة الحرارة COLORMAPs

اسم خريطة الألوان وصف
cv::COLORMAP_AUTUMN خريطة ألوان الخريف
cv::COLORMAP_BONE خريطة لون العظام
cv::COLORMAP_JET خريطة اللون النفاث
cv::COLORMAP_WINTER خريطة ألوان الشتاء
cv::COLORMAP_RAINBOW خريطة ألوان قوس قزح
cv::COLORMAP_OCEAN خريطة لون المحيط
cv::COLORMAP_SUMMER خريطة ألوان الصيف
cv::COLORMAP_SPRING خريطة ألوان الربيع
cv::COLORMAP_COOL خريطة لون بارد
cv::COLORMAP_HSV HSV (هوى ، التشبع ، القيمة) خريطة الألوان
cv::COLORMAP_PINK خريطة اللون الوردي
cv::COLORMAP_HOT خريطة ملونة ساخنة
cv::COLORMAP_PARULA خريطة ألوان بارولا
cv::COLORMAP_MAGMA خريطة ألوان الصهارة
cv::COLORMAP_INFERNO خريطة لون الجحيم
cv::COLORMAP_PLASMA خريطة ألوان البلازما
cv::COLORMAP_VIRIDIS خريطة ألوان فيريديس
cv::COLORMAP_CIVIDIS خريطة ألوان سيفيديس
cv::COLORMAP_TWILIGHT خريطة لون الشفق
cv::COLORMAP_TWILIGHT_SHIFTED خريطة لون الشفق المتحولة
cv::COLORMAP_TURBO خريطة لون توربو
cv::COLORMAP_DEEPGREEN خريطة اللون الأخضر العميق

تستخدم خرائط الألوان هذه بشكل شائع لتصور البيانات بتمثيلات ألوان مختلفة.



تم إنشاؤه في 2023-12-07, اخر تحديث 2024-02-03
المؤلفون: جلين جوشر (7) ، أيوشكسيل (1) ، chr043416@gmail.com (6) ، 1579093407@qq.com (1)

التعليقات