Bản đồ nhiệt theo dõi đối tượng với Ultralytics YOLO26#
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ông | Bán lẻ |
|---|---|
![]() | ![]() |
| Bản đồ nhiệt giao thông vận tải Ultralytics YOLO | Bả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:
# 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ại | Mặc định | Mô tả |
|---|---|---|---|
model | str | None | Đường dẫn đến tệp model Ultralytics YOLO. |
colormap | int | cv2.COLORMAP_DEEPGREEN | Bản đồ màu (colormap) để sử dụng cho bản đồ nhiệt. |
show_in | bool | True | Cờ để kiểm soát việc hiển thị số lượng đếm vào trên luồng video. |
show_out | bool | True | Cờ để kiểm soát việc hiển thị số lượng đếm ra trên luồng video. |
region | list hoặc dict | None | Cá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ại | Mặc định | Mô tả |
|---|---|---|---|
tracker | str | '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. |
conf | float | 0.1 | Thiế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ả. |
iou | float | 0.7 | Đặt ngưỡng Intersection over Union (IoU) để lọc các phát hiện trùng lặp. |
classes | list | None | Lọ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. |
verbose | bool | True | Kiể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. |
device | str | None | Chỉ đị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ại | Mặc định | Mô tả |
|---|---|---|---|
show | bool | False | Nế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_width | int or None | None | Chỉ đị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_conf | bool | True | Hiể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_labels | bool | True | Hiể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 Colormap | Mô tả |
|---|---|
cv2.COLORMAP_AUTUMN | Bản đồ màu Autumn |
cv2.COLORMAP_BONE | Bản đồ màu Bone |
cv2.COLORMAP_JET | Bản đồ màu Jet |
cv2.COLORMAP_WINTER | Bản đồ màu Winter |
cv2.COLORMAP_RAINBOW | Bản đồ màu Rainbow |
cv2.COLORMAP_OCEAN | Bản đồ màu Ocean |
cv2.COLORMAP_SUMMER | Bản đồ màu Summer |
cv2.COLORMAP_SPRING | Bản đồ màu Spring |
cv2.COLORMAP_COOL | Bản đồ màu Cool |
cv2.COLORMAP_HSV | Bản đồ màu HSV (Hue, Saturation, Value) |
cv2.COLORMAP_PINK | Bản đồ màu Pink |
cv2.COLORMAP_HOT | Bản đồ màu Hot |
cv2.COLORMAP_PARULA | Bản đồ màu Parula |
cv2.COLORMAP_MAGMA | Bản đồ màu Magma |
cv2.COLORMAP_INFERNO | Bản đồ màu Inferno |
cv2.COLORMAP_PLASMA | Bản đồ màu Plasma |
cv2.COLORMAP_VIRIDIS | Bản đồ màu Viridis |
cv2.COLORMAP_CIVIDIS | Bản đồ màu Cividis |
cv2.COLORMAP_TWILIGHT | Bản đồ màu Twilight |
cv2.COLORMAP_TWILIGHT_SHIFTED | Bản đồ màu Twilight Shifted |
cv2.COLORMAP_TURBO | Bản đồ màu Turbo |
cv2.COLORMAP_DEEPGREEN | Bả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:
- 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
- Đố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.VideoWritercủa OpenCV và ghiresults.plot_imcho mọi khung hình được xử lý, như được hiển thị trong main example. Thuộc tínhplot_imchứa khung hình đã được áp dụng lớp phủ bản đồ nhiệt.Có. Truyền tham số
regionvàoHeatmap()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ồmin_count,out_countvà 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ố
classesvàoHeatmap()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.

