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