[논문리뷰] CoTracker3: Simpler and Better Point Tracking by Pseudo-Labelling Real Videos (ICCV 2025)
모델은 더 단순하게, 데이터는 real video로. CoTracker3는 최근 tracker들의 구성 요소를 덜어내 더 작고 빠른 architecture를 만들고, 기존 tracker들을 teacher로 써서 unlabelled real video에 pseudo-label을 다는 단순한 semi-supervised 학습 레시피를 제안한다. BootsTAPIR가 쓴 real video의 1,000분의 1(15k개)만으로 state-of-the-art를 넘는다.
논문 정보
| 항목 | 내용 |
|---|---|
| 제목 | CoTracker3: Simpler and Better Point Tracking by Pseudo-Labelling Real Videos |
| 저자 | Nikita Karaev, Iurii Makarov, Jianyuan Wang, Natalia Neverova, Andrea Vedaldi, Christian Rupprecht |
| 소속 / 연도 | Meta AI, Visual Geometry Group(University of Oxford), ICCV 2025 (arXiv:2410.11831) |
| 분야 | CV / point tracking |
| 코드 | GitHub |
1. Introduction
point tracking은 정밀한 대응 복원이 필요한 3D reconstruction·비디오 편집 같은 과제에서 비디오 분석의 핵심 단계다. PIPs에서 영감을 받은 transformer 기반 설계로 point tracker는 크게 발전해 왔다. TAP-Vid는 새 벤치마크를, TAPIR는 PIPs 설계에 global matching 단계를 더한 개선된 tracker를 제안했고, CoTracker는 여러 점을 jointly 추적하는 transformer architecture로 특히 부분적으로 가려진 점의 tracking 품질을 끌어올렸다.
이 논문은 최근 tracker들의 아이디어 위에 서 있으면서도 훨씬 단순하고, 데이터 효율적이고, 유연한 새 모델 CoTracker3를 제안한다. 최근 tracker들이 좋은 성능에 필수라고 제안한 구성 요소 일부를 제거하고도 state-of-the-art를 넘는다. 또 point tracker의 데이터 scaling 거동을 처음으로 조사해, 서로 다른 architecture와 학습 protocol이 최종 tracking 품질과 데이터 효율에 주는 이점을 보인다.
최근 tracker들의 뛰어난 성능은 대량의 학습 비디오에서 robust한 prior를 배우고 이를 occlusion·빠른 움직임 같은 어렵고 모호한 경우에 활용하는 고용량 신경망의 능력 덕분이다. 따라서 고품질 학습 데이터의 확보가 결정적으로 중요하다. 원칙적으로 학습에 쓸 비디오는 부족하지 않지만 point track을 수동으로 annotation하기가 어렵다. 다행히 자동으로 annotation되는 synthetic 비디오가 point tracking 같은 low-level 과제에서 real 데이터의 좋은 대체재임이 확인돼 왔지만, 다양한 synthetic 비디오를 대규모로 만드는 비용이 크고 sim-to-real 격차도 무시할 수 없다. 그래서 real 비디오로 point tracker를 학습하는 것이 여전히 매력적인 선택지다.
최근 연구들은 unlabelled real 비디오 대량 활용을 탐구해 왔다. 특히 BootsTAPIR는 1,500만 개의 unlabelled 비디오로 모델을 학습해 TAP-Vid 벤치마크에서 state-of-the-art 정확도를 달성했다. 데이터를 늘리는 이득은 입증됐지만 point tracker의 데이터 scaling 거동은 잘 이해되지 않았다. 수백만 개의 real 비디오가 정말 필요한지, 그 비교적 복잡한 semi-supervised 학습 레시피가 필요한지도 불분명하다. 또 하나 미개척 영역은 tracker들의 경쟁하는 설계다. PIPs·TAPIR·CoTracker·LocoTrack이 각자 중요한 변경·확장·새 구성 요소를 제안했는데, 각 논문 안에서는 도움이 됨을 보였지만 이들이 모두 필수인지, 더 단순하고 효율적으로 만들 수 있는지는 덜 분명하다.
CoTracker3는 이 질문들에 답한다. BootsTAPIR·LocoTrack 같은 최근 tracker보다 단순한 architecture와 학습 protocol에 기반하면서, BootsTAPIR보다 3자릿수 적은 unlabelled 비디오로 TAP-Vid와 Dynamic Replica 벤치마크에서 큰 격차로 앞선다. 점점 더 많은 real 학습 비디오에 따른 데이터 scaling 거동도 연구한다. LocoTrack도 비슷하게 scaling에서 이득을 보지만 가려진 점을 잘 추적하지 못한다. CoTracker3는 선행 모델들의 요소를 빌린다. PIPs에서 반복 update와 convolutional feature를, CoTracker에서 joint tracking을 위한 cross-track attention·효율을 위한 virtual track·windowed 동작을 위한 unrolled training을, LocoTrack에서 4D correlation을 가져온다. 동시에 일부는 크게 단순화하고 BootsTAPIR·LocoTrack의 global matching 단계 같은 것들은 제거해, 좋은 tracker에 정말 중요한 구성 요소가 무엇인지 식별하는 데 도움을 준다. 같은 방식으로 학습하면 offline(단일 window)과 online(sliding window) 모두로 동작할 수 있는 유연한 architecture다.
[Figure 1] unsupervised 비디오를 이용한 point tracker scaling. 왼쪽은 CoTracker3·LocoTrack·CoTracker·BootsTAPIR·TAPIR의 비교로, 제안한 단순한 unsupervised 학습 protocol이 학습 데이터의 0.1%만으로 SOTA를 큰 격차로 능가. 오른쪽은 occlusion에 특히 robust한 새 모델의 결과
2. Related Work
Tracking-Any-Point. 임의 점 추적 과제는 고전적 Particle Video 방법을 재조명하고 point tracking에 딥러닝을 제안한 PIPs가 도입했다. optical flow 알고리즘 RAFT에서 영감을 받아, PIPs는 프레임 간 correlation map을 추출해 네트워크에 넣어 track 추정을 정제한다. TAP-Vid는 문제 정의를 개선하고 세 개의 벤치마크와 TAP-Net 모델을 제안했다. TAPIR는 TAP-Net식 global matching과 PIPs를 결합해 성능을 크게 높였다. PointOdyssey는 또 다른 synthetic 벤치마크와 긴 시간 추적이 가능한 개선판 PIPs++를 도입했다. CoTracker는 track들 사이의 강한 상관을 지적하고 이를 활용해 특히 occlusion 뒤와 화면 밖 tracking을 개선했고, 이후 출력을 densify한 후속 연구도 나왔다. VGGSfM은 3D reconstruction으로 track을 검증하는 coarse-to-fine tracker를 제안했지만 정적 장면만 다룬다. TAPTR는 DETR에서 영감을 받아 점을 transformer decoder의 query로 표현하는 end-to-end architecture를 도입했다. LocoTrack은 2D correlation feature를 4D correlation volume으로 확장하면서 pipeline을 단순화하고 효율을 높였다. 이 논문은 더 단순화된 framework로 LocoTrack보다 27% 빠르게 동작하면서, CoTracker처럼 joint tracking으로 가려진 점을 추적하는 능력을 유지한다. point tracking의 annotation은 (최소) 픽셀 수준 정밀도가 필요해 특히 어렵다. 그래서 지배적 패러다임은 오류 없는 annotation을 자동으로 얻을 수 있는 synthetic 데이터로 학습하고 real 데이터로의 일반화를 보이는 것이며, 위 방법 대부분이 Kubric만으로 학습된다.
Semi-supervised correspondence. synthetic 데이터의 대안은 unlabelled real 데이터와 unsupervised·semi-supervised 학습의 결합이다. 예를 들어 photometric consistency를 대응의 proxy로 쓸 수 있는데, occlusion·반복 texture·조명 변화로 잘못된 match가 생기기 쉬워 multi-frame 추정, occlusion에 대한 명시적 추론, hand-crafted loss 항, 다양한 augmentation 전략이 필요해진다. 또는 distillation과 비슷하게 기존 tracker로 다른 tracker를 학습시킬 수 있다. 회색조 비디오에 기준 프레임의 색을 복사해 칠하는 colorization이나 더 풍부한 시각 패턴, cycle consistency나 시간적 연속성도 완전한 supervision 없이 대응을 배우는 proxy 신호가 된다. 최근에는 color constancy·cycle consistency 신호로 만든 pseudo-label 데이터셋에서 PIPs와 RAFT를 정제하는 pipeline이 제안됐지만 성능이 빠르게 포화된다. 이 논문과 가장 관련 깊은 BootsTAPIR는 Kubric으로 학습한 TAPIR를 1,500만 개 real 비디오에서 self-training으로 fine-tuning하되, catastrophic forgetting을 피하려 ground-truth가 있는 작은 synthetic 데이터셋을 유지했다. student 예측에 augmentation을 적용하고 EMA(exponential moving average)로 학습하며 robustness를 위해 세 가지 loss mask를 계산한다. 이와 달리 이 논문의 접근은 augmentation·mask·EMA가 필요 없는 단순한 설계이고, self-supervised fine-tuning 중 ground-truth supervised 데이터도 필요 없다. 대신 상호 보완적인 특성을 가진 기존 tracker들을 teacher로 활용해 student 모델을 학습하고, BootsTAPIR가 쓴 real 비디오의 극히 일부만으로 충분함을 보인다.
3. Method
비디오 \((\mathcal{I}_t)_{t=1}^{T}\) 는 \(T\) 장의 프레임 \(\mathcal{I}_t \in \mathbb{R}^{3 \times H \times W}\) 의 시퀀스다. query 점 \(\mathcal{Q} = (t^q, x^q, y^q) \in \mathbb{R}^3\) 이 주어지는데, \(t^q\) 는 query 프레임 index, \((x^q, y^q)\) 는 query 점의 초기 위치다. 목표는 대응하는 point track \(\mathcal{P}_t = (x_t, y_t) \in \mathbb{R}^2\), \(t = 1, \dots, T\) 를 예측하는 것이고, query 프레임에서는 \((x_{t^q}, y_{t^q}) = (x^q, y^q)\) 다. 현대 point tracking 모델들처럼 CoTracker3도 visibility \(\mathcal{V}_t \in [0, 1]\) 와 confidence \(\mathcal{C}_t \in [0, 1]\) 를 추정한다. visibility는 추적 점이 현재 프레임에서 보이는지(\(\mathcal{V}_t = 1\)) 가려졌는지(\(\mathcal{V}_t = 0\))를 나타내고, confidence는 추적 점이 현재 프레임에서 ground truth로부터 일정 거리 안에 있다고 네트워크가 확신하는지(\(\mathcal{C}_t = 1\))를 잰다. 모델은 모든 track을 query 좌표로(\(\mathcal{P}_t := (x_{t^q}, y_{t^q})\)), confidence와 visibility는 0으로 초기화한 뒤 셋 모두를 반복적으로 갱신한다.
3.1 Training using unlabelled videos
최근 tracker들은 real 데이터의 대규모 annotation이 어려워 주로 synthetic 데이터로 학습된다. BootsTAPIR는 unlabelled real 비디오를 섞으면 더 나은 tracker를 학습할 수 있음을 보였지만, 대량의 비디오(15M)와 self-training, augmentation, 변환 equivariance를 쓰는 정교한 self-training protocol을 쓴다. 이 논문은 훨씬 단순한 protocol로 1,000배 적은 데이터로 그 성능을 넘는다. 기존 tracker 여러 개를 teacher로 써서 real 비디오 모음에 label을 달고, 그 pseudo-label로 synthetic 데이터로 사전학습한 새 student 모델을 학습하는 것이다.
중요한 점은 teacher 모델들도 같은 synthetic 데이터만으로 학습된다는 것이다. 그런데 왜 student가 어떤 teacher보다도 좋아질까. 이유는 여러 가지다. (1) student는 synthetic 데이터만보다 훨씬 큰 (노이즈 있는) 데이터셋에서 배우는 이득을 얻는다. (2) real 비디오 학습이 synthetic과 real 데이터 사이의 분포 이동을 완화한다. (3) pseudo-annotation의 노이즈를 줄이는 ensemble/투표 효과가 있다. (4) student는 과제의 서로 다른 측면에 뛰어난 teacher들의 강점을 물려받을 수 있다(예를 들어 offline tracker는 가려진 점을 더 잘 추적하고, online tracker는 track 시작점 근처에서 query 점에 더 밀착한다).
Dataset. 이 학습을 위해 다양한 장면과 동적 물체(주로 사람·동물)가 나오는 인터넷풍 비디오 대규모 데이터셋(30초짜리 약 10만 개)을 수집했다. 겨우 100개부터 시작해 점점 큰 부분집합으로 학습할수록 성능이 좋아짐을 보인다(Figure 1).
Teacher models. 다양한 supervision 신호를 만들기 위해 Kubric synthetic 데이터로만 학습된 여러 teacher 모델을 쓴다. teacher 집합은 제안 모델인 CoTracker3 online·CoTracker3 offline, 그리고 CoTracker, TAPIR로 구성된다. 학습 중 batch마다 frozen teacher 하나를 무작위 균등 sampling하므로(여러 epoch에 걸쳐 같은 비디오가 다른 teacher의 pseudo-label을 받게 된다) 과적합을 막고 일반화를 돕는다. teacher는 학습 중 갱신되지 않는다.
Query point sampling. tracker는 비디오 외에 추적할 query 점이 필요하다. 현재 batch의 teacher를 고른 뒤 비디오마다 query 점 집합을 sampling한다. 이때 SIFT detector를 써서 “추적하기 좋은” 점 쪽으로 선택을 편향시킨다. 구체적으로 비디오에서 \(\hat{T}\) 개 프레임을 무작위로 골라 SIFT를 적용해 그 keyframe들에서 track을 시작할 점을 만든다. feature extractor를 쓰는 직관은, 가능한 곳에서는 구별력 있는 image feature를 검출하고 모호한 경우에는 검출에 실패하는 성질에 있다. 이것이 추적하기 어려운 점을 걸러내는 filter로 작용해 학습 안정성을 높일 것이라는 가설이다. 이 직관에 따라 SIFT가 어느 프레임에서든 충분한 수의 점을 만들지 못하면 그 비디오는 학습에서 완전히 건너뛰어 학습 데이터의 품질을 유지한다.
Supervision. student 모델이 예측한 track은 synthetic 데이터 사전학습 때와 같은 loss로 supervise하되, occlusion과 confidence 처리만 조금 수정한다(3.3절).
3.2 CoTracker3 model
CoTracker3는 offline과 online 두 버전을 제공한다. online 버전은 sliding window 방식으로 입력 비디오를 순차 처리하며 앞 방향으로만 점을 추적한다. offline 버전은 비디오 전체를 하나의 window로 처리해 앞뒤 양방향 추적이 가능하다. offline 버전이 가려진 점을 더 잘 추적하고 보이는 점의 장기 추적도 좋지만, 추적 가능한 최대 프레임 수가 메모리에 묶인다. online 버전은 실시간으로 무한정 추적할 수 있다.
[Figure 2] 프레임별 convolutional feature와 4D correlation으로부터 transformer가 track \(\mathcal{P}^{(m)}\), confidence \(\mathcal{C}^{(m)}\), visibility \(\mathcal{V}^{(m)}\) 를 반복 갱신하는 CoTracker3 architecture
Feature maps. 먼저 각 비디오 프레임에서 CNN으로 dense한 \(d\) 차원 feature map \(\Phi_t = \Phi(\mathcal{I}_t)\), \(t = 1, \dots, T\) 를 계산한다. 효율을 위해 입력을 \(k = 4\) 배 downsampling해 \(\Phi_t \in \mathbb{R}^{d \times \frac{H}{k} \times \frac{W}{k}}\) 가 되고, \(S = 4\) 개의 서로 다른 scale에서 feature map \(\Phi^s_t \in \mathbb{R}^{d \times \frac{H}{k2^{s-1}} \times \frac{W}{k2^{s-1}}}\), \(s = 1, \dots, S\) 를 계산한다.
4D correlation features. 네트워크가 query 점 \(\mathcal{Q} = (t^q, x^q, y^q)\) 를 프레임 \(t = 1, \dots, T\) 에서 찾을 수 있도록, query 프레임의 feature map \(\Phi_{t^q}\) 에서 query 좌표 \((x^q, y^q)\) 주변에 추출한 feature 벡터들과, 다른 프레임의 map \(\Phi_t\) 에서 현재 track 추정 \(\mathcal{P}_t = (x_t, y_t)\) 주변에 추출한 feature 벡터들 사이의 correlation을 계산한다. 구체적으로 각 점 \(\mathcal{P}_t\) 는 여러 scale에서 feature 벡터의 정사각 이웃을 추출해 기술한다.
\[\phi^s_t = \left[ \Phi^s_t\!\left( \frac{x}{ks} + \delta, \frac{y}{ks} + \delta \right) : \delta \in \mathbb{Z}^2, \ \|\delta\|_\infty \leq \Delta \right] \in \mathbb{R}^{d \times (2\Delta+1)^2}, \quad s = 1, \dots, S\]여기서 \(\delta\) 는 점 주변을 훑는 정수 offset이고, feature map \(\Phi^s_t\) 는 점 \((x_t, y_t)\) 주변에서 bilinear interpolation으로 sampling한다. 즉 각 scale \(s\) 에서 \(\phi^s_t\) 는 \((2\Delta+1)^2\) 개의 \(d\) 차원 pointwise feature 격자를 담는다. 다음으로 각 scale \(s = 1, \dots, S\) 에 대해 4D correlation
\[\langle \phi^s_{t^q}, \phi^s_t \rangle = \operatorname{stack}\big( (\phi^s_{t^q})^\top \phi^s_t \big) \in \mathbb{R}^{(2\Delta+1)^4}\]을 정의한다. 직관적으로 이 연산은 query 점 \((x^q, y^q)\) 주변의 각 feature 벡터를 track 점 \((x_t, y_t)\) 주변의 각 feature 벡터와 비교하고, 네트워크는 이를 track update 예측에 쓴다. transformer에 넣기 전에 이 correlation들을 MLP로 투영해 차원을 줄인 correlation feature를 정의한다.
\[\operatorname{Corr}_t = \big( \operatorname{MLP}(\langle \phi^1_{t^q}, \phi^1_t \rangle), \dots, \operatorname{MLP}(\langle \phi^S_{t^q}, \phi^S_t \rangle) \big) \in \mathbb{R}^{pS}\]여기서 \(p\) 는 투영 차원이다. 이 MLP 구조는 LocoTrack이 correlation feature 계산에 쓴 ad-hoc 모듈보다 훨씬 단순하다.
Iterative updates. confidence \(\mathcal{C}_t\) 와 visibility \(\mathcal{V}_t\) 는 0으로, track \(\mathcal{P}_t\) 는 모든 시각에 대해 query 점의 초기 좌표로 초기화한 뒤, transformer로 이들 모두를 반복 갱신한다. 매 반복마다 track을 프레임 간 변위의 Fourier encoding \(\eta_{t \rightarrow t+1} = \eta(\mathcal{P}_{t+1} - \mathcal{P}_t)\) 로 embedding한다. 그리고 양방향 track embedding(\(\eta_{t-1 \rightarrow t}\) 와 \(\eta_{t \rightarrow t+1}\)), confidence \(\mathcal{C}_t\), visibility \(\mathcal{V}_t\), 4D correlation \(\operatorname{Corr}_t\) 를 query 점 \(i = 1, \dots, N\) 마다 이어 붙인다.
\[\mathcal{G}^i_t = \big( \eta^i_{t-1 \rightarrow t}, \ \eta^i_{t \rightarrow t+1}, \ \mathcal{C}^i_t, \ \mathcal{V}^i_t, \ \operatorname{Corr}^i_t \big)\]\(\mathcal{G}^i_t\) 는 시간 \(T\) 와 query 점 수 \(N\) 에 걸친 transformer 입력 token의 grid를 이룬다. transformer \(\Psi\) 는 이 grid를 입력받아 표준 Fourier 시간 embedding을 더하고, \(t = 1, \dots, T\) 에 대한 시간 attention과 \(i = 1, \dots, N\) 에 대한 group attention을 factorize해 적용한다. 효율을 위해 proxy token도 쓴다. 이 transformer는 track·confidence·visibility의 update를 \((\Delta\mathcal{P}, \Delta\mathcal{C}, \Delta\mathcal{V}) = \Psi(\mathcal{G})\) 로 추정하고, \(M\) 번에 걸쳐
\[\mathcal{P}^{(m+1)} = \mathcal{P}^{(m)} + \Delta\mathcal{P}^{(m+1)}, \quad \mathcal{C}^{(m+1)} = \mathcal{C}^{(m)} + \Delta\mathcal{C}^{(m+1)}, \quad \mathcal{V}^{(m+1)} = \mathcal{V}^{(m)} + \Delta\mathcal{V}^{(m+1)}\]로 갱신한다. 매 update 후 갱신된 track \(\mathcal{P}^{(m+1)}\) 주변에서 pointwise feature \(\phi\) 를 다시 sampling하고 correlation \(\operatorname{Corr}\) 를 다시 계산한다.
3.3 Model training
보이는 track과 가려진 track 모두 threshold 6의 Huber loss와 지수적으로 커지는 가중치로 supervise한다. 가려진 점의 loss 항에는 더 작은 가중치를 준다.
\[\mathcal{L}_{\text{track}}(\mathcal{P}, \mathcal{P}^{\star}) = \sum_{m=1}^{M} \gamma^{M-m} (\mathbf{1}_{\text{occ}}/5 + \mathbf{1}_{\text{vis}}) \operatorname{Huber}(\mathcal{P}^{(m)}, \mathcal{P}^{\star})\]여기서 \(\mathcal{P}^{\star}\) 는 ground-truth track, \(\gamma = 0.8\) 은 이른 반복의 비중을 낮추는 할인 계수, \(\mathbf{1}_{\text{occ}}\) 와 \(\mathbf{1}_{\text{vis}}\) 는 각각 점이 가려짐/보임을 나타내는 indicator다. 가려진 점의 가중치를 5분의 1로 줄여 보이는 점을 잘 추적하는 것을 우선시한다.
confidence와 visibility는 매 반복 update마다 BCE(Binary Cross Entropy) loss로 supervise한다. confidence의 ground truth는 현재 update에서 예측 track이 ground-truth track의 12픽셀 안에 있는지 확인하는 indicator 함수로 정의한다. loss 계산 전에 예측 confidence와 visibility에 sigmoid 함수 \(\sigma\) 를 적용한다.
\[\mathcal{L}_{\text{conf}}(\mathcal{C}, \mathcal{P}, \mathcal{P}^{\star}) = \sum_{m=1}^{M} \gamma^{M-m} \operatorname{CE}\big( \sigma(\mathcal{C}^{(m)}), \ \mathbf{1}\big[ \|\mathcal{P}^{(m)} - \mathcal{P}^{\star}\|_2 < 12 \big] \big)\] \[\mathcal{L}_{\text{occl}}(\mathcal{V}, \mathcal{V}^{\star}) = \sum_{m=1}^{M} \gamma^{M-m} \operatorname{CE}\big( \sigma(\mathcal{V}^{(m)}), \ \mathcal{V}^{\star} \big)\]여기서 \(\mathcal{V}^{\star}\) 는 ground-truth visibility, \(\operatorname{CE}\) 는 cross entropy다.
Training using pseudo-labels. pseudo-label 비디오로 학습할 때도 synthetic 데이터에 쓴 것과 같은 track loss를 쓰지만, confidence와 visibility는 supervise하지 않는 편이 더 안정적이었다. 이 예측들을 잊지 않도록 confidence·visibility 추정에 별도의 linear layer를 쓰고 이 학습 단계에서는 단순히 freeze한다.
Online model. online과 offline 버전은 architecture가 같고 학습 방식만 다르다. online 버전은 windowed 방식으로 비디오를 처리한다. \(T'\) 프레임을 입력받아 track을 예측하고, \(T'/2\) 프레임 앞으로 이동해 이를 반복한다. 이전 sliding window에서 겹치는 구간의 track·confidence·visibility 예측을 현재 window의 초기화로 쓴다. 학습 때 online 버전은 같은 loss들을 sliding window별로 따로 계산한 뒤 전체 window에 대해 평균낸다. online 버전은 시간상 앞으로만 추적할 수 있으므로 query 프레임 \(t^q\) 가 있는 첫 window부터의 loss만 계산한다. 반면 offline 버전은 양방향으로 추적하므로 모든 프레임에 대해 loss를 계산한다. online 버전은 같은 길이의 비디오로 학습하고, offline 버전은 특정 길이에 과적합되지 않도록 학습 중 다양한 길이의 비디오를 봐야 한다. 그래서 offline 버전은 비디오를 \(T/2\) 와 \(T\) 프레임 사이로 무작위로 자르고 시간 embedding을 선형 보간한다.
3.4 Discussion
이 모델은 PIPs·TAPIR·CoTracker 같은 이전 architecture 대비 여러 단순화와 개선을 담는다. (1) LocoTrack의 4D correlation 아이디어를 쓰되 그들의 ad-hoc 구조 대신 단순한 MLP로 correlation feature를 처리해 더 단순화했다. (2) 추적하는 모든 점에 대해 confidence를 추정한다. (3) CoTracker에 비해 token grid \(\mathcal{G}\) 가 단순해져 correlation feature와 변위의 Fourier embedding만 쓴다. (4) visibility flag를 별도 네트워크가 아니라 다른 값들과 함께 매 반복 갱신한다. (5) TAPIR·BootsTAPIR·LocoTrack과 달리 global matching 모듈을 쓰지 않는다(불필요함을 발견했다). 이 단순화 덕분에 CoTracker3는 비슷한 tracker들보다 상당히 가볍고 빠르다. 구체적으로 파라미터가 CoTracker의 절반이고, global matching 제거와 MLP correlation 처리 덕에 cross-track attention을 쓰면서도 가장 빠른 tracker인 LocoTrack보다 27% 빠르다.
4. Experiments
Evaluation protocol. 평가는 TAP-Vid-Kinetics(Kinetics-700-2020 validation의 YouTube 비디오 1,144개, 복잡한 카메라 움직임과 어수선한 배경, 비디오당 평균 26개 track), TAP-Vid-DAVIS(DAVIS 2017 validation의 실사 비디오 30개, 비디오당 평균 22개 track), RGB-Stacking(texture 없는 영역이 많아 추적이 어려운 synthetic 로봇 비디오)으로 한다. 표준 TAP-Vid 지표를 쓴다. OA(Occlusion Accuracy)는 이진 분류로 본 occlusion 예측 정확도, \(\delta_{\text{avg}}^{\text{vis}}\) 는 보이는 점 중 1, 2, 4, 8, 16픽셀 안에서 추적된 비율의 threshold 평균, AJ(Average Jaccard)는 tracking과 occlusion 예측 정확도를 함께 재는 지표다. 모든 비디오는 \(256 \times 256\) 으로 resize해 처리한다. 로봇 조작 실사 비디오 265개(평균 272프레임)의 RoboTAP에서도 평가한다. TAP-Vid와 RoboTAP은 점이 처음 보이는 프레임에서 query를 뽑는 “first query” 방식으로 평가한다. 추가로 Dynamic Replica에서도 평가하는데, synthetic이라 가려진 점도 평가할 수 있다. 평가 subset은 articulated 3D 모델의 긴(300프레임) 시퀀스 20개다. 이 벤치마크들은 native 해상도로 평가하되 예측을 \(256 \times 256\) 으로 resize하고, TAP-Vid와 같은 threshold로 보이는 점(\(\delta_{\text{avg}}^{\text{vis}}\))과 가려진 점(\(\delta_{\text{avg}}^{\text{occ}}\))의 정확도를 보고한다.
4.1 Comparison to the state-of-the-art
track 간 상관을 보지 못하는 tracker들과의 공정성을 위해 TAP-Vid에서 query 점을 한 번에 하나씩 평가하고, joint tracking을 활용하도록 추가 support point를 sampling한다. 이렇게 하면 벤치마크 점 선택(일반적으로 물체와 상관됨)을 통해 비디오 속 물체 정보가 tracker로 새는 일이 없다. TAPIR처럼 예측 visibility에 예측 confidence를 곱하고 threshold를 적용해 AJ와 OA 지표를 개선한다.
| Method | Train | Kinetics AJ ↑ | \(\delta_{\text{avg}}^{\text{vis}}\) ↑ | OA ↑ | RGB-S AJ ↑ | \(\delta_{\text{avg}}^{\text{vis}}\) ↑ | OA ↑ | DAVIS AJ ↑ | \(\delta_{\text{avg}}^{\text{vis}}\) ↑ | OA ↑ | Mean \(\delta_{\text{avg}}^{\text{vis}}\) ↑ |
|---|---|---|---|---|---|---|---|---|---|---|---|
| PIPs++ | PO | - | 63.5 | - | - | 58.5 | - | - | 73.7 | - | 65.2 |
| TAPIR | Kub | 49.6 | 64.2 | 85.0 | 55.5 | 69.7 | 88.0 | 56.2 | 70.0 | 86.5 | 68.0 |
| CoTracker | Kub | 49.6 | 64.3 | 83.3 | 67.4 | 78.9 | 85.2 | 61.8 | 76.1 | 88.3 | 73.1 |
| TAPTR | Kub | 49.0 | 64.4 | 85.2 | 60.8 | 76.2 | 87.0 | 63.0 | 76.1 | 91.1 | 72.2 |
| LocoTrack | Kub | 52.9 | 66.8 | 85.3 | 69.7 | 83.2 | 89.5 | 62.9 | 75.3 | 87.2 | 75.1 |
| CoTracker3 (Ours, online) | Kub | 54.1 | 66.6 | 87.1 | 71.1 | 81.9 | 90.3 | 64.5 | 76.7 | 89.7 | 75.1 |
| CoTracker3 (Ours, offline) | Kub | 53.5 | 66.5 | 86.4 | 74.0 | 84.9 | 90.5 | 63.3 | 76.2 | 88.0 | 75.9 |
| BootsTAPIR | Kub+15M | 54.6 | 68.4 | 86.5 | 70.8 | 83.0 | 89.9 | 61.4 | 73.6 | 88.7 | 75.0 |
| CoTracker3 (Ours, online) | Kub+15k | 55.8 | 68.5 | 88.3 | 71.7 | 83.6 | 91.1 | 63.8 | 76.3 | 90.2 | 76.1 |
| CoTracker3 (Ours, offline) | Kub+15k | 54.7 | 67.8 | 87.4 | 74.3 | 85.2 | 92.4 | 64.4 | 76.9 | 91.2 | 76.6 |
[Table 1] TAP-Vid 벤치마크 비교(굵게 최고). Train 열의 Kub는 Kubric, PO는 PointOdyssey. 15k개 real 비디오를 더한 online 버전(Kub+15k)이 1,000배 많은 real 비디오로 학습한 BootsTAPIR까지 능가
Table 1에서 보듯 CoTracker3는 synthetic Kubric만으로 학습해도(Kub) 다른 tracker들과 충분히 경쟁한다. 4.2절의 방식으로 unlabelled 비디오를 더하면(+15k) DAVIS·RGB-S·Kinetics의 모든 지표와 RoboTAP의 세 지표 중 둘(AJ·OA)에서 state-of-the-art를 훌쩍 넘는다(Table 2). +15k offline 버전은 DAVIS와 RGB-S에서 online보다도 좋지만 Kinetics와 RoboTAP에서는 낮다. 데이터 효율 면에서, 추가 real 비디오 15k개만으로 학습했는데도 15M개(1,000배)로 학습한 BootsTAPIR를 앞선다. 데이터를 더 늘리면 성능이 조금 더 오른다(4.2절). LocoTrack도 이 학습 방식에서 비슷하게 이득을 보지만, 다음에 보이듯 occlusion에서 어려움을 겪는다.
| Method | Train | Size ↓ | Time ↓ | Dynamic Replica \(\delta_{\text{avg}}^{\text{vis}}\) ↑ | \(\delta_{\text{avg}}^{\text{occ}}\) ↑ | RoboTAP AJ ↑ | \(\delta_{\text{avg}}^{\text{vis}}\) ↑ | OA ↑ | Mean \(\delta_{\text{avg}}^{\text{vis}}\) ↑ |
|---|---|---|---|---|---|---|---|---|---|
| PIPs++ | PO | 25M | - | 64.0 | 28.5 | - | 63.0 | - | 63.5 |
| TAPIR | Kub | 31M | 293 | 66.1 | 27.2 | 59.6 | 73.4 | 87.0 | 69.8 |
| CoTracker | Kub | 45M | 472 | 68.9 | 37.6 | 58.6 | 70.6 | 87.0 | 69.8 |
| TAPTR | Kub | - | - | 69.5 | 34.1 | 60.1 | 75.3 | 86.9 | 72.4 |
| LocoTrack | Kub | 12M | 290 | 71.4 | 29.8 | 62.3 | 76.2 | 87.1 | 73.8 |
| CoTracker3 (Ours, online) | Kub | 25M | 405 | 72.9 | 41.0 | 60.8 | 73.7 | 87.1 | 73.3 |
| CoTracker3 (Ours, offline) | Kub | 25M | 209 | 69.8 | 41.8 | 59.9 | 73.4 | 87.1 | 71.6 |
| BootsTAPIR | Kub+15M | 78M | 303 | 69.0 | 28.0 | 64.9 | 80.1 | 86.3 | 74.6 |
| CoTracker3 (Ours, online) | Kub+15k | 25M | 405 | 73.3 | 40.1 | 66.4 | 78.8 | 90.8 | 76.1 |
| CoTracker3 (Ours, offline) | Kub+15k | 25M | 209 | 72.2 | 42.3 | 64.7 | 78.0 | 89.4 | 75.1 |
[Table 2] Dynamic Replica와 RoboTAP 결과(굵게 최고). Size는 파라미터 수, Time은 프레임·점당 마이크로초. RoboTAP의 \(\delta_{\text{avg}}^{\text{vis}}\) 만 1,000배 많은 데이터로 학습한 BootsTAPIR가 우세
[Figure 3] RoboTAP에서 scaling 전(윗줄)과 후(아랫줄)의 online(왼쪽 세 열)·offline(오른쪽 세 열) 모델 예측. 십자가 ground truth, 점이 모델 예측
Tracking occluded points. Dynamic Replica의 \(\delta_{\text{avg}}^{\text{occ}}\) 와 OA에서 다른 방법들과 비교한다(Table 2). 이 벤치마크에서 CoTracker3 online은 Kubric만으로 학습해도 다른 모든 방법보다 좋다. 특히 LocoTrack보다 훨씬 좋아서, cross-track attention 모듈에 추가된 파라미터가 정당화된다. 15k real 비디오를 더하면 online·offline 모두 보이는 점의 tracking이 좋아지지만, 가려진 점의 개선은 offline 모델에서만 나타난다. 개선 폭이 클 뿐 아니라 offline이 online보다 가려진 점 자체를 더 잘 추적하는데, 모든 프레임에 한 번에 접근하는 것이 occlusion 뒤의 궤적 보간에 도움이 되기 때문이다.
[Figure 4] 첫 프레임의 \(100 \times 100\) 점 grid 추적 정성 비교. LocoTrack과 CoTracker3가 BootsTAPIR보다 일관되지만, LocoTrack과 BootsTAPIR는 occlusion을 통과하지 못하고 배경·물체 점도 더 많이 잃음
4.2 Scaling experiments
Figure 1은 제안한 pseudo-labeling pipeline으로 학습 데이터를 늘릴 때 CoTracker3, LocoTrack, CoTracker가 어떻게 좋아지는지 보여준다. synthetic 데이터로 사전학습한 모델(x축의 0)에서 시작해 점점 큰 real 데이터셋(0.1k, 1k, 5k, 15k, 30k, 100k개)으로 각 부분집합에서 수렴할 때까지 학습한다. 모든 모델이 real 비디오 0.1k개만으로도 좋아지고 데이터가 늘수록 계속 좋아진다. CoTracker3 online·offline과 LocoTrack의 개선은 30k개 이후 정체되는 경향이 있는데, student가 teacher들을 넘어섰기 때문으로 보인다. 이것으로, teacher 중 둘(CoTracker3 online·offline)보다 처음에 훨씬 약했던 CoTracker가 100k개까지(그리고 그 너머까지도) 계속 좋아지는 이유도 설명될 수 있다. 이 학습 전략은 이 모델들 모두에 효과적이다. 비교하자면 BootsTAPIR는 1,500만 개 real 비디오와 augmentation·loss mask 등을 포함한 복잡한 protocol을 쓴다.
흥미롭게도 다른 teacher 없이 CoTracker3 자신의 예측을 annotation으로 쓰는 학습(즉 self-training)만으로도 TAP-Vid 전 벤치마크에서 평균 +1.2점이 오른다(Table 4). real 데이터에 대한 fine-tuning은 자신의 annotation으로라도 real과 synthetic 사이의 domain 격차를 줄여 주는 것으로 보인다.
4.3 Ablations
Cross-track attention. cross-track attention은 특히 가려진 점의 결과를 개선한다(Dynamic Replica에서 가려진 점 +5.1 대 보이는 점 +1.6, Table 3). cross-track attention이 있으면 모델이 보이는 점들의 위치로부터 가려진 점들의 위치를 추측할 수 있는데, 점을 독립적으로 추적하면 불가능한 일이다.
| Cross-track attention | \(\delta_{\text{avg}}^{\text{vis}}\) ↑ | \(\delta_{\text{avg}}^{\text{occ}}\) ↑ |
|---|---|---|
| ✗ | 71.3 | 35.9 |
| ✓ | 72.9 | 41.0 |
[Table 3] Dynamic Replica에서 cross-track attention이 occluded tracking에 주는 효과(굵게 최고)
| Self-training | AJ ↑ | \(\delta_{\text{avg}}\) ↑ | OA ↑ |
|---|---|---|---|
| ✗ | 62.2 | 74.5 | 88.2 |
| ✓ | 63.5 | 75.7 | 89.5 |
[Table 4] TAP-Vid 평균에서 self-training의 효과(굵게 최고). 10k개 real 비디오로 수렴까지 학습
Teacher models. pseudo-label 생성에 여러 teacher를 쓰는 효과를 평가한다(Table 5). 약한 모델부터 제거해 보되 student 모델 자신은 항상 teacher로 유지한다. 어느 teacher를 제거해도 네 teacher 모두로 학습한 마지막 행보다 나빠진다. 모든 teacher가 중요하고, student는 자신보다 약한 teacher에게서도 상호 보완적인 지식을 뽑아낼 수 있음을 보여준다.
| RT onl. | RT offl. | TAPIR | CoTr. | AJ ↑ | \(\delta_{\text{avg}}\) ↑ | OA ↑ |
|---|---|---|---|---|---|---|
| ✗ | ✗ | ✗ | ✗ | 62.2 | 74.5 | 88.2 |
| ✓ | ✗ | ✗ | ✗ | 63.5 | 75.7 | 89.5 |
| ✓ | ✓ | ✗ | ✗ | 64.5 | 76.4 | 89.9 |
| ✓ | ✗ | ✓ | ✗ | 63.6 | 76.2 | 89.7 |
| ✓ | ✗ | ✗ | ✓ | 64.2 | 76.5 | 90.1 |
| ✓ | ✓ | ✓ | ✗ | 64.0 | 76.6 | 89.9 |
| ✓ | ✗ | ✓ | ✓ | 64.2 | 76.6 | 90.1 |
| ✓ | ✓ | ✗ | ✓ | 64.0 | 76.6 | 90.0 |
| ✓ | ✓ | ✓ | ✓ | 64.0 | 76.8 | 90.2 |
[Table 5] teacher 모델 조합별 TAP-Vid 평균 성능(굵게 최고). student는 CoTracker3 online이고, 첫 행은 synthetic 데이터만으로 학습한 모델, 둘째 행은 self-training
Point sampling. LightGlue, SuperPoint, DISK 등 다른 점 sampling 방법도 탐색했다(Table 6). sampling 방법 선택은 성능에 큰 영향을 주지 않지만, SIFT sampling이 모든 TAP-Vid 데이터셋에서 일관되게 높다.
| Sampling | Kinetics | DAVIS | RoboTAP | RGB-S |
|---|---|---|---|---|
| Uniform | 67.9 | 76.9 | 78.4 | 84.0 |
| SuperPoint | 68.1 | 76.7 | 78.9 | 81.9 |
| DISK | 68.0 | 76.7 | 78.6 | 82.7 |
| SIFT | 68.2 | 77.0 | 78.8 | 83.3 |
[Table 6] 점 sampling 전략별 TAP-Vid \(\delta_{\text{avg}}\)(굵게 최고). SIFT가 전반적으로 최고지만 방법 선택에 robust
Freezing the confidence and visibility head. transformer head를 track용 head와 confidence·visibility용 head로 분리하면, real 데이터에서 track만 supervise할 때의 forgetting을 피할 수 있다(Table 7). 이 단계에서 confidence·visibility head를 freeze하면 TAP-Vid 평균으로 AJ +0.8, OA +3.9가 오른다.
| Frozen head | AJ ↑ | \(\delta_{\text{avg}}\) ↑ | OA ↑ |
|---|---|---|---|
| ✗ | 63.2 | 76.6 | 86.3 |
| ✓ | 64.0 | 76.8 | 90.2 |
[Table 7] confidence·visibility head freeze의 TAP-Vid 평균 효과(굵게 최고)
5. Conclusion
TAP-Vid를 비롯한 벤치마크에서 state-of-the-art를 넘는 새 point tracker CoTracker3를 제안했다. CoTracker3의 architecture는 최근 tracker들의 좋은 아이디어들을 결합하되 불필요한 구성 요소를 제거하고 나머지를 크게 단순화한다. 또 기성 tracker 여러 개로 real 비디오에 annotation을 달아 모든 teacher를 능가하는 모델을 fine-tuning하는 단순한 semi-supervised 학습 protocol의 힘을 보였다. 이 protocol로 CoTracker3는 1,000배 많은 비디오로 학습한 tracker를 넘어설 수 있다. 점들을 jointly 추적하는 덕분에 특히 offline 모드에서 다른 어떤 모델보다 occlusion을 잘 다룬다. 이 모델은 3D tracking, 제어 가능한 비디오 생성, dynamic 3D reconstruction처럼 motion 추정이 필요한 과제의 building block으로 쓰일 수 있다.