Meet YOLO26: next-gen vision AI.

Link to this sectionTrackZone sử dụng Ultralytics YOLO26#

Link to this sectionTrackZone là gì?#

Mở TrackZone trong Colab

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ệpGiao thông
Theo dõi cây trồng trên cánh đồng sử dụng Ultralytics YOLO26Theo dõi phương tiện trên đường sử dụng Ultralytics YOLO26
Theo dõi cây trồng trên cánh đồng sử dụng Ultralytics YOLO26Theo dõi phương tiện trên đường sử dụng Ultralytics YOLO26
TrackZone sử dụng Ultralytics YOLO
# 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.

Xác định vùng theo dõi
  • Mỗi mục nhập trong region là 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=True trong 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.
  • TrackZone rú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ạiMặc địnhMô tả
modelstrNoneĐường dẫn đến tệp model Ultralytics YOLO.
regionlist hoặc dictNoneCá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ạiMặc địnhMô tả
trackerstr'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.
conffloat0.1Thiế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ả.
ioufloat0.7Thiết lập ngưỡng Intersection over Union (IoU) để lọc các phát hiện chồng lấp.
classeslistNoneLọ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.
verboseboolTrueKiể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.
devicestrNoneChỉ đị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ạiMặc địnhMô tả
showboolFalseNế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_widthint or NoneNoneChỉ đị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_confboolTrueHiể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_labelsboolTrueHiể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=True

Link 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ápSử dụng nó đểKết quả đầu ra điển hình
TrackZoneTheo 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ấtCá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ùngSố 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.

Bình luận