YOLO Vision 2026:

Bản đồ nhiệt theo dõi đối tượng với Ultralytics YOLO26#

Open Heatmaps In Colab

Heatmap solution trong Ultralytics YOLO26 theo dõi các đối tượng qua các khung hình video và phủ cường độ chuyển động tích lũy của chúng lên từng khung hình, giúp các khu vực bận rộn phát sáng với màu ấm trong khi các khu vực ít người vẫn giữ màu mát. Được xây dựng dựa trên tính năng object tracking của YOLO26, giải pháp này biến bất kỳ video nào thành bản đồ hoạt động không gian, làm nổi bật lưu lượng giao thông, dòng người và các vùng dừng chân chỉ với một lời gọi Python hoặc lệnh CLI duy nhất.



Watch: Heatmaps using Ultralytics YOLO26

Tại sao nên sử dụng bản đồ nhiệt cho phân tích video?#

  • Nhận diện nhanh các mô hình hoạt động: Cường độ tích tụ tại bất cứ nơi nào các đối tượng được theo dõi dành thời gian, vì vậy các làn đường lưu lượng cao, các kệ hàng phổ biến hoặc các nút thắt đám đông sẽ nổi bật mà không cần xem xét thủ công từng khung hình.
  • Tích hợp sẵn tính năng theo dõi: Giải pháp chạy tính năng phát hiện và theo dõi của YOLO26 bên trong, vì vậy không cần quy trình theo dõi riêng biệt để kết nối.
  • Đếm trong cùng một lượt: Truyền region để đếm các đối tượng đi vào và đi ra khỏi một vùng trong lúc bản đồ nhiệt đang được tạo, kết hợp hai tác vụ phân tích trong một lần chạy.

Các ứng dụng thực tế#

Giao thôngBán lẻ
Ultralytics YOLO heatmap overlay showing vehicle traffic densityUltralytics YOLO heatmap overlay showing retail customer movement
Bản đồ nhiệt giao thông vận tải Ultralytics YOLOBản đồ nhiệt bán lẻ Ultralytics YOLO

Cách tạo bản đồ nhiệt với Ultralytics YOLO#

Chạy giải pháp Heatmap trên nguồn video từ CLI hoặc Python. Ví dụ Python dưới đây ghi các khung hình đã xử lý vào một tệp video đầu ra:

Heatmap sử dụng Ultralytics YOLO
# Run a heatmap example
yolo solutions heatmap show=True

# Pass a source video
yolo solutions heatmap source="path/to/video.mp4"

# Pass a custom colormap
yolo solutions heatmap colormap=cv2.COLORMAP_INFERNO

# Heatmaps + object counting
yolo solutions heatmap region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"

Đối số Heatmap()#

Dưới đây là bảng chứa các đối số của Heatmap:

Đối sốLoạiMặc địnhMô tả
modelstrNoneĐường dẫn đến tệp model Ultralytics YOLO.
colormapintcv2.COLORMAP_DEEPGREENBản đồ màu (colormap) để sử dụng cho bản đồ nhiệt.
show_inboolTrueCờ để kiểm soát việc hiển thị số lượng đếm vào trên luồng video.
show_outboolTrueCờ để kiểm soát việc hiển thị số lượng đếm ra trên luồng video.
regionlist hoặc dictNoneCác điểm xác định vùng quan tâm (ROI), có thể là một danh sách các tuple (x, y) hoặc một từ điển ánh xạ tên vùng tới danh sách điểm cho nhiều vùng (chỉ áp dụng cho RegionCounter). Khi là None, các giải pháp yêu cầu một vùng sẽ quay về sử dụng giá trị mặc định được định nghĩa sẵn.

Bạn cũng có thể áp dụng các tham số track khác nhau trong giải pháp Heatmap.

Đối sốLoạiMặc địnhMô tả
trackerstr'tracktrack.yaml'Chỉ định thuật toán theo dõi cần sử dụng. Các tùy chọn tích hợp sẵn: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.1Thiết lập ngưỡng tin cậy cho các phát hiện; các giá trị thấp hơn cho phép nhiều đối tượng được theo dõi hơn nhưng có thể bao gồm các kết quả dương tính giả.
ioufloat0.7Đặt ngưỡng Intersection over Union (IoU) để lọc các phát hiện trùng lặp.
classeslistNoneLọc kết quả theo chỉ mục lớp. Ví dụ: classes=[0, 2, 3] chỉ theo dõi các lớp được chỉ định.
verboseboolTrueKiểm soát việc hiển thị kết quả theo dõi, cung cấp đầu ra trực quan của các đối tượng được theo dõi.
devicestrNoneChỉ định thiết bị để suy luận (ví dụ: cpu, cuda:0 hoặc 0). Cho phép người dùng lựa chọn giữa CPU, GPU cụ thể hoặc các thiết bị tính toán khác để thực thi mô hình.

Ngoài ra, các đối số trực quan hóa được hỗ trợ được liệt kê dưới đây:

Đối sốLoạiMặc địnhMô tả
showboolFalseNếu là True, hiển thị các hình ảnh hoặc video đã được chú thích trong một cửa sổ. Hữu ích để nhận phản hồi trực quan ngay lập tức trong quá trình phát triển hoặc kiểm thử.
line_widthint or NoneNoneChỉ định độ dày đường viền của các hộp bao. Nếu là None, độ dày đường viền được tự động điều chỉnh dựa trên kích thước ảnh. Cung cấp khả năng tùy chỉnh trực quan để dễ quan sát.
show_confboolTrueHiển thị điểm số tin cậy (confidence score) cho mỗi phát hiện cùng với nhãn. Cung cấp thông tin chi tiết về độ chắc chắn của model đối với từng phát hiện.
show_labelsboolTrueHiển thị nhãn cho mỗi phát hiện trong đầu ra hình ảnh. Cung cấp khả năng nhận biết tức thì các đối tượng được phát hiện.

Bảng màu (Colormaps) cho bản đồ nhiệt#

Tham số colormap chấp nhận bất kỳ OpenCV colormap nào. Truyền hằng số từ module cv2, ví dụ colormap=cv2.COLORMAP_INFERNO:

Tên ColormapMô tả
cv2.COLORMAP_AUTUMNBản đồ màu Autumn
cv2.COLORMAP_BONEBản đồ màu Bone
cv2.COLORMAP_JETBản đồ màu Jet
cv2.COLORMAP_WINTERBản đồ màu Winter
cv2.COLORMAP_RAINBOWBản đồ màu Rainbow
cv2.COLORMAP_OCEANBản đồ màu Ocean
cv2.COLORMAP_SUMMERBản đồ màu Summer
cv2.COLORMAP_SPRINGBản đồ màu Spring
cv2.COLORMAP_COOLBản đồ màu Cool
cv2.COLORMAP_HSVBản đồ màu HSV (Hue, Saturation, Value)
cv2.COLORMAP_PINKBản đồ màu Pink
cv2.COLORMAP_HOTBản đồ màu Hot
cv2.COLORMAP_PARULABản đồ màu Parula
cv2.COLORMAP_MAGMABản đồ màu Magma
cv2.COLORMAP_INFERNOBản đồ màu Inferno
cv2.COLORMAP_PLASMABản đồ màu Plasma
cv2.COLORMAP_VIRIDISBản đồ màu Viridis
cv2.COLORMAP_CIVIDISBản đồ màu Cividis
cv2.COLORMAP_TWILIGHTBản đồ màu Twilight
cv2.COLORMAP_TWILIGHT_SHIFTEDBản đồ màu Twilight Shifted
cv2.COLORMAP_TURBOBản đồ màu Turbo
cv2.COLORMAP_DEEPGREENBản đồ màu Deep Green

Cách thức hoạt động của bản đồ nhiệt#

Heatmap solution mở rộng lớp ObjectCounter. Trên khung hình được xử lý đầu tiên, nó tạo ra một lớp cường độ trống khớp với kích thước khung hình. Mỗi khung hình sau đó được xử lý theo hai bước:

  1. Tính năng theo dõi của YOLO26 phát hiện và bám sát mọi đối tượng trong khung hình
  2. Đối với mỗi đối tượng được theo dõi, cường độ bản đồ nhiệt tăng lên trong một vùng tròn tập trung tại hộp bao (bounding box) của nó

Mỗi khung hình một lần, lớp cường độ tích lũy được chuẩn hóa, tô màu với colormap đã chọn và trộn với khung hình gốc. Lớp phủ xuất hiện ngay khi có ít nhất một đối tượng được theo dõi; các khung hình không có đối tượng được theo dõi sẽ hiển thị mà không có lớp phủ bản đồ nhiệt.

Kết quả là một hình ảnh trực quan động tích tụ theo thời gian, hé lộ các mẫu lưu lượng giao thông, chuyển động của đám đông hoặc các hành vi không gian khác trong dữ liệu video của bạn. Khi region được thiết lập, giải pháp cũng đếm các đối tượng đi vào và đi ra khỏi vùng đó trong khi bản đồ nhiệt được tạo.

Kết luận#

Giải pháp Ultralytics YOLO26 Heatmap biến các kết quả object tracking thành một lớp phủ hoạt động trực quan chỉ với vài dòng mã. Để tiến xa hơn, hãy kết hợp giải pháp này với tính năng object counting, khám phá các Ultralytics Solutions khác, hoặc tìm hiểu về tracking mode cơ bản.

Câu hỏi thường gặp#

  • Ultralytics YOLO26 tạo bản đồ nhiệt bằng cách theo dõi các đối tượng qua các khung hình video và tích lũy giá trị cường độ tại vị trí của từng đối tượng được theo dõi, sau đó tô màu kết quả và hòa trộn nó với khung hình gốc. Các khu vực có đối tượng xuất hiện thường xuyên hoặc lưu lại lâu sẽ tích tụ cường độ cao hơn và hiển thị bằng các màu ấm hơn. Để biết các tùy chọn cấu hình, hãy tham khảo phần Heatmap() Arguments.

  • Sử dụng cv2.VideoWriter của OpenCV và ghi results.plot_im cho mọi khung hình được xử lý, như được hiển thị trong main example. Thuộc tính plot_im chứa khung hình đã được áp dụng lớp phủ bản đồ nhiệt.

  • Có. Truyền tham số region vào Heatmap() với các điểm đường thẳng, hình chữ nhật hoặc đa giác, và giải pháp sẽ đếm các đối tượng đi vào và đi ra khỏi vùng đó trong khi bản đồ nhiệt được tạo. Các kết quả trả về bao gồm in_count, out_count và số lượng theo từng lớp. Xem object counting guide để biết chi tiết cấu hình vùng.

  • Truyền tham số classes vào Heatmap() với các chỉ mục lớp bạn muốn giữ lại. Ví dụ, classes=[0, 2] tạo bản đồ nhiệt chỉ từ người và xe hơi (chỉ mục lớp COCO 0 và 2):

    import cv2
    
    from ultralytics import solutions
    
    cap = cv2.VideoCapture("path/to/video.mp4")
    heatmap = solutions.Heatmap(show=True, model="yolo26n.pt", classes=[0, 2])
    
    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            break
        results = heatmap(im0)
    cap.release()
    cv2.destroyAllWindows()
  • Bản đồ nhiệt Ultralytics YOLO26 tích hợp object detection, tracking, tích lũy cường độ và hiển thị lớp phủ thành một lệnh gọi duy nhất, trong khi các công cụ chung chung như OpenCV hoặc Matplotlib yêu cầu bạn tự xây dựng đường ống đó. Giải pháp xử lý các luồng video trong thời gian thực và hỗ trợ theo dõi liên tục cùng bảng màu có thể tùy chỉnh ngay từ khi cài đặt. Để biết chi tiết về mô hình cơ sở, hãy xem YOLO26 model page.

Bình luận