✔️ Project page : https://cotracker3.github.io/

 

CoTracker3: Simpler and Better Point Tracking by Pseudo-Labelling Real Videos

Most state-of-the-art point trackers are trained on synthetic data due to the difficulty of annotating real videos for this task. However, this can result in suboptimal performance due to the statistical gap between synthetic and real videos. In order to u

cotracker3.github.io

 

✔️  Practice link : https://huggingface.co/spaces/facebook/cotracker

 

CoTracker - a Hugging Face Space by facebook

Running on Zero

huggingface.co

 

 


➡️ Abstract

이 논문은 현시점에서 SoTA를 달성하는 Point Tracking 모델들이 실제 비디오를 Annotation하기 어렵기 때문에 주로 Synthetic 데이터로 학습된다는 문제를 지적한다. Synthetic 데이터와 실제 비디오 간의 통계적 차이로 인해 성능 저하가 발생할 수 있다는 점을 강조하며, 이를 개선하기 위한 CoTracker3를 제안한다.

 

이 모델은 Self-Supervised Learning 방식으로, Annotation이 없는 실제 비디오를 Pseudo 레이블을 사용하여 학습에 활용한다. 또한, 기존 CoTracker 모델구조에서 불필요하거나 복잡한 구성 요소를 제거해 더 간단하고 작은 아키텍처를 구현하며, 1,000배 적은 데이터를 사용하면서도 더 나은 결과를 얻을 수 있다고 주장한다.

 

 


➡️ Introduction & Related Work

Point Tracking은 정밀한 재현력이 필요한 영상 편집이나 3D Reconstruction과 같은 같은 작업을 위한 주요 과정중 하나이다. 최근에는 PIPs의 영감을 받아 Transformer 네트워크 구조를 기반으로 급격히 발전하고 있다. 

 

관련 선행 연구로는 Point Tracking 분야를 위한 벤치마킹을 만들고 제공한 TAP-Vid, PIPs의 구조를 개선하고 확장한 TAPIR, 동일 저자가 제안한 Transformer 구조 기반의 CoTracker가 있다. 하지만 위 모델들의 학습에 필요한 Annotation된 데이터를 구하기는 비용이 많이 들기에, BootsTAPIR과 같이 Semi-Supervised Learning으로 접근하는 방법론도 연구되었다. 

 

CoTracker3의 저자는 이와 같은 여러 선행 연구 모델에서 제시한 서로 다른 각 구조 모듈들을 중 정말 필수적인 모듈을 골라내어 간단하면서 성능이 좋은 구조를 찾아내었다고 주장한다. 성능적으로도 CoTracker3는 BootsTAPIR 보다 TAP-Vid와 Dynamlc Replica 벤치마크에서 월등한 지표를 보인다고 한다.  

 

본 논문에서는 새로운 Point Tracking 모델인 CoTracker3를 제안한다. 이는 더 최신의 새로운 아이디어를 적용해서 간단하고 데이터 효율적이게 개선한 모델이다. 

 

 


➡️ Method

Notation 및 모델 입출력 내용 정리

  • Video: \({ \texttt{$(I_t)_{t=1}^{T}$} }\)
    • 연속한 \({T}\)개의 Frame들에 대해서 \({ \texttt{$I_t \in \mathbb{R}^{3 \times H \times W}$} }\)
  • Query point: \({ \texttt{$Q = (t^q, x^q, y^q) \in \mathbb{R}^3$} }\)
    • \(t^q\)는 query frame의 index를 나타내고, \((x^q, y^q)\)는 query point의 최초 위치 정보
  • Model Output(point track): \(P_t = (x_t, y_t) \in \mathbb\{R\}^2\), \(t = 1, \ldots, T\)
    • 추적된 point들 중 query point 시점에서는 \((x_{t_q}, y_{t_q}) = (x^q, y^q)\) 를 만족해야 함
    • 또한 추가로 visibility와 confidence를 예측함
      • visibility: \(\mathcal{V}_t \in [0, 1]\)
        • 추적된 point가 visible( \(\mathcal{V}_t = 1\) ) 한지 occluded( \(\mathcal{V}_t = 0\) )한지 나타내는 출력 값
      • confidence: \(\mathcal{C}_t \in [0, 1]\)
        • 모델이 출력한 추적 point 위치에 대한 확신도
  • 모델은 최초의 track을 모두 query point \(P_t := (x_{t_q}, y_{t_q}), t = 1, \ldots, T\) 로, confidence와 visibility는 0으로 초기화( \(\mathcal{C}_t := 0\) , \(\mathcal{V}_t := 0\) )하며, 이후에 iterative하게 update함

 

3.1 Training Using Unlabelled Videos

전체적으로 Teacher-Student 구조를 사용한다. Teacher로는 다양한 기존의 Tracker 모델들을 종합해서 실제 video의 label을 추론하도록 하고 이 결과를 Pseudo-label로 사용하게 된다. Student는 저자가 직접 synthetic video를 통해 pre-train한 모델을 기반으로 Pseudo-label을 통해 추가 학습을 진행한다.

 

여기서 중요한 점은 Teacher로 사용되는 여러 Tracker들도 결국에는 synthetic 데이터로만 학습이 되어있다는 점인데, 어떻게 위와 같은 Teacher-Student 구조를 통해 Student 모델이 개선될 수 있는지에 대해서 아래와 같이 근거를 제시한다.

  1. Student 모델의 입장에서 더 많은 양의 synthetic 데이터를 통해 학습하는 효과가 있음
  2. 실제 Video 를 통해 추가 학습하면 합성 데이터와 실제 데이터 간의 분포 변화가 완화됨
  3. Teacher 모델이 annotation을 하는 과정은 ensemble 및 voting 효과가 있어서, Pseudo-annotation Noise를 줄이는 효과가 있음
  4. Student 모델은 여러 Teacher Tracker의 다양한 강점을 물려받을 수 있어서 일반화의 관점에서 긍정적으로 작용함

 

Dataset.

위와 같은 학습 방식을 척용하기 위해서 주로 인간과 동물에 대한 움직임을 포함하는 다양한 장면이 담긴 Internet 상의 데이터셋을 수집했다(30초 정도의 길이를 갖는 약 100,000개의 영상). 결과 부분에서 학습 데이터셋의 양 변화에 따른 성능 변화를 함께 실험했다.

 

Teacher models.

철저한 Pseudo-annotation을 만들기 위해서 저자는 Kubric (synthetic) 데이터를 통해 학습된 다양한 Tracker 모델들 (CoTracker3 online, CoTracker3 offline, CoTracker, TAPIR)을 사용했다. 저자는  학습 과정 도중에 각 Batch 별로 랜덤하게 Frozen Tracker Teacher 모델 하나를 뽑아서 Pseudo-annotation을 추론하게 했다. 이는 곧 여러 Epoch을 거치면서 동일한 Batch 데이터가 서로 다른 Teacher이 만들어낸 Pseudo-annotation을 학습의 정답으로 사용하도록 해서 Student의 일반화 성능을 확보할 수 있게 했다.

 

Query point sampling.

Tracker는 영상 뿐만 아니라 추적할 Query point를 입력으로 받아야한다. 이를 위해 SIFT 알고리즘을 사용하는데, 영상에서 Random하게 한 Frame을 선택하고, 해당 Frame에서 SIFT를 적용해 Query point들을 생성하게 된다. 이 방식은 이미지에서 특징이 잘 나타나지 않는 애매한 경우에는 Query point를 찾지 못하는 특성이 있는데, 이를 통해 추적이 어려운 포인트 및 영상 자체를 제외하여 학습 안정성을 높아졌다고 주장한다.

 

 

Supervision.

Student 모델이 예측한 Point들의 경로는 Synthetic 데이터로 Pre-train된 모델과 동일한 Loss Function을 적용한다. 다만, Occlusion과 Confidence를 고려하기 위한 작은 수정이 적용된다. 이는 이후 Section 3.3에서 자세히 다룬다.

 

 

3.2 CoTracker3 Model

CoTracker3 모델은 총 2가지의 버전이 있음

  • CoTracker3 Online
    • sliding window 방식을 사용
      • 입력 영상에 대해서 시간 순서대로 sequential하게 처리
      • 정방향만 고려한 tracking points 가능
    • 상대적으로 연산량이 적어서 Real-Time 처리 가능
  • CoTracker3 Offline
    • 영상 전체를 하나의 window로 처리
      • 정방향과 역방향 모두를 고려한 tracking points 가능 
      • Online 버전에 비해서 Occluded points를 더 잘 추적
      • Online 버전에 비해서 더 장기적인 시점이 고려된 추적 가능
    • 상대적으로 계산에 필요한 메모리의 양이 큼

 

Feature maps.

먼저, CNN을 통해 Dense \({d}\)-차원 feature maps을 계산하는 것으로 시작한다 ( \(i.e.,\ \Phi_{t}\,=\,\Phi(\text{I}_{t}),t\,=\,1,\cdot\cdot\cdot\,,T.\) ). 이때 원본 영상은 계산의 효율성을 위해 \({k=4}\)를 통한 downsampling을 진행되어 있는 상태이다 ( \({\Phi_{t}\in\mathbb{R}^{d\times{\frac{H}{k}}\times{\frac{W}{k}}}}\) ). 또한, 해당  처리가 된 영상을 \({S=4}\) 단계의 서로 다른 해상도 변경해서  feature maps을 계산한다 ( \( i.e., \Phi_{t}^{s} \in \mathbb{R}^{ \left( d \times \frac{H}{k 2^{s-1}} \times \frac{W}{k 2^{s-1}} \right) }, \, s = 1, \cdots, S.  \) )

 

4D correlation features.

Query point \({ Q = (t_q, x_q, y_q), \quad t = 1, \dots, T }\)가 영상의 다른 모든 프레임 \({ (t = 1, \dots, T) }\)에서 어디에 위치할지 예측하기 위해서 correlation을 계산한다. 다시 말해서, 시점 query frames \({t_q}\)의 query 좌표들 \({(\text{x}^q, \text{y}^q)}\)의 주변부에 위치한 feature maps \({ \Phi_{t^q}}\)와 전체 시점 frames의 현재 예측된 track위의 점 주변부 \( { \mathcal{P}_t = (\text{x}_t, \text{y}_t) } \)의 feature maps  \({ \Phi_{t}, t = 1, \cdots, T }\) 사이의 correlation을 계산하게 된다.

 

구체적으로, 주변부를 어떻게 표현하는지 살펴보자. 모든 점 좌표 \( \mathcal{P}_t \)의 서로 다른 scale을 가지도록 추출된 feature vector 주변 정사각형 이웃을 다음과 같이 수식으로 표현 수 있다..

 

$ \phi_{t}^{s}=\left[\Phi_{t}^{s}\left(\frac{\text{x}}{k s}+\delta,\frac{\text{y}}{k s}+\delta\right):\,\delta\in\mathbb{Z},\;\|\delta\|_{\infty}\leq\Delta\right]\in\mathbb{R}^{d\times(2\Delta+1)^{2}},\quad s=1,\ldots,S, \tag{1} $

 

feature map \({\Phi_{t}^{s}}\)은 좌표 \({(\text{x}_t, \text{y}_t)}\) 주변을 bilinear interpolation해서 만들어진다. 따라서 각각의 scale \({s}\)에 대해서 \({\phi_{t}^{s}}\)는 \({(2\Delta + 1)^2}\)의 크기를 갖는 grid에 pointwise \({d}\)-차원 features를 갖게된다.

 

다음으로는,  모든 scale \({s = 1, \cdots, S}\)에 대해서 4D correlation를 \({\langle\phi_{\mathrm{t}^q}^{s},\phi_{t}^{s}\rangle=\mathrm{stack}((\phi_{\mathrm{t}^q}^{s})^{\mathsf{T}}\phi_{t}^{s})\in\mathbb{R}^{(2\Delta+1)^{4}}}\)와 같이 정의한다. 직관적으로 이 연산은 query point \({(\text{x}^q, \text{y}^q)}\) 근처의 feature vector와 track point \({(\text{x}_t, \text{y}_t)}\) 근처의 feature vector를 비교함으로써, track point 위치를 update하기 위한 예측을 하는 과정이다. 이 correlation들을 이후 Iterative update를 위해 transformer에 입력으로 사용하기 전에, MLP를 통해 차원을 줄여서 correlation feature로 가공하는데 이를 수식으로 나타내면 \({\mathrm{{Corr}}_{t}={\big(}{\mathrm{MLP}}(\langle\phi_{\mathrm{t}}^{1},\phi_{t}^{1}\rangle),\cdot\cdot\cdot,{\mathrm{MLP}}(\langle\phi_{\mathrm{t}}^{\mathrm{S}},\phi_{t}^{\mathrm{S}}\rangle))\in\mathbb{R}^{p S}}\)로 표현할 수 있다.

 

Iterative updates.

모든 시간 \({t=1, \cdots, T}\)에 대해서 Confidence \(\mathcal{C}_t\)와 Visibility \(\mathcal{V}_t\)는 0으로, tracks \(\mathcal{P}_t\)는 최초의 query point \(\mathcal{Q}\) 좌표로 초기화한다. 이후에 위와 같은 값들을 모두 Transformer에 입력으로 사용하는 iterative한 update 과정을 거친다.

 

또한, 매 Iteration마다 Frame별 displacement를 Fourier Encoding을 사용하여 트랙을 임베딩하는데 수식으로 \({\eta_{t\rightarrow t+1}\;=\;\eta(\cal{P}_{t+1}\;-\;{\cal P}_{t})}\)와 같이 표현할 수 있다. 그 이후에 양방향 track embedding(\( \eta_{t\rightarrow t+1} \) and \( \eta_{t-1\rightarrow t} \) ), Confidence \(\mathcal{C}_t\), Visibility \(\mathcal{V}_t\), 4D correlations \( \mathrm{{Corr}}_t \)를 모든 query point에 대해서 다 합쳐서 이후 transformer의 입력으로 사용한다. \(i\,=\,1,\cdot\cdot\cdot\,\cdot\,\cdot\,\cdot\,N : \mathcal{G}_{t}^{i}\,=\,\left(\eta_{t-1\to t}^{i},\eta_{t\to t+1}^{i},C_{t}^{i},\mathcal{V}_{t}^{i},\mathrm{Corr}_{t}^{i}\right)\) \(\mathcal{G}_t^i\)는 결국 전체 시간 \({T}\)와 모든 \({N}\) 개의 query point에 대한 차원으로 확장되는 grid 형식의 Transformer 입력 Token의 역할을 하게 된다. Transformer \(\Psi\) 는 이러한 grid를 입력으로 받고 Fourier time embedding과 Time attention, Group attention을 추가로 사용한다. 또한 계산의 효율성을 위해 Proxy attention을 추가로 사용한다. 이러한 Transformer의 출력으로 얻게되는 Delta 값( \({(\Delta\mathcal{P},  \Delta\mathcal{C},   \Delta\mathcal{V}) = \Psi(\mathcal{G})}\) )들을 통해 매 iteration마다 값들을 업데이트( \({\mathcal{P}^{(m+1)}=\mathcal{P}^{(m)}+\Delta\mathcal{P}^{(m+1)};\mathcal{C}^{(m+1)}=\mathcal{C}^{(m)}+\Delta\mathcal{C}^{(m+1)};\mathcal{V}^{(m+1)}=\mathcal{V}^{(m)}+\Delta\mathcal{V}^{(m+1)}}\) )하게  된다. 이때 업데이트를 진행할 때마다 업데이트 된 track point \(\mathcal{P}^{(m+1)}\) 근처의 point wise feature \({\phi}\)를 resample하고, correlation \(\mathrm{Corr}\)을 다시 계산하게 된다.

 

 

3.3 Model Training

본 모델은 6의 Threshold와 iteration 마다 exponential하게 증가하는 weight를 갖는 Huber Loss를 사용한다. Occluded point에 대해서는 더 작은 weight을 부여하도록 term을 설정한다.

 

$ {\mathcal{L}}_{\mathrm{track}}(P,P^{\star})=\sum_{m=1}^{M}\gamma^{M-m}(\mathbb{H}_{o c c}/5+\mathbb{H}_{v i s})\,\mathrm{Huber}(P^{(m)},P^{\star}) \tag{2} $

 

이때, \(\gamma = 0.8\)을 사용해서 최근의 iteration에 더 큰 weight을 부여해서, visible point에 대해 잘 tracking 할 수 있도록 우선순위를 부여하는 역할을 한다.

 

Confidence와 Visibility는 Binary Cross Entrophy Loss를 통해 매 iteration 마다 학습하게 되는데, Confidence의 GT의 경우 예측한 track point와 GT track point 사이의 거리가 12픽셀 보다 적은 경우 1로 간주하는 indication function을 사용한다. 또또한 Confidence와 Visibility 모두 Loss 계산 전에 sigmoid를 거치게 된다. 이 내용은 아래 수식으로 표현할 수 있다.

 

$ {\mathcal{L}}_{\mathrm{conf}}(\mathcal{C}, \mathcal{P}, \mathcal{P}^{\star})=\sum_{m=1}^{M}\gamma^{M-m}\,\mathrm{{CE}}(\sigma(\mathcal{C}^{(m)}), \unicode{x1D7D9}[\Vert \mathcal{P}^{(m)} - \mathcal{P}^{\star} \Vert_2 < 12] ) \tag{3} $

 

$ {\mathcal{L}}_{\mathrm{occl}}(\mathcal{V},\mathcal{V}^{\star})=\sum_{m=1}^{M}\gamma^{M-m}\,\mathrm{{CE}}(\sigma(\mathcal{V}^{(m)}),\mathcal{V}^{\star}) \tag{4} $

 

Online model.

Online과 Offline 모드 둘 다 동일한 모델 구조를 사용하지만, 학습 방식에 차이가 있다. Online의 경우 \({T}^{\prime}\)의 크기를 갖는 window를 사용해서 학습하는데, window 내에서 track point를 예측하고 \({T}^{\prime} / 2\) 프레임 만큼 정방향으로 이동해서 track point를 예측한다. 이러한 과정을 전체 영상에 대해서 반복하게 되고, 겹쳐지는 예측 부분에 대해서는 이전 window의 출력값이 현재 window의 초기화 값으로 사용된다.

 

학습이 진행되는 동안, (2)(4)에 해당하는 Loss 식은 모든 window마다 각각 사용하게 되고, 모든 window에서 나온 출력들의 평균을 취해서 최종 track point 결과를 산출한다

Project page : https://riponazad.github.io/echotracker/

 

EchoTracker: Advancing Myocardial Point Tracking in Echocardiography

Tissue tracking in echocardiography is challenging due to the complex cardiac motion and the inherent nature of ultrasound acquisitions. Although optical flow methods are considered state-of-the-art (SOTA), they struggle with long-range tracking, noise occ

riponazad.github.io

 

 


➡️ Abstract

  • 심장초음파를 통한 tissue tracking은 심장의 복잡한 움직임과 초음파 자체의 특성 때문에 어려움
  • 해당 task의 기존 SOTA인 Optical flow 방법론은 SOTA로 여겨지기는 하나, 장기간 tracking을 수행하기 힘들고 noise occlusion, drift를 고려하지 못함
  • 최근에는 위 문제들을 극복하기 위한 학습기반의 point tracking 방법론이 소개되고 있음
  • 본 논문에서는 초음파 영상의 query point를 tracking 할 수 있는 EchoTracker라는 two-fold coarse-to-fine 모델을 제안함 
    • 초기에 trajectory에 대한 coarse initialization 진행
    • Reinforcement iteration을 통해 trajectory를 개선
  • Code link: https://github.com/riponazad/echotracker/.

 


➡️ Introduction

심장초음파를 통한 Myocardial imaging은 심장 근육의 형태를 평가하고 정량화하는 데 사용된다. 이를 통해 심장 기능성 저하나 근육의 불규칙성을 찾을 수 있고, 다양한 심장의 상태를 진단할 수 있다. Deformation을 측정하기 위한 myocardial strain은 ejection fraction과 같은 다른 measurement보다 더 민감하게 상위 질병과 연관 있다. Motion estimation은 정밀한 strain 측정을 위해서 필수적이지만, 영상 획득과 측정하는 방식의 다양성과 초음파 자체의 한계에 때문에 정밀한 측정은 쉽지 않다. 근래에 motion 측정과 strain imaging은 block 및 feature matching을 통한 speckle tracking 방법론이 일반적이었다. 최근에는 학습 기반의 기술이 발전하면서 FlowNet 및 PWC-Net과 같이 optical flow 기반의 모델이 발전했고, 이는 초음파 영상에도 적용시키고자 하는 연구들이 진행되었다. 하지만 optical flow는 긴 영상의 시간적인 정보를 고려하지 못하고 연속한 frame 사이에서의 displacement field를 계산한다는 단점이 있다. 따라서 저자는 모델 구조를 초음파 데이터에 맞게 설계해서 간단한 구조로 효율적인 학습이 가능하고 좋은 성능을 낼 수 있었다.

 


➡️ Tracking Any Point (TAP)

TAP는 deep learning의 새로운 분야로, optical flow 기반의 tracking의 한계를 극복하기 위해 발전해왔다. 또한 단단하지 않은 물체 표현에 있는 점에 대한 추적이 가능하다. TAP 분야를 최초로 정의한 저자 Doersch는 간단한 모델인 TAP-Net을 통해 향후의 성능평가를 위한 실제 및 임의 데이터에 대한 baseline 성능을 제공했다. TAP 알고리즘은 영상 데이터와 query point를 입력받게 되면 어떤 모든 시간 \({t}\)에 대한 tracking 된 위치 \({(x_t, y_t)}\)와 가려짐 여부 (\({o}_t\))를 출력한다. 이때 만약 occluded 된 것으로 (\({o_t = 1}\) 판단된 frame의 예측 위치는 의미가 없는 것으로 간주한다. 하지만 이러한 특징은 심장초음파에 적용하기에 모순이 있다. 이는 측정되고 있는 면을 벗어나는 점에 대해서까지도 GLS를 위한 움직인 위치를 계산할 수 있어야 하기 때문이다. 따라서 저자가 제안하는 모델에서는 Persistent Independent Particles (PIPs) 기반의 구조와 결합해서 사용한다. 하지만 여전히 PIP 기반의 방법은 각각의 점들을 독립적으로 tracking 할 뿐, trajectory 사이의 정보를 교환하지 않기 때문에 myocardial tissue와 같이 deformable 해서 초음파 측정 탐지봉의 view 범위를 벗어나는 물체를 tracking 하는데 큰 drift가 생기는 등의 어려움이 있다. 이와 같은 문제점은 CoTracker와 OmniMotion이라는 이전 연구들에서도 언급된 적이 있다.

  • CoTracker
    • naive initialization이후에 sliding window 방법을 사용하는 transformer 구조를 통해 iterative하게 trajectory를 개선
    • PIPs의 long-range tracking과 동일한 단점을 가지고, window 크기를 늘린다 해도 계산량이 많아짐 
  • OmniMotion
    • 입력 영상의 canonical 3D volume에 기반한 test-time 최적화 방법

 


➡️ Methods

학습 기반 모델의 전반적인 목표는 복잡한 움직임, 변형, 잡음이 섞여있는 심장 주기를 걸쳐서 특정 지점들을 tracking하는 것

  • 입력되는 초음파 영상 : \({U} = \{ u_s \in \mathbb{R}^{H \times W} \} \) for \({s}= 0,1,\ldots,S\)
    • 이미지의 높이 : \({H}\)
    • 이미지의 너비 : \({W}\)
  • 영상의 첫 frame속 query points : \({p}_0 = \{ (x_0^n, y_0^n) \} \) for \({n} = 0,1,\ldots,N \)
  • 출력되는 queried points : \({P}=\{ p_s \in (x_s^n, y_s^n) \} \)

 

✔️ EchoTracker

위 그림과 같이 EchoTracker는 두 단계로 나뉜다 (\({initialization},\;{iterative \; reinforcement}\)). 해당 접근법은 TAPIR에서 영감을 받은 two-fold coarse-to-fine 전략을 따른다. 해당 방식을 통해 적절한 계산 속도를 확보하면서, downsampling에 의한 정보 손실도 방지하는 효과를 얻는다.

  • Initalization
    • trajectory들은 coarse-network를 통해 feature map의 coarse resolution에 기반해서 초기화됨 
  • Iterative reinforcement
    • trajectory들은 fine-network를 통한 fine-grained feature map를 사용해서 반복적으로 개선됨

 

◾Initialization

  • 입력 데이터에는 \({S}\)개의 초음파 이미지와, \({N}\)개의 query point가 포함됨
  • Coarse feature map을 만들기 위해서 pruned 2D residual convolutional network (basic encoder)가 사용됨
    • Coarse feature map : \({F}_s \in \mathbb{R}^{d \times \frac{H}{k} \times \frac{W}{k} }\) 
    • \({k}=8\) 과 \({d}=64\) 가 사용됨
    • prunning은 계산 비용 절감과 초음파 영상의 제한된 특성 (grayscale, cyclic, velocity)을 고려하기 위해 고안되었음
  • 첫 frame에 대한 query point \({p}_0^n\)가 주어졌을 때 bilinear sampling을 통해 point에 대한 feature vector를 얻음
    • feature vector \({f}_{p_0^n} = \text{sample}(F_0, p_0^n) \)
  • 앞서 계산한 feature vector와 전체 영상에 대해 내적을 통해 cost volume을 계산
    • 이때 multi-scale feature pyramid를 사용함
      • \({L} = 4\)와 kernel size \({r}=3\)을 사용
    • Cost volume : \( {C}^n_s = {f}_{p_0^n} \cdot \text{pyramid}(F_s) \)
  • cost volume은 coarse 1D ResNet에 입력되어 initial trajectory를 출력함
    • initial trajectory : \({P}_s^n\)
    • 2D ResNet 대신 1D ResNet을 사용해서 시간적인 정보에 우선순위를 부여함, 공간적인 정보는 bilinear sampling에서 고려되었다고 가정

 

◾Iterative Reinforcement

PIPs와 최근의 point tracking 방법론들에서 영감을 받아 initial coarse trajectory를 iterative reinforcement 과정을 통해 개선했다. 저자는 본인들의 initialization 방식이 비교적 성공적으로 수행된다고 생각해서, 적은 iteration 횟수( \({I}=4\) )로도 개선된 trajectory로 잘 수렴할 것이라고 가정했다.

  • Initialization 이후 동일한 basic encoder를 사용하되, downsampling 인자는 줄여서 \({k}=2\) 를 사용함
    • fine feature maps : \({F_s} \in \mathbb{R}^{d \times \frac{H}{2} \times \frac{W}{2}} \)
  • Initialization과 달리 cost volume을 계산할 때, 현재 frame \({s}\)의 feature vector \({f}_{p^n_s}\)와 feature map의 point 위치 근처의 multi-scale crops of pyramid feature 사이의 내적값을 계산함
    • cost volume : \({C}_s^n = f_{p_s^n} \cdot \text{multicrop-pyramid}(F_s)\)
  • 현재 frame에서 고정된 간격을 갖는 다른 cost volume( \({i.e.,\; C^n_{s-2}, C^n_{s-4}}\) )과 첫 frame의 cost volume( \({C}^n_0\) )을 함께 tracking 예측에 사용함
    • 이러한 cost volume 들을 모두 더해서 linear layer에 입력함으로써 현재 frame에 대한 score map을 계산함
    • 위 과정을 모든 frame에 걸쳐서 수행
  • 모든 score map을 1D ResNet에 입력해서 업데이트 값 \(\Delta{p^n_s}\)을 계산함
    • 이때 사용되는 1D ResNet은 initialization에 사용된 coarse 한 네트워크 보다 더 깊고 많은 가중치를 가짐
    • 계산된 결괏값을 통해 업데이트를 진행
      • \({p_{s, i}^n} = p^n_{s, i-1} + \Delta{p_{s, i-1}^n}\)

 

⚠️ 온전한 이해를 위해서 TAP-Vid 및 PIPs 논문 리뷰 선행 권장


 

Paper link: https://deepmind-tapir.github.io/

 

TAPIR: Tracking Any Point with per-frame Initialization and temporal Refinement

We present a new model for Tracking Any Point (TAP) that effectively tracks a query point in a video sequence. Our approach employs two stages: (1) a matching stage, which independently locates a suitable candidate point match for the query point on every

deepmind-tapir.github.io

 


➡️ Abstract

본 논문에서는 영상데이터의 어떤 표면(surface)이나 지점(point)을 입력으로 받았을 때 효율적으로 trajectory를 추적할 수 있는 Tracking Any Point (이하 TAP) 모델 TAPIR(TAP with per-frame Initialization and temporal Refinement)을 제안한다. 해당 모델은 모든 frame에서 trajectory 예측의 후보군을 찾는 "matching stage"와 주변 feature을 사용해 trajectory와 query feature를 업데이트하는 "refinement stage", 총 두 단계로 구성된다. TAP-Vid 벤치마크에서 기존 방법론들보다 월등하게 성능 향상을 이뤘고 재생시간이 길고 고해상도인 영상 데이터에 대해서도 빠른 추론시간을 확보했다고 주장한다.

 


➡️ Introduction

  TAP 모델은 영상데이터와 query point를 입력으로 받았을 때, 모든 frame에 대해서 해당 query point가 어디에 위치하는지 출력할 수 있어야 한다. 만약, query point가 다른 사물에 가려졌다가(occluded) 다시 나타나는 경우에 모델은 사라진 시점과 재등장한 시점을 인식할 수 있어야 한다. 게다가 잘 labeling된 현실 데이터의 양이 부족해서 대부분 임의로 생성한 데이터를 사용해 학습하는데, 이러한 방식은 overfitting의 위험이 있다.

 

  본 논문에서는 TAP을 잘 수행하기 위해 아래 3가지 주요 구조를 기반으로 설계한 TAPIR 모델을 제안한다.

  1. Coarse-to-fine approach
    • 초반부에 등장하는 coarse tracking에서는 track은 저해상도에서 찾을 수 있다는 가정을 통해, 모든 frame에 대해서 occlusion에 강건한 매칭 방식을 사용
    • 이후 fine refinement 단계에서는 고해상도에서 국지(local)적인 시공간 정보를 반복적(iteratively)으로 사용
    • 위 두 방식을 통해 모델 네트워크는 smoothness of motion과 local apperance cue를 적당히 절충해서 학습
  2. Fully-convolutional in time
    • 해당 네트워크 구조는 feature들을 비교하고, 시간적 convolution, 공간적 convolution을 수행
    • 현대의 GPU와 TPU에 효율적으로 mapping 되도록 구현  
  3. Self-supervised estimation
    • 모델은 trajectory를 추정함에 있어, 자기 자신의 불확실성(uncerntainty)를 함께 추정할 수 있게 설계함
    • 즉, Self-supervised 방식의 도입을 통해 낮은 신뢰도를 갖는 예측 결과를 억제하는 효과

 

위의 설계 내용을 어느정도 만족하는 두 가지 모델이 이미 개발되어 있는데, 이는 TAP-Net과 Persistent Independent Particles(이하 PIPs)이다. 따라서 본 논문에서 제시한 구조는 이 두 모델의 장점을 효과적으로 결합하여 만들었다. 

  • TAP-Net
    • 모든 frame에 대한 global search 수행
    • Occlusion에 강건한 coarse track을 예측
    • 영상데이터의 연속성을 올바로 활용하지 못해서 불안정하고 비현실적인 track을 예측
  • PIPs
    • 주어진 Initialization에 따라, 주변 정보를 탐색해서 track을 부드럽게 예측
    • 영상데이터를 chunk 단위로 잘라서 진행되기 때문에, 각 chunk 예측을 위해 이전 chunk 계산 값이 필요
    • Occlusion을 잘 탐지하지 못하고, 병렬 계산을 하기 힘들어서 속도가 느림

 


➡️ Related Work

(중략)

 


➡️ TAPIR Model

TAPIR 모델의 입/출력과 개괄적인 Model Flow 특징은 아래와 같다.

  • 입력
    • 영상(video)데이터
    • track 예측을 수행할 query point
  • 출력 ( 모든 frame \({t}\)에 대한 )
    • 2D 위치 값 - query point에 대응하는 위치 \({p}_t\)
    • 1D 확률 값 - 위치 값의 가려진(occluded) 정도 \({o}_t\)
    • 1D 확률 값 - 위치 값의 불확실도(uncerntainty) \({u}_t\)
  • Model Flow ( * 각 Stage에 대한 더 자세한 내용은 아래에서 설명 )
    • Stage 1. Track Initialization
      1. Occlusion에 강건하도록 각 frame의 후보 위치들을 모든 다른 frame의 query feature과의 similairty 비교를 통해 cost volume 계산 
        • query feature \({F}_q\)와 다른 모든 frame \({t}\)의 feature들을 각각 내적
        • 이때 모든 frame과의 내적을 수행하기 때문에, 시간적 연속성은 고려되지 못함
      2. 후처리를 통해 다음 Stage2.의 입력으로 필요한 형태로 변환
        • ConvNet을 통한 후처리로 cost volume을 spatial heatmap을 거쳐 point estimate로 변환
        • TAP-Net의 방법론과 비슷하게 진행
    • Stage 2. Iterative Refinement
      1. query feature와 initial track의 주변 영역(small region)의 모든 feature 사이의 local similiarity를 계산
      2. query feature와 track을 업데이트
        • fully-convolutional pyramid구조를 통해 앞서 계산된 local similiarity를 전달해서 업데이트 수행
        • TAPIR의 최종 trajectory 예측 값을 출력하기 위해 이 과정을 수 차례 반복 수행
  • 공통적인 특징 
    • 두 stage는 모두 query point feature와 다른 feature 사이의 내적(dot product)을 통한 similairty 계산을 사용하기 때문에, 해당 모델은 특정한 feature에 overfitting 되지 않음
    • track 예측 위치의 불확실도(uncerntainty)를 함께 추정하도록 설계함으로써 Self-supervised 하게 낮은 정확도를 갖는 예측을 억제

✔️ Track Initialization

 Initial cost volume은 TSM-ResNet backbone을 통해 계산된 coarse 한 feature map \({F} \in \mathbb{R}^{T \times \ H/8 \times W/8 \times C} \)를 사용해서 계산된다. 이때 \({T}\)는 총 frame 수, \({H}\)와 \({W}\)는 이미지의 높이와 너비, \({C}\)는 채널 수이다. 각 query point에 대한 query feature \({F}_q\)는 query location에서의 bilinear interpolation을 통해 구해지고, cost volume은 query feature와 다른 모든 feature 사이의 내적을 통해 계산된다. 

 

위치 \({p}^0_t=(x^0_t, y^0_t)\)에서의 initial estimate와 occlusion \({o}^0_t\)은 작은 ConvNet을 통해 계산된다. 이때의 입력은 frame \({t}\)에 대한 cost volume(query 당, \({H/8 \times W/8 \times1}\)) 이고 출력은 예측한 위치에 대한 heatmap\({H/8 \times W/8 \times1}\))과 average pooling을 통해 얻어지는 occlusion을 추정하는 단일 scalar logit 값이다. Heatmap은 "spatial soft argmax"를 통해 position estimate로 변환된다. 즉, 이는 공간에 대해서 softmax를 하는 과정이며 heatmap의 값을 모두 합했을 때 1이 되도록 하는 양수 값들로 변환하는 효과를 갖는다. 그 이후 heatmap내의 값들 중 최고 값을 갖는 위치를 기준으로 멀리 떨어져 있는 값들은 모두 0으로 변경된다. heatmap은 thresholded heatmap magnitude에 의해 공간적 평균을 취하게 된다. 따라서 출력은 보통 heatpmap의 최대치에 가까운 값들이다. "soft argmax"는 미분가능하며 thresholding을 통해서 잘못된 matching을 억제한다.

 

Position Uncentainty Estimates

cost volume으로부터 position과 occlusion을 각각 독립적으로 예측하는 방식은 단점이 있다. 예를 들어 만약 point가 실제(ground truth)에서 잘 보이는 상태(visible)인데, 모델이 "완전히 잘못된 곳에 point가 있다고 예측하는 경우"가 단순히 "보이지 않는다고 판단하는 경우(invisible)" 보다 더 좋지 않을 수 있다. 

downstream application에서는 예측된 track을 통해 object motion을 이해하고 싶을 것이다. 이러한 downstream pipeline은 occlusion에 강건해야 하지만,  occlusion을 잘 고려하지 못한 경우에도 잘 예측한 결과라고 착각할 수 있다. Average-Jaccard 평가지표는 이러한 맹점을 해결할 수 있는데, 잘못된 예측을 한 경우에 "false positive"와 "false negative"로 둘 다 카운트하는 방식이다.

 

위와 같은 단점은 알고리즘의 위치 추정에 대한 불확실성이 클 때 주로 발생한다. 그러므로 저자는 position 예측과 함께 예측 자체에 대한 불확실도를 함께 산출되도록 설계했다. 모델이 예측하는 position이 ground truth에서 threshold \({\delta}\) 보다 더 멀리 떨어져 있다면  불확실도 \({u}^0_t\)를 1로 산출하는 방식이다. 

 

결과적으로 frame \({t}\)에 대한 최종 loss \( \mathcal{L}(p_t^0, o_t^0, u_t^0) \)는 아래와 같이 정의된다.

 

$\begin{array}{rl}{{\mathcal{L}}(p_{t},o_{t},u_{t})} & {=\operatorname{Huber}({\hat{p}}_{t},p_{t})*(1-\hat{o}_{t})}\\ {} & {\quad\operatorname{+BCE}({\hat{o}_t, o_t})}\\ {} & {{\quad\operatorname{+BCE}({\hat{u}}_{t},u_{t})*(1-{\hat{o}}_{t})}}\\ {\operatorname{where},\quad{\hat{u}}_{t}} & {{=\begin{cases}{\begin{array}{lc} {1}&\text{if} \;\; d(\hat{p}_t), p_t) > \delta \\ {0}&\text{otherwise} \end{array}}\end{cases}}}\end{array}  \tag{1}$

 

\(\hat{o}_t \in \{0, 1\} \)과 \(\hat{p} \in \mathbb {R}^2\) 은 각각 occlusion정도와 point의 위치에 대한 ground truth이다. \({d}\)는 Euclidean 거리이며 \({\theta}\)는 불확실성 구분을 위한 threshold이다. \(\operatorname {Huber}\)는 Huber loss이고 \(\operatorname{BCE}\)는 binary cross entropy이다 (\({o}_t\)와 \({u}_t\)를 확률값으로 해석하기 위해서 sigmoid를 적용). \(\hat{u}_t\)는 예측된 불확실도 \({u}_t\)의 target이 되는데, 이는 ground truth 위치와 예측된 위치 사이의 거리에 따라 결정된다 (예측 위치가 ground truth를 기준으로 \({\delta}\)보다 적은 거리 내에 있는 경우에 0이 됨).

 

테스트를 진행할 때, 모델은 point가 보이는지 아닌지 여부를 함께 출력하는데, \({(1-u_t) \ast (1-o_t)} > 0.5\)를 만족할 경우 보이는 것으로 간주한다.

 

✔️ Iterative Refinement

모든 frame에 대해서 position, occlusion, uncentainty 값이 예측된 이후, refinement를 위한 각 iteration \({i}\)의 목표는 estimation을 좀 더 ground truth에 근접하도록 모든 frame의 정보들을 이용해 \((\Delta{p_t^i}, \Delta{o_t^i}, \Delta{u_t^i} )\)를 계산함으로써 업데이트하는 것이다. 이 업데이트는 query point feature와 그 주변부의 feature들 사이의 유사도(내적과 같은) 계산을 통해 만든 local score maps를 바탕으로 진행된다. local score maps는 해상도(resolution) 별로 pyramid 구조를 통해 계산되는데, 주어진 trajectory에 대해서 \(({H^\prime} \times {W^\prime} \times {L})\) ( \({H}^{\prime} = {W}^{\prime} = 7 \) ), local neighbor의 크기)의 shape을 가지고 \({L}\)은 spatial pyramid의 층 수이다. 이때 다른 층의 값은 feature를 pooling으로 층에 맞게 사이즈 조절을 하고 나서 계산된다.

 

Track initialization과 마찬가지로 local score maps도 후처리 layer를 통해서 refine 된 position, occlusion, uncentainty를 예측하게 되는데, 이때의 차이점은 local score maps를 사용할 때 모든 frame의 정보를 동시에 후처리 layer의 입력값으로 사용한다는 점이다. 즉 이 후처리 layer의 입력은 현재 iteration에서의 position estimate, 원본 query feature, flatten 된 local score maps이고 shape은 \({T} \times (C+K+4)\)이다 (\({C}\)는 query feature의 채널 수, \({K = {H}^{\prime} \cdot {W}^{\prime} \cdot {L}}\))는 local score map의 flatten된 값 개수, 4는 position, occlusion, uncerntainty를 위해 추가된 차원 수). 또한 \({i}\) 번째 iteration에서 후처리 layer의 출력은 \( ( \Delta{p}_t^i, \Delta{o}_t^i, \Delta{u}_t^i, \Delta{F}_{q,t,i}) \) 이고 각각 position, occlusion, uncentainty, query feature에 대헤 업데이트하기 위한 값이다. \( \Delta{F}_{q,t,i} \)는 \({T} \times {C}\)의 shape을 갖는데, 첫 번째 iteration 이후에는 이 업데이트 값이 반영된 query feature를 입력에 다시 사용하게 된다.

 

위에 설명한 일련의 과정과 같이 position과 score maps는 총 12 블록의 ConvNet에 입력되어 \( ( \Delta{p}_t^i, \Delta{o}_t^i, \Delta{u}_t^i, \Delta{F}_{q,t,i}) \) 가 계산되고, 각 블록은 \(\text{1} \times \text{1}\) convolution 블록과 depthwise convolution 블록으로 구성된다. 이러한 구조는 PIPs의 refinement 과정에서 사용된 MLP-Mixer를 통해 영감을 얻었는데, 본 논문에서는 Mixer의 cross channel layer를 같은 채널 수를 사용하는 \(\text{1} \times \text{1}\) convolution 블록으로 대체했고 채널 내의 연산을 depth wise convolution으로 변경했다. 또한 MLP-Mixer의 입력으로 영상데이터를 8-frame 별 chunk로 잘라서 사용하는 PIPs와는 다르게, 본 논문에서 변경한 convolutional 구조는 어떠한 길이의 영상데이터를 가지고도 입력으로 사용할 수 있다.  

 

Score maps을 계산하기 위해 사용되는 feature maps는 높은 성능 확보를 위해 중요하다는 사실을 발견했다. Pyramid 구조의 \({l} = 1\) 층부터 \({L} - 1\) 층까지의 score maps는 1) TSM-ResNet을 통해 계산된 raw feature \({F}\)에 \({8} \cdot {2}^{l-1}\) 크기의 stride를 사용한 average pooling을 적용한 feature와 2) query feature \({F}_q\) 사이의 내적을 통해 계산된다. 결과적으로 각 \({t}\) 번째 frame에 대해서, \({p_t}\)를 중심으로 \({7}\times{7}\) 크기를 갖는 내적 patch를 뽑게 된다.

 

모델의 학습시간에 PIPs는 위와 같이 진행하지만, 테스트를 할 때는 backbone의 stride를 4로 변경하는데, 이는 train/test domain gap을 보여주기 위한 방법이다. 본 논문의 저자는 학습 시에도 stride 4를 사용하는 것이 효과적인 것을 발견했는데 이 방식은 system의 메모리를 많이 사용한다는 단점이 있다. 따라서 이 점을 개선하기 위해 초기의 score map를 64 채널 stide 4를 사용하는 TSM-ResNet을 통해 계산한 뒤 bilinear interpolation을 통해 상응하는 feature를 뽑는 방식을 사용했다. 따라서 최종 local score maps는 \( ( {7}\cdot{7}\cdot{L} ) \)의 shape을 갖게 된다.

 

위에서 설명한 구조를 통해 \( ( \Delta{p}_t^i, \Delta{o}_t^i, \Delta{u}_t^i, \Delta{F}_{q,t,i}) \) 를 얻게되어 반복적으로 refinement를 수행할 수 있다.

 

 

⚠️ 온전한 이해를 위해서 TAPIR 논문 리뷰 선행 권장


Paper link : https://arxiv.org/abs/2402.00847

 

BootsTAP: Bootstrapped Training for Tracking-Any-Point

To endow models with greater understanding of physics and motion, it is useful to enable them to perceive how solid surfaces move and deform in real scenes. This can be formalized as Tracking-Any-Point (TAP), which requires the algorithm to be able to trac

arxiv.org


➡️ Abstract

  • Tracking-Any-Point(이하 TAP) : 비디오 데이터에서 조밀한 시공간 내의 특정 지점을 추적하는 알고리즘
  • 해당 논문에서는 실제 large-scale, unlabeled, uncurated 데이터를 사용한 self-supervised learning을 통해서, 약간의 모델 구조 변화로도 TAP 모델의 성능 향상이 가능하다는 점을 시사함
  • TAP-Vid benchmark의 기존 SOTA 모델 성능을 크게 뛰어넘었음
    • TAP-Vid-DAVIS : 61.3% → 66.4%
    • TAP-Vid-Kinetics : 57.2% → 61.5%

➡️ Introduction

  • 최근 vision 모델의 발전이 지속되고 있으나, 여전히 물리 공간적인 추론 능력 부족이 SOTA 모델들의 약점
  • 복잡한 움직임과 물리적인 상호작용을 이해해야 하는 robotics, video generation/editing, 3D asset creation와 같은 작업에서 TAP은 정확한 움직임을 표현하기 위한 유망한 알고리즘
    • 고체 표면에 대해서 일치하는 점을 추적하는 방식을 통해, 물체의 deformation과 motion에 대한 가치 있는 정보를 얻을 수 있음
  • TAP은 비디오 데이터와 움직임 추적을 위한 query point 집합을 입력으로 받고, 비디오의 매 frame 마다 해당 query point들의 추적된 위치를 출력해야 함
    • 만약 중간에 query point가 사라지는 경우, 해당 frame에서 point가 투명해진(occluded) 정도도 함께 모델링함
  • TAP 모델을 만들기 어려운 이유는 현실적인 training data의 부족
    • 이유 1: 부정확하고 균일하지 못한 수동 labeling 방식
    • 이유 2: 특수한 상황에서만 사용할 수 있는 3D sensing 방식
    • 따라서, 현재 SOTA 모델은 임의 생성(synthetic) 데이터에 의존
  • 해당 논문은 unlabeled 데이터를 사용해서 TAP 성능을 향상하는 방식을 제안
    • 만약 주어진 video에 대한 추적이 잘 이루어졌다면 아래 3가지 항목들이 지켜져야 함 (지켜지지 않아서 생기는 error를 학습을 위해 사용)
      1. video와 trajectory에 대한 spatial transformation이 동일
      2. 동일한 trajectory 위에 존재하는 query point들은 동일한 추적값 산출
      3. 이미지 압축과 같이 비공간적인 데이터 augmentation을 한 경우, 동일한 결과 산출

 


➡️ Method

self-training TAP을 개발함에 있어서 저자는 optical flow와 비슷하게 TAP도 query point들에 대한 정확한 정답이 존재한다는 점에 주목했다. 이는 의미적으로 비슷한 이미지가 비슷한 표현을 갖는 한, 다른 self-supervised 방법론과는 구분되는 특징이다. 

 

제시한 방법론은 단단하고 불투명한 표면 위의 point 추적에 대해서 아래 두 가지 조건에 기반한다.

  1. affine tranformation과 같은 spatial transformation를 video에 적용한 결과와 point tracks(trajectory)에 적용한 결과는 동일
  2. track 위의 어떤 point를 query로 사용하더라도 산출되는 결과는 동일

저자는 위의 두 조건을 만족시키기 위해 Siamess 구조를 사용할 수 도 있지만, 이러한 방법은 예측 결과 성능이 좋지 않았다고 한다. 대신 Student-Teacher 구조를 사용했는데, student는 augmentation을 통해 더 어려운 데이터를 입력으로 받고 teacher은 gradient를 전달받지 않는 것이 특징이다.

 

모델은 Kubric 데이터 셋으로 pre-trained된 TAPIR network로 시작된다. 모델의 예측값을 \(\hat{y}=\{\hat{p}[t], \hat{o}[t] , \hat{u}[t]\}\)라 하자. 이때 \(\hat{p}\in\mathbb{R}^{T\times2}\)는 위치값(position), \(\hat{o}\in\mathbb{R}^{T}\)는 투명도(occlusion logit), \(\hat{u}\in\mathbb{R}^{T}\)는 불확실도(uncentainty logit)이고 \({T}\)는 frame수 이다. \({p[t]}\)와 \({o[t]}\)는 frame \({t}\)에서의 ground truth이고, 하나의 trajectory에 대한 TAPIR loss는 아래와 같이 정의된다.

 

$ \begin{array}{rlr}{{\mathcal{L}_{tapir}}(\hat{p}[t],\hat{o}[t],\hat{u}[t])} & {=\operatorname{Huber}({\hat{p}}[t],p[t])(1-\hat{o}[t])} & \text{Position loss}\\ {} & {\quad\operatorname{+BCE}({\hat{o}[t], o[t]})} & \text{Occlusion loss}\\ {} & {{\quad\operatorname{+BCE}({\hat{u}}[t],u[t])(1-{\hat{o}}[t])}} & \text{Uncertainty loss}\end{array}  \tag{1}$

 

불확실도(uncerntainty logit)는 \({u[t]}= \unicode{x1D7D9} (d(p[t],\hat{p}[t] > \delta))\)으로, \({d}\)는 \({L}_2\) 거리이며 \({\delta}\)는 6 pixel로 설정된 거리의 threshold 값이고 \({ \unicode{x1D7D9} }\)는 특성 함수(indicator function)이다. 즉, 불확실도는 모델의 예측값이 ground truth의 근처(threshold 만큼)에 위치하게끔 학습하게 하는 효과를 준다. 

 

pre-training 이후에는 추가 convolutional residual layer를 추가해서 추가 학습 데이터를 입력받을 수 있게 한다. \(\hat{y}_\mathcal{S}=\{\hat{p}_ \mathcal{S} , \hat{o}_ \mathcal{S} , \hat{u}_ \mathcal{S} \}\)를 student의 예측값이라고 하고, teacher의 예측 \(\hat{y}_\mathcal{T}=\{\hat{p}_ \mathcal{T} , \hat{o}_ \mathcal{T} , \hat{u}_ \mathcal{T} \}\)으로 부터 pseudo-labels \({y}_\mathcal{T}=\{{p}_ \mathcal{T} , {o}_ \mathcal{T} , {u}_ \mathcal{T} \}\)를 뽑는다. ( \({t}\)는 시간 index )

 

$ p_\mathcal{T}[t]=\hat{p}_\mathcal{T}[t]\quad;\quad o_\mathcal{T}[t]=\unicode{x1D7D9}(\hat{o}_\mathcal{T}[t]>0);\quad u_\mathcal{T}[t]= \unicode{x1D7D9}(d(p_\mathcal{T}[t],\hat{p}_\mathcal{S}[t])>\delta) \tag{2} $

 

video frame \({t}\)에서의 loss값 \({\ell_{s s l}(\hat{p}_\mathcal{S}[t], \hat{o}_\mathcal{S}[t], \hat{u}_\mathcal{S}[t])}\) 는 TAPIR loss로부터 구할 수 있고, 이는 pseudo-label로써 ground truth로 사용하며 다음과 같이 정의된다.

 

$  \begin{array}{rl}{{\ell_{tapir}}(\hat{p}_\mathcal{S}[t],\hat{o}_\mathcal{S}[t],\hat{u}_\mathcal{S}[t])} & {=\operatorname{Huber}({\hat{p}}_\mathcal{S}[t],p_\mathcal{T}[t])(1-{o}_\mathcal{T}[t])} \\ {} & {\quad\operatorname{+BCE}({\hat{o}_\mathcal{S}[t], o_\mathcal{T}[t]})} \\ {} & {{\quad\operatorname{+BCE}({\hat{u}}_\mathcal{S}[t],u_\mathcal{T}[t])(1-{{o}}_\mathcal{T}[t])}} \end{array}  \tag{3} $

 

TAPIR의 loss는 여러 번 refinement iteration을 거치게 되고, teacher의 마지막 단계의 refine 된 예측값을 ground  truth로 사용하기 때문에 refine 되지 않은 데이터가 더 빠르게 수렴할 수 있게 돕는 역할을 할 수 있다.

 

만약 위의 식이 잘 정의되었다면 student와 teacher가 동일한 video query point를 입력받았을 때, loss 값은 아주 작아야 한다. 이러한 특성을 학습하게 하기 위해서 input video query에 대해서 affine tranformation과 같은 \({\Phi}\)를 pixel에 적용시켜서 낮은 resolution을 갖도록 사이즈를 줄이고, 예측을 더욱 어렵게 하기 위해 JPEG degradation을 적용한 이미지를 student에 전달하여 track을 연산하게 한다. 출력 값에 \({\Phi}^{-1}\)를 적용시켜 입력 좌표공간으로 되돌린 다음 teacher의 track과의 비교를 통해 loss를 계산한다.

 

 

또한 저자는 동일한 같은 track 위의 query points 짝에 대해서 teacher의 두 예측값이 같은 값을 출력하도록 하도록 frame별 loss 함수를 수정하는 두 가지의 계수를 추가했다. 첫 번째로, 먼저 \(Q_1 = (q_1, t_1)\)을 뽑았는데 \(q_{1}\)은 \({(x, y)}\)형식의 좌표이고 \({t_1}\)은 frame index이며 두 값은 랜덤하게 sampling한다. 그 후에 student의 query는 teacher의 trajectory 위에서 랜덤하게 뽑는다. (\({i.e.}\quad Q_2=(q_2,t_2)\in\{(p_\mathcal{T}[t],t);t \quad s.t. \quad o_\mathcal{T}[t]=0\}\))

 

하지만 teacher가 query point를 잘 추적(track) 하지 못하는 경우가 있을 수 있는데, 그럴 경우 student는 더더욱 추적을 잘하지 못할 것이다. 이러한 경우를 막기 위해서 저자는 cycle-consistency를 도입했다. valid 한 trajectory를 구분하는 mask를 계산해서 valid 하지 않은 경우는 loss 계산을 하지 않고 무시하는 방법인데, 이때 사용되는 mask는 다음과 같이 정의된다. ( \(\delta{cycle}\)은 거리 threshold이며, 저자는 4 pixel을 사용했다, 위 Fig. 2의 주황 원형 영역 참고 )

 

$ m_{c y c l e}= \unicode{x1D7D9} \left(d({\hat{p}}s[t_{1}],q_{1}\right)<\delta_{c y c l e})\quad*\quad \unicode{x1D7D9} \left(\delta s[t_{1}]\leq0\right) \tag{4} $

 

두 번째로, frame index \({t}\)의 위치에 따른 정확도 차이를 고려하는 proximity를 도입했다. 저자는 student의 query frame에 가까운 포인트들에 대해서는 teacher의 예측값보다 student의 예측값이 더 정확할 것이라고 생각했다. 이를 반영해서 정의한 mask는 다음과 같다. ( Fig. 2의 회색 사각 영역 참고 ) 

 

$ m^t_{proximity}= \unicode{x1D7D9}(|t-t_1| \leq |t-t_2|) \tag{5} $

 

위 \({(4)}\)와 \({(5)}\)를 통해 계산한 최종 loss는 아래와 같다.

 

$ \mathcal{L}_{S S L} = \sum\limits_{t}{m}_{\scriptscriptstyle{c y c l e}}^{t} \ast m_{p r o x i m i t y}^{t}\ast\ell_{\scriptscriptstyle{S S l}}^{t} \tag{6} $

 

 

 

 

 

 

 

+ Recent posts