YOLO Vision 2026:

TrackZone sử dụng Ultralytics YOLO26#

TrackZone là gì?#

Open TrackZone In 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, giải pháp này tích hợp tính năng phát hiện đối tượng và tracking cụ thể trong các vùng cho 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 🚀

Lợ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.

Các ứng dụng thực tế#

Nông nghiệpGiao thông
Plants Tracking in Field Using Ultralytics YOLO26Vehicles Tracking on Road using 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 định nghĩa đa giác sao cho khớp với khu vực vật lý bạn quan tâm (cửa ra vào, cổng, v.v.) và giữ show=True bật trong khi cấu hình để bạn có thể xác minh lớp phủ khớp với nguồn cấp dữ liệu video.

Xác định vùng theo dõi
  • Mỗi mục trong region là một tọa độ pixel (x, y) trong khung hình video. Liệt kê các điểm theo thứ tự chúng nên được kết nối xung quanh chu vi của khu vực bạn muốn giám sát.
  • Tọa độ gắn liền với độ phân giải khung hình, do đó một vùng có kích thước cho nguồn cấp dữ liệu 1280×720 sẽ không khớp với vùng 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 thu gọn các điểm thành convex hull của chúng, do đó một hình 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ủa nó. Đối với các hình dạng không lồi hoặc một số 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, một vùng mặc định là [(75, 75), (565, 75), (565, 285), (75, 285)] sẽ được sử dụng.

Đối số 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 (ROI), có thể là một danh sách các tuple (x, y) hoặc một từ điển ánh xạ tên vùng tới danh sách đ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ề sử dụng giá trị mặc định được định nghĩa sẵn.
line_widthint2Độ dày đường viền cho các khung, keypoints và số lượng mà giải pháp vẽ ra.
verboseboolTrueBật nhật ký theo từng khung hình của giải pháp về hình dạng đầu vào, số lượng lớp và tốc độ xử lý. Bản thân lệnh gọi tracking luôn ở chế độ im lặng.

Giải pháp TrackZone hỗ trợ các tham số track:

Đối sốLoạiMặc địnhMô tả
trackerstr'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.
conffloat0.25Thiế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.7Đặt ngưỡng Intersection over Union (IoU) để lọc các phát hiện trùng lặp.
classeslistNoneLọc kết quả theo chỉ mục lớp. Ví dụ: classes=[0, 2, 3] chỉ theo dõi các lớp được chỉ định.
devicestrNoneChỉ định thiết bị để suy luận (ví dụ: cpu, cuda:0 hoặc 0). Cho phép người dùng lựa chọn giữa CPU, GPU cụ thể hoặc các thiết bị tính toán khác để thực thi mô hình.

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 là 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 để 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_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.

Đếm đối tượng bên trong vùng#

Mỗi lệnh gọi đến bộ theo dõi trả về một đối tượng SolutionResults có 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 trên mỗi khung hình để giám sát số lượng trực tiếp, ví dụ để ghi lại mức độ bận rộn của một điểm ra 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#

  • 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
  • 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()
  • 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 thu gọn các điểm thành convex hull 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.

  • 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ấtID được 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à RegionCounter khi bạn cần nhiều vùng hoặc hình dạng không lồi.

Bình luận