TrackZone bằ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 frame, thay vì toàn bộ frame. Được xây dựng trên Ultralytics YOLO26, giải pháp này tích hợp khả năng phát hiện và theo dõi đối tượng riêng trong các vùng cụ thể trên video và luồng hình ảnh camera trực tiếp. Các thuật toán tiên tiến và công nghệ học sâu 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 đến khả năng theo dõi đố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.
Xem: Cách theo dõi đối tượng trong một vùng bằng Ultralytics YOLO26 | TrackZone 🚀
Ưu điểm của việc theo dõi đối tượng trong vùng (TrackZone)#
- Phân tích có trọng tâm: Theo dõi đối tượng trong các vùng cụ thể giúp tập trung phân tích hơn, cho phép giám sát và phân tích chính xác các khu vực cần quan tâm, chẳng hạn như lối vào hoặc vùng hạn chế.
- Giảm khối lượng công việc ở các bước tiếp theo: Bằng cách bỏ qua các đối tượng nằm ngoài vùng, TrackZone loại bỏ những phát hiện không liên quan, nhờ đó logic bạn xây dựng phía trên cần đếm, ghi log hoặc cảnh báo về ít đối tượng hơn. Quá trình phát hiện vẫn chạy trên frame đã che có kích thước đầy đủ, thay vì crop sát vùng, vì vậy lợi ích là đầu ra gọn gàng và tập trung hơn chứ không phải suy luận model nhanh hơn.
- Tăng cường an ninh: Theo dõi 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 trọng yếu, hỗ trợ phát hiện sớm hoạt động bất thường hoặc vi phạm 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 tình huống khác nhau, từ không gian bán lẻ đến môi trường công nghiệp, đồng thời đảm bảo 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 |
|---|---|
![]() | ![]() |
| Theo dõi cây trồng trên cánh đồng bằng Ultralytics YOLO26 | Theo dõi 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)]"Giải pháp TrackZone dựa vào danh sách region để xác định phần nào của frame cần giám sát. Xác định đa giác sao cho khớp với khu vực thực tế bạn quan tâm (cửa ra vào, cổng, v.v.) và duy trì show=True trong khi cấu hình để xác minh lớp phủ khớp với luồng video.
- Mỗi mục trong
regionlà tọa độ pixel(x, y)trong frame video. Liệt kê các điểm theo thứ tự cần nối chúng dọc theo chu vi của khu vực bạn muốn giám sát. - Tọa độ phụ thuộc vào độ phân giải frame, vì vậy vùng được thiết lập cho luồng hình ảnh 1280×720 sẽ không khớp với luồng 640×480. Duy trì
show=Truetrong khi cấu hình để xác nhận lớp phủ khớp với luồng hình ảnh. TrackZonerút gọn các điểm thành bao lồi, vì vậy hình dạng lõm được đơn giản hóa thành đa giác lồi nhỏ nhất chứa tất cả các điểm. Đối với hình dạng không lồi hoặc nhiều khu vực riêng biệt, hãy sử dụng giải pháp RegionCounter.- Nếu bỏ qua hoàn toàn
region, vùng mặc định[(75, 75), (565, 75), (565, 285), (75, 285)]sẽ được sử dụng.
Các đối số của TrackZone#
Dưới đây là bảng các đối số của TrackZone:
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
model | str | None | Đường dẫn đến tệp model Ultralytics YOLO. |
region | list hoặc dict | None | Các điểm xác định vùng quan tâm, dưới dạng danh sách tuple (x, y) hoặc từ điển ánh xạ tên vùng với danh sách điểm cho nhiều vùng (chỉ dùng RegionCounter). Khi là None, các giải pháp cần vùng sẽ dùng vùng mặc định được xác định trước. |
line_width | int | 2 | Độ dày đường viền của box, keypoint và số đếm mà giải pháp vẽ. |
verbose | bool | True | Bật nhật ký theo từng frame của giải pháp, gồm shape đầu vào, số lượng class và tốc độ xử lý. Bản thân lệnh gọi tracking luôn không ghi nhật ký. |
Giải pháp TrackZone hỗ trợ các tham số track:
| Đối số | Kiểu | 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.25 | Đặt ngưỡng confidence cho các đối tượng được phát hiện; 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ả kết quả dương tính giả. |
iou | float | 0.7 | Đặt ngưỡng Intersection over Union (IoU) để lọc các đối tượng phát hiện bị chồng lấn. |
classes | list | None | Lọc kết quả theo chỉ mục 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 để suy luận (ví dụ: cpu, cuda:0 hoặc 0). Cho phép người dùng chọn CPU, một GPU cụ thể hoặc thiết bị tính toán khác để chạy model. |
imgsz | int or tuple | 640 | Kích thước ảnh suy luận mục tiêu: số nguyên cho ảnh vuông hoặc cặp (height, width). Kích thước sẽ được điều chỉnh theo stride của model. |
max_det | int | 300 | Số lượng đối tượng phát hiện tối đa được giữ lại trong mỗi khung hình trước khi theo dõi, giới hạn số đối tượng mà một giải pháp xử lý trong các cảnh dày đặc. |
quantize | int or str | None | Độ chính xác suy luận: 16 (FP16) hoặc 32/unset (FP32) cho model PyTorch và TorchScript khi chạy ngoài CPU; các định dạng khác sử dụng độ chính xác do artifact và runtime của chúng lựa chọn. Thay thế đối số half đã lỗi thời. |
Ngoài ra, có các tùy chọn trực quan hóa sau:
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
show | bool | False | Nếu True, hiển thị ả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ử. |
show_conf | bool | True | Hiển thị điểm confidence bên cạnh nhãn của mỗi detection. Cho biết mức độ chắc chắn của model đối với từng detection. |
show_labels | bool | True | Hiển thị nhãn cho mỗi detection trong đầu ra trực quan. Giúp nhận biết ngay các đối tượng được phát hiện. |
Đếm đối tượng bên trong vùng#
Mỗi lần gọi tracker sẽ trả về một đối tượng SolutionResults, trong đó thuộc tính total_tracks chứa số lượng đối tượng hiện đang được theo dõi bên trong vùng. Đọc giá trị này ở mỗi frame để giám sát số lượng đối tượng hiện diện theo thời gian thực, chẳng hạn ghi log mức độ đông đúc tại 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()Câu hỏi thường gặp#
Có thể dễ dàng theo dõi đối tượng trong một khu vực hoặc vùng được xác định của frame video bằng Ultralytics YOLO26. Chỉ cần sử dụng lệnh bên dưới để bắt đầu theo dõi. Cách tiếp cận này đảm bảo phân tích hiệu quả và kết quả chính xác, rất phù hợp cho các ứng dụng như giám sát an ninh, quản lý đám đông hoặc bất kỳ tình huống nào cần theo dõi 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 tính năng theo dõi đối tượng trong các vùng cụ thể, giúp dễ dàng tích hợp vào 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 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ể xác định và điều chỉnh trực tiếp các vùng thông qua script Python, cho phép kiểm soát chính xác những khu vực cần giám sát.
from ultralytics import solutions # Xác định các điểm của vùng region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)] # Khởi tạo TrackZone trackzone = solutions.TrackZone( show=True, # hiển thị đầu ra region=region_points, # truyền các điểm của vùng )Hãy nhớ rằng
TrackZonerút gọn các điểm thành bao lồi, vì vậy đường bao lõm được đơn giản hóa thành đa giác lồi nhỏ nhất chứa tất cả các điểm.Cả ba giải pháp đều hoạt động với các vùng, nhưng mỗi giải pháp trả lời một câu hỏi khác nhau:
Giải pháp Dùng khi cần Đầu ra thường gặp TrackZone Theo dõi đối tượng và giám sát số lượng hiện diện theo thời gian thực trong một vùng lồi duy nhất ID được theo dõi và total_trackscho vùngObjectCounter Đếm đối tượng băng qua một đường hoặc đi vào và rời khỏi một vùng Tổng số lượt vào và ra tích lũy RegionCounter Đếm đố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 theo dõi 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 hình dạng không lồi.

