İç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

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",
    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,
    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,
    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,
    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",
    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",
    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 Heatmap()

İsim Tip Varsayılan Açıklama
names list None Sınıf adları sözlüğü.
imw int 0 Görüntü genişliği.
imh int 0 Resim yüksekliği.
colormap int cv2.COLORMAP_JET Isı haritası için kullanılacak renk haritası.
heatmap_alpha float 0.5 Isı haritası kaplaması için alfa karıştırma değeri.
view_img bool False Görüntünün ısı haritası kaplamasıyla görüntülenip görüntülenmeyeceği.
view_in_counts bool True Bölgeye giren nesnelerin sayısının görüntülenip görüntülenmeyeceği.
view_out_counts bool True Bölgeden çıkan nesnelerin sayısının görüntülenip görüntülenmeyeceği.
count_reg_pts list veya None None Sayım bölgesini tanımlayan noktalar (bir çizgi veya bir çokgen).
count_txt_color tuple (0, 0, 0) Sayıları görüntülemek için metin rengi.
count_bg_color tuple (255, 255, 255) Sayıları görüntülemek için arka plan rengi.
count_reg_color tuple (255, 0, 255) Sayma bölgesi için renk.
region_thickness int 5 Bölge çizgisinin kalınlığı.
line_dist_thresh int 15 Çizgi tabanlı sayım için mesafe eşiği.
line_thickness int 2 Çizimde kullanılan çizgilerin kalınlığı.
decay_factor float 0.99 Isı haritasının zaman içinde yoğunluğunu azaltmak için bozunma faktörü.
shape str "circle" Isı haritası lekelerinin şekli ('daire' veya 'dikdörtgen').

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.

SSS

Ultralytics YOLOv8 ısı haritalarını nasıl oluşturur ve bunların faydaları nelerdir?

Ultralytics YOLOv8 karmaşık verileri, farklı tonların veri yoğunluklarını temsil ettiği renk kodlu bir matrise dönüştürerek ısı haritaları oluşturur. Isı haritaları, verilerdeki desenleri, korelasyonları ve anormallikleri görselleştirmeyi kolaylaştırır. Daha sıcak tonlar daha yüksek değerleri gösterirken, daha soğuk tonlar daha düşük değerleri temsil eder. Başlıca faydaları arasında veri dağılımının sezgisel olarak görselleştirilmesi, etkili örüntü tespiti ve karar verme için gelişmiş uzamsal analiz yer alır. Daha fazla ayrıntı ve yapılandırma seçenekleri için Isı Haritası Yapılandırması bölümüne bakın.

Nesne takibi yapmak ve aynı anda bir ısı haritası oluşturmak için Ultralytics YOLOv8 adresini kullanabilir miyim?

Evet, Ultralytics YOLOv8 nesne izleme ve ısı haritası oluşturmayı aynı anda destekler. Bu, onun aracılığıyla elde edilebilir Heatmap çözümü nesne izleme modelleri ile entegre edilmiştir. Bunu yapmak için, ısı haritası nesnesini başlatmanız ve YOLOv8'un izleme özelliklerini kullanmanız gerekir. İşte basit bir örnek:

import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
heatmap_obj = solutions.Heatmap(colormap=cv2.COLORMAP_PARULA, view_img=True, shape="circle", names=model.names)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break
    tracks = model.track(im0, persist=True, show=False)
    im0 = heatmap_obj.generate_heatmap(im0, tracks)
    cv2.imshow("Heatmap", im0)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

Daha fazla rehberlik için İzleme Modu sayfasını kontrol edin.

Ultralytics YOLOv8 ısı haritalarını OpenCV veya Matplotlib gibi diğer veri görselleştirme araçlarından farklı kılan nedir?

Ultralytics YOLOv8 ısı haritaları, nesne algılama ve izleme modelleriyle entegrasyon için özel olarak tasarlanmıştır ve gerçek zamanlı veri analizi için uçtan uca bir çözüm sunar. OpenCV veya Matplotlib gibi genel görselleştirme araçlarının aksine, YOLOv8 ısı haritaları performans ve otomatik işleme için optimize edilmiştir ve kalıcı izleme, bozunma faktörü ayarı ve gerçek zamanlı video kaplaması gibi özellikleri destekler. YOLOv8 'un benzersiz özellikleri hakkında daha fazla bilgi için Ultralytics YOLOv8 Giriş bölümünü ziyaret edin.

Ultralytics YOLOv8 kullanarak ısı haritalarında yalnızca belirli nesne sınıflarını nasıl görselleştirebilirim?

'de istediğiniz sınıfları belirterek belirli nesne sınıflarını görselleştirebilirsiniz. track() YOLO yöntemini kullanabilirsiniz. Örneğin, yalnızca arabaları ve kişileri görselleştirmek istiyorsanız (sınıf indekslerinin 0 ve 2 olduğunu varsayarak) classes parametresini buna göre ayarlayın.

import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
heatmap_obj = solutions.Heatmap(colormap=cv2.COLORMAP_PARULA, view_img=True, shape="circle", names=model.names)

classes_for_heatmap = [0, 2]  # Classes to visualize
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break
    tracks = model.track(im0, persist=True, show=False, classes=classes_for_heatmap)
    im0 = heatmap_obj.generate_heatmap(im0, tracks)
    cv2.imshow("Heatmap", im0)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

İşletmeler veri analizinde ısı haritası oluşturmak için neden Ultralytics YOLOv8 adresini seçmelidir?

Ultralytics YOLOv8 gelişmiş nesne algılama ve gerçek zamanlı ısı haritası oluşturmanın sorunsuz entegrasyonunu sunarak verileri daha etkili bir şekilde görselleştirmek isteyen işletmeler için ideal bir seçimdir. Temel avantajlar arasında sezgisel veri dağılımı görselleştirme, verimli örüntü algılama ve daha iyi karar verme için gelişmiş mekansal analiz yer alır. Ayrıca, YOLOv8'un kalıcı izleme, özelleştirilebilir renk haritaları ve çeşitli dışa aktarma formatları desteği gibi son teknoloji özellikleri, kapsamlı veri analizi için TensorFlow ve OpenCV gibi diğer araçlardan daha üstün olmasını sağlar. Ultralytics Plans adresinden iş uygulamaları hakkında daha fazla bilgi edinin.



Oluşturma 2023-12-07, Güncelleme 2024-07-14
Yazarlar: RizwanMunawar (8), glenn-jocher (13), IvorZhu331 (1), AyushExel (1), 1579093407@qq.com (1)

Yorumlar