تصور البيانات المتقدم: خرائط الحرارة باستخدام 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",
classes_names=model.names)
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,
classes_names=model.names)
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
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 polygon points
region_points = [(20, 400), (1080, 404), (1080, 360), (20, 360), (20, 400)]
# 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,
classes_names=model.names)
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,
classes_names=model.names)
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",
classes_names=model.names)
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",
classes_names=model.names)
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 |
ارتفاع خريطة التمثيل اللوني |
line_thickness |
int |
2 |
زيادة المربعات المحيطة وحساب سمك النص |
view_in_counts |
bool |
True |
عرض الأعداد فقط على إطار الفيديو |
view_out_counts |
bool |
True |
عرض الأعداد الفاصلة فقط على إطار الفيديو |
classes_names |
dict |
model.model.names |
قاموس أسماء الفئات |
heatmap_alpha |
float |
0.5 |
قيمة ألفا للخريطة الحرارية |
count_reg_pts |
list |
None |
نقاط منطقة عد الكائنات |
count_txt_color |
RGB Color |
(0, 0, 0) |
لون المقدمة لنص عدد الكائنات |
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 |
عتبة المسافة الإقليدية لعداد الخط |
count_bg_color |
RGB Color |
(255, 255, 255) |
عد لون التمييز |
cls_txtdisplay_gap |
int |
50 |
عرض الفجوة بين كل عدد فئات |
الحجج 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-04-05
المؤلفون: رضوان منور (8) ، جلين جوشر (7) ، أيوشكسل (1) ، 1579093407@qq.com (1)