Point Tracking
Theo dõi điểm bám sát các điểm được chọn xuyên suốt video, báo vị trí của từng điểm trong mỗi khung hình và cho biết điểm đó có hiển thị hay không. Tìm hiểu phương pháp, model và ứng dụng.
Theo dõi điểm là tác vụ thị giác máy tính theo dõi từng điểm riêng lẻ xuyên suốt video: với một điểm truy vấn trong một khung hình, chẳng hạn một vị trí trên tay áo hoặc góc cửa sổ, tracker ước tính vị trí xuất hiện của chính điểm vật lý đó trong mọi khung hình khác và xác định xem điểm có nhìn thấy được hay không. Nghiên cứu gần đây gọi tác vụ này là theo dõi điểm bất kỳ (TAP), vì điểm truy vấn có thể là bất kỳ pixel nào thay vì một keypoint được xác định trước. Theo dõi điểm bám theo một tập hợp thưa các điểm qua nhiều khung hình, kể cả khi bị che khuất; điều này phân biệt nó với theo dõi đối tượng, vốn theo dõi toàn bộ đối tượng dưới dạng box giới hạn có ID, và với luồng quang học, vốn ước tính chuyển động của mọi pixel giữa hai khung hình liên tiếp.
Cách theo dõi điểm hoạt động#
Tracker Kanade-Lucas-Tomasi (KLT) cổ điển chọn các góc có kết cấu rõ theo hai hướng, tức “đặc trưng tốt để theo dõi” của Shi-Tomasi, rồi tìm từng góc trong khung hình tiếp theo bằng cách giải độ dịch chuyển nhỏ giúp căn chỉnh tốt nhất vùng patch xung quanh; phương pháp dùng tháp ảnh để xử lý chuyển động lớn hơn. OpenCV triển khai cả hai bước:
import cv2
import numpy as np
# Read an overhead clip of people walking and pick 300 corners in its first frame
cap = cv2.VideoCapture("https://github.com/ultralytics/assets/releases/download/v0.0.0/solutions_ci_demo.mp4")
prev = cv2.cvtColor(cap.read()[1], cv2.COLOR_BGR2GRAY)
points = cv2.goodFeaturesToTrack(prev, maxCorners=300, qualityLevel=0.01, minDistance=5)
start = points.copy()
# Follow every point frame to frame with pyramidal Lucas-Kanade optical flow
while (frame := cap.read()[1]) is not None:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
points, status, _ = cv2.calcOpticalFlowPyrLK(prev, gray, points, None)
found = status.ravel() == 1 # keep only the points found again
points, start, prev = points[found], start[found], gray
distance = np.linalg.norm(points - start, axis=-1)
print(f"{len(points)} of 300 points tracked to the last frame, median shift {np.median(distance):.1f} px")Kết quả in ra 292 of 300 points tracked to the last frame, median shift 28.7 px: trong 62 khung hình của clip, tracker mất 8 điểm; các điểm còn lại kết thúc ở cách vị trí ban đầu trung vị 28,7 pixel. KLT chỉ so sánh các khung hình liên tiếp, nên sai số nhỏ tích lũy dần; phương pháp cũng không nhận biết được sự che khuất: một điểm trên sàn bị người đi ngang che có thể trượt sang vị trí của người đó mà vẫn tiếp tục được báo cáo.
Tracker điểm học sâu#
Tracker học sâu suy luận trên nhiều khung hình cùng lúc và dự đoán vị trí cùng cờ khả kiến cho từng khung hình. Benchmark TAP-Vid xác định tác vụ này vào năm 2022 bằng các video thực có quỹ đạo điểm được con người gán nhãn thủ công. PIPs (2022) tinh chỉnh quỹ đạo của một điểm trên các cửa sổ khung hình để xử lý các lần che khuất ngắn; TAPIR (2023) trước tiên ghép đặc trưng của điểm truy vấn với mọi khung hình, sau đó tinh chỉnh quỹ đạo bằng ngữ cảnh theo thời gian. CoTracker của Meta theo dõi nhiều điểm cùng lúc bằng Transformer, để các điểm trên cùng một đối tượng hỗ trợ lẫn nhau khi một điểm bị che khuất. Quỹ đạo được gán nhãn trong video thực rất khan hiếm, nên CoTracker3 (2024) được huấn luyện trên video tổng hợp, rồi trên video thực được các tracker khác gán nhãn giả; model báo cáo kết quả tốt hơn các tracker trước đó dù chúng được huấn luyện bằng lượng dữ liệu nhiều hơn 1.000 lần.
Ứng dụng thực tế#
Chế độ track của Ultralytics dùng theo dõi điểm để triệt tiêu chuyển động camera trong theo dõi nhiều đối tượng: tracker TrackTrack mặc định và BoT-SORT chọn tối đa 400 góc mỗi khung hình, theo dõi chúng bằng luồng Lucas-Kanade dạng kim tự tháp, rồi khớp phép xoay, tỷ lệ và tịnh tiến bằng RANSAC (gmc_method: sparseOptFlow); sau đó, chúng dịch chuyển box dự đoán của mọi track trước khi ghép với các phát hiện YOLO26 mới.
- Hiệu ứng hình ảnh: Matchmoving theo dõi các điểm trên cảnh để đồ họa được chèn luôn khớp với bề mặt; còn ổn định hình ảnh triệt tiêu chuyển động camera mà các điểm được theo dõi cho thấy.
- Tái tạo 3D: Cấu trúc từ chuyển động và SLAM thị giác tam giác hóa các điểm được theo dõi qua các khung hình để khôi phục tư thế camera và hình học cảnh.
- Học robot: Mô hình hóa quỹ đạo điểm bất kỳ dự đoán cách các điểm trong cảnh di chuyển trong một tác vụ và chuyển các quỹ đạo đó thành hành động robot; phương pháp vượt các baseline tiền huấn luyện bằng video khoảng 80% trung bình trên hơn 130 tác vụ.










