Link to this sectionBản đồ nhiệt theo dõi đối tượng với Ultralytics YOLO26#
Giải pháp Heatmap 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 mỗi khung hình, vì vậy các khu vực bận rộn sẽ sáng lên với tông màu ấm trong khi các khu vực yên tĩnh vẫn giữ tông màu lạnh. Được xây dựng dựa trên theo dõi đối tượng của YOLO26, nó biến bất kỳ video nào thành bản đồ hoạt động không gian giúp tiết lộ lưu lượng giao thông, sự di chuyển của đám đông và các khu vực lưu trú chỉ với một lệnh gọi Python hoặc lệnh CLI duy nhất.
Watch: Heatmaps using Ultralytics YOLO26
Link to this sectionTạ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 đối tượng trong cùng một quy trình: Truyền một
region(vùng) để đếm các đối tượng đi vào và đi ra khỏi khu vực trong khi 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.
Link to this sectionCá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 |
Link to this sectionCá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)]"Link to this sectionCác đối số của Heatmap()#
Dưới đây là bảng 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, có thể là danh sách các bộ (x, y) hoặc một dictionary ánh xạ tên vùng tới danh sách các đ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ề giá trị mặc định được định nghĩa trước. |
Bạn cũng có thể áp dụng các đối số track khác nhau trong giải pháp Heatmap.
| Đối số | Loại | Mặc định | Mô tả |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Chỉ định thuật toán tracking 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 | Thiết lập ngưỡng Intersection over Union (IoU) để lọc các phát hiện chồng lấp. |
classes | list | None | Lọc kết quả theo chỉ số lớp. Ví dụ, classes=[0, 2, 3] chỉ theo dõi các lớp đã 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ị để thực hiện suy luận (ví dụ: cpu, cuda:0 hoặc 0). Cho phép người dùng chọn giữa CPU, một GPU cụ thể, hoặc các thiết bị tính toán khác để thực thi model. |
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 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 cho 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 của bounding box. Nếu None, độ dày đường được tự động điều chỉnh dựa trên kích thước hình ảnh. Cung cấp khả năng tùy chỉnh trực quan để rõ ràng hơn. |
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. |
Link to this sectionBảng màu (Colormaps) cho bản đồ nhiệt#
Đối số colormap chấp nhận bất kỳ OpenCV colormap nào. Truyền hằng số từ mô-đun 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 |
Link to this sectionCách thức hoạt động của bản đồ nhiệt#
Giải pháp Heatmap mở rộng lớp ObjectCounter. Ở 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. Sau đó, mỗi khung hình đượ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, tiết lộ các mô hình 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 một 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 khu vực đó trong khi bản đồ nhiệt được tạo.
Link to this sectionKết luận#
Giải pháp bản đồ nhiệt Ultralytics YOLO26 biến kết quả theo dõi đối tượng thành một lớp phủ hoạt động trực quan với chỉ một vài dòng mã. Để đi xa hơn, hãy kết hợp nó với đếm đối tượng, khám phá các Giải pháp Ultralytics khác hoặc đọc về chế độ theo dõi cơ bản.
Link to this sectionCâu hỏi thường gặp#
Link to this sectionUltralytics YOLO26 tạo bản đồ nhiệt từ video như thế nào?#
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 mỗi đối tượng được theo dõi, sau đó tô màu kết quả và trộn nó với khung hình gốc. Các khu vực nơi đối tượng xuất hiện thường xuyên hoặc dừng lại lâu sẽ tạo ra cường độ cao hơn và hiển thị bằng các tông màu ấm. Để biết các tùy chọn cấu hình, hãy tham khảo phần Heatmap() Arguments.
Link to this sectionLàm cách nào để lưu đầu ra bản đồ nhiệt vào tệp video?#
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 ví dụ chính. Thuộc tính plot_im chứa khung hình đã được áp dụng lớp phủ bản đồ nhiệt.
Link to this sectionTôi có thể kết hợp bản đồ nhiệt với việc đếm đối tượng không?#
Có. Truyền đối số region vào Heatmap() với các điểm đườ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 khu vực đó trong khi bản đồ nhiệt được tạo. Kết quả trả về bao gồm in_count, out_count và số lượng theo từng lớp. Xem hướng dẫn đếm đối tượng để biết chi tiết cấu hình vùng.
Link to this sectionLàm thế nào tôi có thể chỉ trực quan hóa các lớp đối tượng cụ thể trong heatmap bằng Ultralytics YOLO26?#
Truyền đối số classes vào Heatmap() với các chỉ số lớp mà bạn muốn giữ lại. Ví dụ: classes=[0, 2] xây dựng bản đồ nhiệt chỉ từ người và xe hơi (chỉ số 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()Link to this sectionĐiều gì làm cho các heatmap của Ultralytics YOLO26 khác biệt so với các công cụ trực quan hóa dữ liệu khác như OpenCV hoặc Matplotlib?#
Các bản đồ nhiệt Ultralytics YOLO26 tích hợp phát hiện đối tượng, theo dõi, tích lũy cường độ và hiển thị lớp phủ vào một lệnh gọi duy nhất, trong khi các công cụ chung như OpenCV hoặc Matplotlib yêu cầu bạn tự xây dựng quy trình đó. Giải pháp xử lý các luồng video trong thời gian thực và hỗ trợ theo dõi bền bỉ cùng các colormap có thể tùy chỉnh. Để biết chi tiết về mô hình cơ bản, hãy xem trang mô hình YOLO26.

