İçeriğe geç

Gelişmiş Veri Görselleştirme: Ultralytics YOLOv8 kullanarak ısı haritaları 🚀

Isı Haritalarına Giriş

ile oluşturulan bir ısı haritası Ultralytics YOLOv8 karmaşık verileri canlı, renk kodlu bir matrise dönüştürür. Bu görsel araç, değişen veri değerlerini temsil etmek için daha sıcak tonların daha yüksek yoğunlukları ve daha soğuk tonların daha düşük değerleri belirttiği bir renk yelpazesi kullanır. Isı haritaları karmaşık veri modellerini, korelasyonları ve anomalileri görselleştirmede mükemmeldir ve çeşitli alanlarda veri yorumlamasına erişilebilir ve ilgi çekici bir yaklaşım sunar.



İzle: Isı haritaları kullanarak Ultralytics YOLOv8

Veri Analizi için Neden Isı Haritalarını Seçmelisiniz?

  • Sezgisel Veri Dağılımı Görselleştirme: Isı haritaları, karmaşık veri kümelerini anlaşılması kolay görsel formatlara dönüştürerek veri yoğunluğu ve dağılımının anlaşılmasını kolaylaştırır.
  • Etkili Örüntü Tespiti: Verileri ısı haritası biçiminde görselleştirerek eğilimleri, kümeleri ve aykırı değerleri tespit etmek daha kolay hale gelir ve daha hızlı analiz ve içgörü sağlar.
  • Gelişmiş Mekânsal Analiz ve Karar Alma: Isı haritaları mekânsal ilişkilerin gösterilmesinde etkilidir ve iş zekâsı, çevre çalışmaları ve şehir planlama gibi sektörlerde karar alma süreçlerine yardımcı olur.

Gerçek Dünya Uygulamaları

Ulaşım Perakende
Ultralytics YOLOv8 Ulaşım Isı Haritası Ultralytics YOLOv8 Perakende Isı Haritası
Ultralytics YOLOv8 Ulaşım Isı Haritası Ultralytics YOLOv8 Perakende Isı Haritası

Isı Haritası Yapılandırması

  • heatmap_alpha: Bu değerin (0,0 - 1,0) aralığında olduğundan emin olun.
  • decay_factor: Bir nesne artık çerçevede olmadıktan sonra ısı haritasını kaldırmak için kullanılır, değeri de (0.0 - 1.0) aralığında olmalıdır.

Ultralytics kullanarak ısı haritalarıYOLOv8 Örnek

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()

Argümanlar set_args

İsim Tip Varsayılan Açıklama
view_img bool False Çerçeveyi ısı haritası ile görüntüleme
colormap cv2.COLORMAP None ısı haritası için cv2.COLORMAP
imw int None Isı Haritası Genişliği
imh int None Isı Haritasının Yüksekliği
line_thickness int 2 Sınırlayıcı kutuları artırın ve metin kalınlığını sayın
view_in_counts bool True Giriş sayımlarını yalnızca video karesinde görüntüleme
view_out_counts bool True Çıkış sayılarını yalnızca video karesinde görüntüleme
classes_names dict model.model.names Sınıf Adları Sözlüğü
heatmap_alpha float 0.5 Isı haritası alfa değeri
count_reg_pts list None Nesne sayma bölgesi noktaları
count_txt_color RGB Color (0, 0, 0) Nesne sayıları metni için ön plan rengi
count_reg_color RGB Color (255, 0, 255) Sayım bölgesi rengi
region_thickness int 5 Sayım bölgesi kalınlık değeri
decay_factor float 0.99 Belirli bir süre sonra ısı haritası alanının kaldırılması için bozunma faktörü
shape str circle Ekran için ısı haritası şekli "dikdörtgen" veya "daire" desteklenir
line_dist_thresh int 15 Hat sayacı için Öklid Mesafesi eşiği
count_bg_color RGB Color (255, 255, 255) Fosforlu kalem rengini sayın
cls_txtdisplay_gap int 50 Her sınıf sayısı arasındaki boşluğu göster

Argümanlar model.track

İsim Tip Varsayılan Açıklama
source im0 None resimler veya videolar için kaynak dizin
persist bool False kareler arasında kalıcı izler
tracker str botsort.yaml İzleme yöntemi 'bytetrack' veya 'botsort'
conf float 0.3 Güven Eşiği
iou float 0.5 IOU Eşiği
classes list None sonuçları sınıfa göre filtreleyin, yani classes=0 veya classes=[0,2,3]

Isı Haritası COLORMAPs

Renk Haritası Adı Açıklama
cv::COLORMAP_AUTUMN Sonbahar renk haritası
cv::COLORMAP_BONE Kemik renk haritası
cv::COLORMAP_JET Jet renk haritası
cv::COLORMAP_WINTER Kış renk haritası
cv::COLORMAP_RAINBOW Gökkuşağı renk haritası
cv::COLORMAP_OCEAN Okyanus renk haritası
cv::COLORMAP_SUMMER Yaz renk haritası
cv::COLORMAP_SPRING Bahar renk haritası
cv::COLORMAP_COOL Harika renk haritası
cv::COLORMAP_HSV HSV (Ton, Doygunluk, Değer) renk haritası
cv::COLORMAP_PINK Pembe renkli harita
cv::COLORMAP_HOT Sıcak renk haritası
cv::COLORMAP_PARULA Parula renk haritası
cv::COLORMAP_MAGMA Magma renk haritası
cv::COLORMAP_INFERNO Inferno renk haritası
cv::COLORMAP_PLASMA Plazma renk haritası
cv::COLORMAP_VIRIDIS Viridis renk haritası
cv::COLORMAP_CIVIDIS Cividis renkli harita
cv::COLORMAP_TWILIGHT Alacakaranlık renk haritası
cv::COLORMAP_TWILIGHT_SHIFTED Kaydırılmış Alacakaranlık renk haritası
cv::COLORMAP_TURBO Turbo renk haritası
cv::COLORMAP_DEEPGREEN Derin Yeşil renk haritası

Bu renk haritaları, verileri farklı renk gösterimleriyle görselleştirmek için yaygın olarak kullanılır.



Oluşturuldu 2023-12-07, Güncellendi 2024-04-05
Yazarlar: RizwanMunawar (8), glenn-jocher (7), AyushExel (1), 1579093407@qq.com (1)

Yorumlar