Link to this sectionTrackZone sử dụng Ultralytics YOLO26#
Link to this sectionTrackZone là gì?#
TrackZone chuyên giám sát các đối tượng trong các khu vực được chỉ định của khung hình thay vì toàn bộ khung hình. Được xây dựng trên Ultralytics YOLO26, nó tích hợp tính năng phát hiện đối tượng và tracking dành riêng cho các vùng trong video và nguồn cấp dữ liệu camera trực tiếp. Các thuật toán tiên tiến và công nghệ deep learning của YOLO26 biến nó thành lựa chọn hoàn hảo cho các trường hợp sử dụng thời gian thực, cung cấp 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à an ninh.
Watch: How to Track Objects in Region using Ultralytics YOLO26 | TrackZone 🚀
Link to this sectionLợi ích của việc theo dõi đối tượng trong vùng (TrackZone)#
- Phân tích mục tiêu: Theo dõi các đối tượng trong các vùng cụ thể cho phép thu được thông tin chi tiết tập trung hơn, cho phép giám sát và phân tích chính xác các khu vực quan tâm, chẳng hạn như điểm vào hoặc các khu vực hạn chế.
- Giảm khối lượng công việc hạ nguồn: Bằng cách bỏ qua các đối tượng bên ngoài khu vực, TrackZone loại bỏ các phát hiện không liên quan để có ít đối tượng hơn cần đếm, ghi nhật ký hoặc cảnh báo trong logic bạn xây dựng trên đó. Quá trình phát hiện vẫn chạy trên toàn bộ khung hình được che thay vì chỉ cắt lấy vùng đó, vì vậy lợi ích mang lại là kết quả đầu ra sạch và tập trung hơn thay vì tăng tốc độ suy luận của model.
- An ninh nâng cao: Theo dõi theo vùng cải thiện công tác 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 các 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ể làm cho TrackZone có thể 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, đảm bảo khả năng tích hợp và mở rộng liền mạch.
Link to this sectionCác ứng dụng thực tế#
| Nông nghiệp | Giao thông |
|---|---|
| Theo dõi cây trồng trên cánh đồng sử dụng Ultralytics YOLO26 | Theo dõi phương tiện trên đường sử dụ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 để biết phần nào của khung hình cần giám sát. Hãy xác định đa giác khớp với vùng vật lý mà bạn quan tâm (cửa ra vào, cổng, v.v.) và giữ show=True trong khi định cấu hình để bạn có thể xác minh lớp phủ khớp với nguồn video.
- Mỗi mục nhập trong
regionlà một tọa độ pixel(x, y)trong khung hình video. Hãy liệt kê các điểm theo thứ tự cần kết nối xung quanh chu vi của khu vực bạn muốn giám sát. - Các tọa độ được gắn với độ phân giải khung hình, do đó một vùng được thiết lập cho nguồn cấp 1280×720 sẽ không khớp với nguồn cấp 640×480. Hãy giữ
show=Truetrong khi cấu hình để bạn có thể xác nhận lớp phủ khớp với nguồn cấp dữ liệu của mình. TrackZonerút gọn các điểm về convex hull của chúng, vì vậy một hình dạng lõm sẽ đượ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ủa nó. Đối với các 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 thay thế.- Nếu bạn 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.
Link to this sectionCác đối số của TrackZone#
Dưới đây là bảng chứa các đối số của TrackZone:
| Đối số | Loại | 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, 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. |
Giải pháp TrackZone bao gồm hỗ trợ cho các tham số track:
| Đố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. |
Hơn nữa, các tùy chọn trực quan hóa sau đây cũng có sẵn:
| Đố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 sectionĐếm đối tượng bên trong vùng#
Mỗi lệnh gọi tới trình theo dõi sẽ trả về một đối tượng SolutionResults có thuộc tính total_tracks lưu giữ số lượng đối tượng hiện đang được theo dõi bên trong vùng. Hãy đọc nó trên mỗi khung hình để giám sát trạng thái chiếm dụng trực tiếp, ví dụ như để ghi nhật ký mức độ bận rộn 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()Link to this sectionCâu hỏi thường gặp#
Link to this sectionLàm thế nào để theo dõi các đối tượng trong một khu vực hoặc vùng cụ thể của khung hình video bằng Ultralytics YOLO26?#
Việc theo dõi các đối tượng trong một khu vực hoặc vùng xác định của khung hình video trở nên đơn giản với Ultralytics YOLO26. Chỉ cần sử dụng lệnh được cung cấp bên dưới để bắt đầu theo dõi. Phương pháp này đảm bảo phân tích hiệu quả và kết quả chính xác, giúp nó trở nên lý tưởng cho các ứng dụng như giám sát, quản lý đám đông hoặc bất kỳ kịch bản nào yêu cầu theo dõi theo vùng.
yolo solutions trackzone source="path/to/video.mp4" show=TrueLink to this sectionLàm cách nào để sử dụng TrackZone trong Python với Ultralytics YOLO26?#
Chỉ với vài dòng mã, bạn có thể thiết lập theo dõi đối tượng trong các vùng cụ thể, giúp việc tích hợp vào dự án của bạn trở nên dễ dàng.
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()Link to this sectionLàm thế nào để định cấu hình các điểm vùng cho quá trình xử lý video bằng Ultralytics TrackZone?#
Việc định cấu hình các điểm vùng cho quá trình xử lý video với 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 tập lệnh Python, cho phép kiểm soát chính xác các 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 TrackZone rút gọn các điểm về vỏ lồi của chúng, vì vậy hãy liệt kê chúng theo thứ tự xung quanh chu vi của khu vực bạn muốn giám sát.
Link to this sectionKhi nào tôi nên sử dụng TrackZone thay vì ObjectCounter hoặc RegionCounter?#
Cả ba giải pháp đều hoạt động với các vùng, nhưng chúng trả lời cho các câu hỏi khác nhau:
| Giải pháp | Sử dụng nó để | Kết quả đầu ra điển hình |
|---|---|---|
| TrackZone | Theo dõi các đối tượng và giám sát trạng thái chiếm dụng trực tiếp bên trong một vùng lồi duy nhất | Các ID đã theo dõi và total_tracks cho vùng đó |
| ObjectCounter | Đếm các đối tượng vượt qua một đường kẻ hoặc đi vào/đi ra khỏi một vùng | Số lượng ra vào 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 theo dõi liên tục bên trong một khu vực, và chọn RegionCounter khi bạn cần nhiều vùng hoặc một hình dạng không lồi.