TrackZone sử dụng Ultralytics YOLO26#
TrackZone là gì?#
TrackZone chuyên giám sát các đối tượng trong những khu vực được chỉ định của một khung hình thay vì toàn bộ khung hình. Được xây dựng trên Ultralytics YOLO26, giải pháp này tích hợp tính năng phát hiện và tracking đối tượng cụ thể trong các vùng dành cho video và luồng camera trực tiếp. Các thuật toán tiên tiến và công nghệ deep learning của YOLO26 khiến đây trở thành lựa chọn lý tưởng cho các trường hợp sử dụng theo thời gian thực, mang lại khả năng tracking đối tượng chính xác và hiệu quả trong các ứng dụng như giám sát đám đông và giám sát an ninh.
Watch: How to Track Objects in Region using Ultralytics YOLO26 | TrackZone 🚀
Ưu điểm của Tracking Đối tượng trong các Vùng (TrackZone)#
- Phân tích có trọng tâm: Tracking đối tượng trong các vùng cụ thể cho phép thu được thông tin chuyên sâu tập trung hơn, hỗ trợ giám sát và phân tích chính xác các khu vực đáng quan tâm, chẳng hạn như lối vào hoặc vùng hạn chế.
- Giảm tải công việc xử lý tiếp theo: Bằng cách bỏ qua các đối tượng bên ngoài vùng, TrackZone loại bỏ những detection không liên quan, nhờ đó logic bạn xây dựng phía trên sẽ có ít đối tượng hơn để đếm, ghi log hoặc phát cảnh báo. Detection vẫn chạy trên frame đã được mask với kích thước đầy đủ thay vì crop sát vùng, vì vậy lợi ích nằm ở đầu ra sạch hơn, tập trung hơn chứ không phải model inference nhanh hơn.
- Tăng cường an ninh: Tracking theo vùng cải thiện hoạt động giám sát bằng cách theo dõi các khu vực quan trọng, hỗ trợ phát hiện sớm hoạt động bất thường hoặc sự cố an ninh.
- Giải pháp có khả năng mở rộng: Khả năng tập trung vào các vùng cụ thể giúp TrackZone thích ứng với nhiều kịch bản khác nhau, từ không gian bán lẻ đến môi trường công nghiệp, đồng thời bảo đảm tích hợp liền mạch và khả năng mở rộng.
Ứng dụng thực tế#
| Nông nghiệp | Giao thông vận tải |
|---|---|
![]() | ![]() |
| Tracking Cây trồng trên Đồng ruộng bằng Ultralytics YOLO26 | Tracking Phương tiện trên Đường bằng Ultralytics YOLO26 |
# Run a trackzone example
yolo solutions trackzone show=True
# Pass a source video
yolo solutions trackzone source="path/to/video.mp4" show=True
# Pass region coordinates
yolo solutions trackzone show=True region="[(150, 150), (1130, 150), (1130, 570), (150, 570)]"TrackZone dựa vào danh sách region để xác định phần nào của khung hình cần giám sát. Xác định polygon sao cho khớp với vùng thực tế mà bạn quan tâm (cửa ra vào, cổng, v.v.) và giữ show=True được bật trong quá trình cấu hình để có thể xác minh lớp phủ khớp với luồng video.
- Mỗi phần tử trong
regionlà một tọa độ pixel(x, y)trong khung hình video. Liệt kê các điểm theo thứ tự mà chúng cần được nối với nhau quanh chu vi của khu vực bạn muốn giám sát. - Các tọa độ gắn với độ phân giải của khung hình, vì vậy một vùng được thiết lập cho luồng 1280×720 sẽ không khớp với luồng 640×480. Giữ
show=Truetrong quá trình cấu hình để xác nhận lớp phủ khớp với luồng của bạn. TrackZonerút gọn các điểm về convex hull của chúng, vì vậy một hình lõm sẽ được đơn giản hóa thành polygon lồi nhỏ nhất chứa tất cả các điểm của nó. Đối với các hình không lồi hoặc nhiều khu vực tách biệt, hãy sử dụng giải pháp RegionCounter thay thế.- Nếu hoàn toàn bỏ qua
region, vùng mặc định[(75, 75), (565, 75), (565, 285), (75, 285)]sẽ được sử dụng.
Các argument của TrackZone#
Dưới đây là bảng các tham số của TrackZone:
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
model | str | None | Đường dẫn đến file model Ultralytics YOLO. |
region | list hoặc dict | None | Các điểm xác định vùng quan tâm, có thể là một list các tuple (x, y) hoặc một dictionary ánh xạ tên vùng với list điểm cho nhiều vùng (chỉ dành cho RegionCounter). Khi None, các solution yêu cầu vùng sẽ sử dụng vùng mặc định được định nghĩa sẵn. |
line_width | int | 2 | Độ dày đường kẻ cho các box, keypoint và số lượng mà solution vẽ. |
verbose | bool | True | Bật log theo từng frame của solution, gồm kích thước input, số lượng class và tốc độ xử lý. Riêng lệnh tracking luôn ở chế độ im lặng. |
Giải pháp TrackZone hỗ trợ các tham số track:
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
tracker | str | 'botsort.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.25 | Thiết lập ngưỡng độ tin cậy cho các detection; giá trị thấp hơn cho phép theo dõi nhiều đối tượng hơn nhưng có thể bao gồm các false positive. |
iou | float | 0.7 | Thiết lập ngưỡng Intersection over Union (IoU) để lọc các detection chồng lấn. |
classes | list | None | Lọc kết quả theo chỉ số class. Ví dụ, classes=[0, 2, 3] chỉ theo dõi các class được chỉ định. |
device | str | None | Chỉ định thiết bị dùng cho inference (ví dụ: cpu, cuda:0 hoặc 0). Cho phép người dùng lựa 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. |
imgsz | int or tuple | 640 | Kích thước ảnh inference mục tiêu: một số nguyên cho ảnh vuông hoặc một cặp (height, width). Các hình dạng được điều chỉnh theo stride của model. |
max_det | int | 300 | Số lượng detection tối đa được giữ lại trên mỗi frame trước khi tracking, giới hạn các đối tượng mà một solution xử lý trong các scene đông đúc. |
quantize | int or str | None | Độ chính xác inference: 16 (FP16) hoặc 32/không thiết lập (FP32) đối với các model PyTorch và TorchScript; các định dạng khác tính toán ở độ chính xác mà artifact và runtime của chúng chọn. Thay thế cờ half đã bị loại bỏ. |
Ngoài ra, các tùy chọn trực quan hóa sau đây cũng khả dụng:
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
show | bool | False | Nếu True, hiển thị image hoặc video đã được annotate 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 development hoặc testing. |
show_conf | bool | True | Hiển thị score confidence cho mỗi detection bên cạnh label. Cung cấp thông tin về mức độ chắc chắn của model đối với từng detection. |
show_labels | bool | True | Hiển thị label cho mỗi detection trong output trực quan. Cung cấp nhận biết tức thì về các object được phát hiện. |
Đếm Đối tượng Bên trong Vùng#
Mỗi lần gọi tracker đều trả về một object SolutionResults, trong đó thuộc tính total_tracks chứa số lượng đối tượng hiện đang được tracking bên trong vùng. Đọc giá trị này trên mỗi khung hình để giám sát số lượng hiện diện theo thời gian thực, chẳng hạn như ghi log mức độ đông đúc của một lối vào hoặc khu vực hạn chế:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
trackzone = solutions.TrackZone(show=False, region=region_points, model="yolo26n.pt")
while cap.isOpened():
success, im0 = cap.read()
if not success:
break
results = trackzone(im0)
print(f"Objects currently in zone: {results.total_tracks}") # live zone occupancy
cap.release()FAQ#
Tracking các đối tượng trong một khu vực hoặc vùng được xác định của khung hình video rất đơn giản với Ultralytics YOLO26. Chỉ cần sử dụng lệnh bên dưới để bắt đầu tracking. Phương pháp này bảo đảm việc phân tích hiệu quả và kết quả chính xác, phù hợp với các ứng dụng như giám sát an ninh, quản lý đám đông hoặc bất kỳ kịch bản nào yêu cầu tracking theo vùng.
yolo solutions trackzone source="path/to/video.mp4" show=TrueChỉ với vài dòng code, bạn có thể thiết lập tracking đối tượng trong các vùng cụ thể, giúp dễ dàng tích hợp vào các dự án của mình.
import cv2 from ultralytics import solutions cap = cv2.VideoCapture("path/to/video.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 = cv2.VideoWriter("trackzone_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h)) trackzone = solutions.TrackZone( show=True, region=[(150, 150), (1130, 150), (1130, 570), (150, 570)], model="yolo26n.pt" ) while cap.isOpened(): success, im0 = cap.read() if not success: break results = trackzone(im0) video_writer.write(results.plot_im) cap.release() video_writer.release() cv2.destroyAllWindows()Việc cấu hình các điểm của vùng để xử lý video bằng Ultralytics TrackZone rất đơn giản và có thể tùy chỉnh. Bạn có thể trực tiếp xác định và điều chỉnh các vùng thông qua một script Python, cho phép kiểm soát chính xác những khu vực bạn muốn giám sát.
# Define region points region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)] # Initialize trackzone trackzone = solutions.TrackZone( show=True, # display the output region=region_points, # pass region points )Hãy nhớ rằng
TrackZonerút gọn các điểm về convex hull của chúng, vì vậy hãy liệt kê các điểm theo thứ tự quanh chu vi của khu vực bạn muốn giám sát.Cả ba giải pháp đều hoạt động với các vùng, nhưng trả lời những câu hỏi khác nhau:
Giải pháp Sử dụng để Đầu ra điển hình TrackZone Tracking đối tượng và giám sát số lượng hiện diện theo thời gian thực bên trong một vùng lồi duy nhất Các ID đã tracking và total_trackscủa vùngObjectCounter Đếm các đối tượng băng qua một đường hoặc đi vào và rời khỏi một vùng Số lượt vào và ra tích lũy RegionCounter Đếm các đối tượng bên trong một hoặc nhiều vùng tùy ý (bao gồm cả vùng không lồi) Số lượng đối tượng theo từng vùng Chọn TrackZone khi bạn muốn tracking liên tục bên trong một khu vực và chọn RegionCounter khi cần nhiều vùng hoặc một hình không lồi.

