सामग्री पर जाएं

उन्नत डेटा विज़ुअलाइज़ेशन: हीटमैप्स का उपयोग कर 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 उदाहरण

import cv2

from ultralytics import YOLO, solutions

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 = solutions.Heatmap(
    colormap=cv2.COLORMAP_PARULA,
    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()
import cv2

from ultralytics import YOLO, solutions

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 = solutions.Heatmap(
    colormap=cv2.COLORMAP_PARULA,
    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()
import cv2

from ultralytics import YOLO, solutions

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 = solutions.Heatmap(
    colormap=cv2.COLORMAP_PARULA,
    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()
import cv2

from ultralytics import YOLO, solutions

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 = solutions.Heatmap(
    colormap=cv2.COLORMAP_PARULA,
    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()
import cv2

from ultralytics import YOLO, solutions

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 = solutions.Heatmap(
    colormap=cv2.COLORMAP_PARULA,
    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)
import cv2

from ultralytics import YOLO, solutions

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 = solutions.Heatmap(
    colormap=cv2.COLORMAP_PARULA,
    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()

तर्क Heatmap()

नाम प्रकार चूक या क़िस्‍म
classes_names dict None वर्ग के नामों का शब्दकोश।
imw int 0 इमेज की चौड़ाई.
imh int 0 छवि की ऊंचाई।
colormap int cv2.COLORMAP_JET हीटमैप के लिए उपयोग करने के लिए कलरमैप।
heatmap_alpha float 0.5 हीटमैप ओवरले के लिए अल्फा सम्मिश्रण मूल्य।
view_img bool False छवि को हीटमैप ओवरले के साथ प्रदर्शित करना है या नहीं।
view_in_counts bool True क्षेत्र में प्रवेश करने वाली वस्तुओं की संख्या प्रदर्शित करना है या नहीं.
view_out_counts bool True क्षेत्र से बाहर निकलने वाले ऑब्जेक्ट्स की संख्या प्रदर्शित करना है या नहीं.
count_reg_pts list नहीं तो None None गिनती क्षेत्र को परिभाषित करने वाले बिंदु (या तो एक रेखा या एक बहुभुज)।
count_txt_color tuple (0, 0, 0) गणना प्रदर्शित करने के लिए पाठ रंग.
count_bg_color tuple (255, 255, 255) गणना प्रदर्शित करने के लिए पृष्ठभूमि रंग.
count_reg_color tuple (255, 0, 255) गिनती क्षेत्र के लिए रंग।
region_thickness int 5 क्षेत्र रेखा की मोटाई।
line_dist_thresh int 15 लाइन-आधारित गिनती के लिए दूरी दहलीज।
line_thickness int 2 ड्राइंग में उपयोग की जाने वाली रेखाओं की मोटाई।
decay_factor float 0.99 समय के साथ तीव्रता को कम करने के लिए हीटमैप के लिए क्षय कारक।
shape str "circle" हीटमैप ब्लॉब्स का आकार ('सर्कल' या 'रेक्ट')।

तर्क model.track

नाम प्रकार चूक या क़िस्‍म
source im0 None छवियों या वीडियो के लिए स्रोत निर्देशिका
persist bool False फ़्रेम के बीच लगातार ट्रैक
tracker str botsort.yaml ट्रैकिंग विधि 'बाइटट्रैक' या 'बॉटसॉर्ट'
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 Cividis रंग मानचित्र
cv::COLORMAP_TWILIGHT गोधूलि रंग नक्शा
cv::COLORMAP_TWILIGHT_SHIFTED स्थानांतरित गोधूलि रंग नक्शा
cv::COLORMAP_TURBO टर्बो रंग का नक्शा
cv::COLORMAP_DEEPGREEN गहरा हरा रंग नक्शा

ये कलरमैप आमतौर पर विभिन्न रंग अभ्यावेदन के साथ डेटा को विज़ुअलाइज़ करने के लिए उपयोग किए जाते हैं।



Created 2023-12-07, Updated 2024-06-10
Authors: glenn-jocher (11), IvorZhu331 (1), RizwanMunawar (8), AyushExel (1), 1579093407@qq.com (1)

टिप्पणियाँ