✔️ 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 결과를 산출한다

✔️ Paper link : https://ieeexplore.ieee.org/document/10030312

 

Diffeomorphic Image Registration with Neural Velocity Field

Diffeomorphic image registration, offering smooth transformation and topology preservation, is required in many medical image analysis tasks. Traditional methods impose certain modeling constraints on the space of admissible transformations and use optimiz

ieeexplore.ieee.org

 

 


➡️ Preliminaries

  1. Deformable image registraion
    • 몇 가지 regularization constraints를 지키면서 moving image를 fixed image와 최대한 유사하도록 warping하는 방식
  2. Displacement field
    • Registration 과정에서 산출되는 displacement field는 moving image 위의 점들과 일치하는 fixed image 위의 점들 사이의 dense mapping을 정의함
  3. 일반적인 registration 표현식
    • \(\phi^*\) 는 displacement field \({\phi}\) 의 optimal 값이고, \({I}_f\) 와 \({I}_m\) 은 fixed와 moving 이미지를 뜻함
    • \({  \phi \circ I_m }\) 는 displacement field에 의해 warping 된 moving 이미지를 뜻함
    • \({ \mathcal{L}_{\text{sim}} }\) 는 이미지 사이의 유사도를 측정하는 것이고, \(\mathcal{L}_{\text{reg}}\) 는 smooth한 displacement 예측을 위한 regularization 임
    • \( \phi^* = \arg\min_{\phi} \mathcal{L}_{\text{sim}}(I_f, \phi \circ I_m) + \mathcal{L}_{\text{reg}}(\phi) \tag{1}  \)
  4. Diffeomorphic registration
    • diffeomorphic을 보장하는 registration은 단순히 두 이미지의 유사도가 최대가 하도록 하는 일치 뿐만 아니라 양방향의 변환이 가능하도록하는 성질도 함께 고려함으로써 topology를 유지할 수 있다는 특징이 있음
    • diffeomophic한 변형을 계산하기 위해서 velocity field \({v}\) 가 사용됨
      • \(\frac{\partial \phi^{(t)}}{\partial t} = v(\phi^{(t)}) \tag{2} \)
    • \( \phi^{(0)} = I \) 이고, 해당 논문에서는 velocity field \({v}\) 는 \({t} = [0, 1]\)에서 일정한 값을 갖는 SVF (stationary vector field)이며 최종 deformation은 \({\phi^{(1)}}\) 임

 


➡️ Method

  • \({I_f}\) 와 \({I_m}\) 은 각각 fixed image와 보정이 필요한 moving image임
  • 해당 논문에서 다루는 이미지들은 3D 차원 \({\Omega} \subset \mathcal{R}^3\) 에서 정의되고, 전처리 단계에서 이미 affine register를 마친 상태이므로 이후 모델을 통한 비선형적인 displacement 값만 계산하면 됨

 

DNVF 는 파라미터로 \({\theta}\)를 갖는 MLP를 활용해서 neural velocity field \({v}_\theta \)를 산출해내는 최적화 기반의 모델이다. 기존의 다른 registration 방법론들과 다르게, DNVF는 이미지의 intensity 대신에 3D 공간 좌표를 입력으로 받는다. 각 공간 위치점 \(\mathbf{p} \in \Omega \ \) 마다 \({v}_\theta\)를 통해 해당하는 위치의 velocity vector \({\mathbf{v} = v_\theta(\mathbf{p})}\) 를 얻을 수 있다. Diffeomorphic deformation \(\phi_\theta\)는 neural velocity field \({v}_\theta\) 를 걸친 적분을 통해 구해지는데, 이 과정은 이후에 자세히 설명한다. DNVF 에서는 Scaling and Squaring (SS) 를 사용해서 적분이 수행되는데 이 과정도 이후에 자세히 설명한다. 또한 아래와 같은 loss function 식을 최소화 함으로써 neural velocity field의 파라미터 \({\theta}\) 를 최적화하고 optimal한 \(\hat{\theta}\) 를 찾게된다.

 

$ \hat{\theta} = \arg\min_{\theta} \mathcal{L}_{\text{sim}}(I_f, \phi_{\theta} \circ I_m) + \mathcal{L}_{\text{reg}}(\phi_{\theta}) \tag{3} $

 

DNVF를 기반으로 저자는 cascaded framework Cas-DNVF를 추가로 제안했다. 이는 learning-based 방법론의 이점을 DNVF와 결합한 것이다. 첫 번째로 주어진 이미지 쌍에 대한 inital deformation을 얻을 수 있도록 하는 함수 \(g_{\beta} (I_f, I_m) \phi^{init} \) 를 모델링하기 위해서 fully convolutional neural network (FCN) 를 학습시켰다. 해당 network를 학습하기 위해서 아래와 같은 loss function을 사용했는데 이는 위의 loss function \((3)\)와 유사한 구조를 가진다.

 

$ \hat{\beta} = \arg\min_{\beta} \mathbb{E}_{(I_f,I_m)\sim\mathcal{D}}[\mathcal{L}_{\text{sim}}(I_f, g_{\beta}(I_f,I_m) \circ I_m) + \\ \mathcal{L}_{\text{reg}}(g_{\beta}(I_f,I_m))] \tag{4} $

 

위 식에서 \(\mathcal{D}\) 는 데이터셋의 분포이고 \({\beta}\) 는 FCN의 파라미터이다. 추론이 진행되는 동안 입력 이미지 쌍 \((I_f, I_m)\) 에 대해 사전에 학습된 (pretrained) \({g}_\beta\)를 통과 시켜서 \( \phi^{init} \) 를 예측하게 된다. 다음 단계에서는 DNVF를 통해서 residual deformation \(\phi^{res}_{\theta}\) 를 최적화 하게되고, 최종적으로 spatial transformer layer를 통해 \(\phi^{init}\) 와 \(\phi^{res}_{\theta}\) 를 합쳐서 전체적인 deformation을 계산하게 된다.

 

$ \hat{\theta} = \arg\min_{\theta} \mathcal{L}_{\text{sim}}(I_f, \phi_{\theta}^{\text{res}} \circ \phi^{\text{init}} \circ I_m) + \mathcal{L}_{\text{reg}}(\phi_{\theta}^{\text{res}} \circ \phi^{\text{init}}) \tag{5} $

 

저자가 실험을 진행해본 결과, 위와 같은 initial deforamtion 정보를 사용하는 것은 DNVF의 학습이 더 빨리 수렴할 수 있도록 돕는 역할을 한다고 주장한다.

 

✔️ Neural Velocity Field Representation

3D 공간 좌표에 대한 함수 \(\mathbf{v} = v_\theta (\mathbf{p}) \)는 일치하는 neural velocity vector \(\mathbf{v}\)를 출력한다. 의료 데이터는 복잡한 생물학적 구조를 가지는 특성이 있는데, 이러한 구조의 deformation을 정확하고 세밀하게 matching하기 위해서는 high-frequency function을 모델링할 수 있어야 한다. 하지만 전통적인 MLP는 "spectral bias"라는 한계점으로 인해서 low-frequency function에 치중해서 학습하는 경향이 있다. 따라서 본 논문에서는 전통적인 ReLU activation function 대신 periodic sinusoidal function을 사용해서 high-frequency function을 잘 학습할 수 있도록 했다.

 

$  \begin{align*} f_0(\mathbf{x}_0) &= \mathbf{W}_0\mathbf{x}_0 + \mathbf{b}_0 \mapsto \mathbf{x}_1 \\ \ f_i(\mathbf{x}_i) &= \mathbf{W}_i \sin(\mathbf{x}_i) + \mathbf{b}_i \mapsto \mathbf{x}_{i+1} \end{align*}  \tag{6} $

 

3차원 공간 좌표 \(\mathbf{p}\) 는 첫 layer \({f}_0 : \mathbb{R}^3 \mapsto \mathbb{R}^N\) 을 통해 고차원으로 임베딩된다. 그리고 \({i}^{th}\) 번째 layer \({f}_i\) 는 학습가능한 파라미터 \(\mathbf{W}_i\) 와 \(\mathbf{b}_i\) 를 통한 푸리에 주파수 매핑으로 해석할 수 있다. 이와 같이 네트워크에 주파수 정보를 포함시킴으로써 neural tangent kernel 로의 역할을 수행하게 되어 high-frequency 영역의 자세한 정보들을 통해 복잡한 deformation \(\phi_{\theta}\) 를 모델링하게 된다. 저자는 512의 hidden unit을 갖는 5개 층의 MLP를 사용했다고 한다.

 

✔️ Diffeomorphic Deformation as Integration

DNVF 내부에서 neural velocity field \({v}_\theta\) 를 정의하고난 다음 diffeomorphic deformation \(\phi_{\theta}\) 는 식 \((2)\) 에 따라 전체 velocity field를 적분하여 계산하게 된다. 이때 velocity field는 시간에 따라 변하지 않는 stationary한 성질을 띈다고 가정을하고 이로 인해서 아래에 설명하는 scaling and squaring 방식으로 효과적인 적분 연산을 수행할 수 있다.

 

◾ Scaling and Squaring

velocity field가 stationary 일 때, exponential map \( \phi^{(t)} = \text{exp}(v_\theta) \) 은 diffeomorphism을 만족하는 한 subgroup의 parameter로 정의된다. 최종 deformation \({\phi}^{(1)} = \text{exp}(v_\theta) \) 는 group action을 활용해서 더 효율적으로 도출할 수 있다. 구체적으로, initial deformation은 \({T}\) 가 전체 time step일 때 \( \phi^{(1/2^T)} = \mathbf{p} + v_{\theta}(\mathbf{p})/2^T \) 로 나타낼 수 있다. 그 이후에 회귀적으로 spatial tranformer layer를 통해서 \( \phi^{(1/2^{t-1})} = \phi^{(1/2^t)} \circ \phi^{(1/2^t)} \) 를 계산하고, 최종적인 deformation \( {\phi}^{(1)} \) 는 \( {\phi}^{(1)} = {\phi}^{(1/2)} \circ {\phi}^{(1/2)}  \) 와 같이 구할 수 있다. 이와 같은 회귀적인 계산 도중에는 별다른 파라미터가 학습되지 않는다. deformation은 fixed grid 위에서 linear interpolation을 통해 계산된다. 이러한 계산 방식을 통해 전체 step에 대한 미분가능성을 확보할 수 있으며, 논문의 저자는 총  7개의 step을 사용했다.

 

하지만, 모든 3D 좌표를 DNVF의 입력으로 사용하기는 GPU 메모리의 한계로 인해 불가능함으로, 논문의 저자는 원본 좌표 grid 를 1/3 크기로 downsample 하고, 결과 velocity field 가 전체 resolution에 대해 표현될 수 있도록 velocity integration을 통해 upsample 해줬다고 한다. (Figure 1)

 

✔️ Cascaded Registration

◾ Initial Deformation

Figure 1에서 소개하는 것과 같이, fully convolutional neural network (FCN), scaling and squaring layer, spatial transform layer 를 통해서 함수 \({g_\beta}(I_f, I_m) = \phi^{init} \) 을 파라미터화한다. FCN은 Unet 구조 (Figure 2) 를 기반으로 구성되어있으며, moving image와 fixed image를 합친 데이터를 입력으로 받아서 직접적으로 velocity field를 출력한다. 이후 FCN은  warping 된 moving image와 기존 fixed image 사이의 유사도(similarity)가 최대가 되는 방향으로 initial deformation \({\phi}^{init}\)을 예측할 수 있게 학습된다. 

 

◾Optimization of Residual Deformation

학습된 \({g_\theta}\) 를 통해 예측된 initial deformation 을 기반으로, DNVF 를 사용해서 이미지 쌍에 대한 residual deformation \({\phi}_{\theta}^{res}\) 를 최적화하게 된다. 최종 전체 deformation \({\phi}\) 는 \({\phi}^{init}\) 와 \({\phi}_{\theta}^{res}\) 가 spatial transformer layer를 통한 결합으로 계산된다. 일반적으로 예측된 \({\phi}^{init}\) 는 large deformation 에 대해서 양질의 mapping 을 수행할 수 있음으로, DNVF 구조는 학습기반의 구조에서 잘 표현하지 못하는 local small deformation 을 찾는데 집중한다. \({v}_\theta\) 에서 출력된 velocity field \(\mathbf{v}\) 는 warping된 moving image \({\phi}^{init} \circ I_m\) 와 fixed image \({I_f}\) 사이의 local small deformation을 설명한다. 논문의 저자느 두 deformation을 직접적으로 합치기보다는, 실험적으로 최적화 과정의 안정성 확보를 위해 DNVF의 velocity vector \(\mathbf{v}\) 를 0.1배로 재조정해서 사용했다고 한다.

 

✔️ Optimization

loss function \(\mathcal{L}\) 는 아래와 같이 크게 두 가지 항으로 구성되어있다. 

  • \(\mathcal{L}_{sim}\) : 유사도항
    • warping 된 moving image (\({I_w}\)) 와 fixed image (\({I}_f\)) 사이의 불일치도에 대해 패널티를 부여하는 항
    • 유사도에 대한 측정은 local normalized cross-correlation (NCC) 을 통해 진행
    • $ NCC(I_w, I_f) = \sum_{\mathbf{p}\in\Omega} \frac{\left(\sum_{\mathbf{p}_i} \left(I_w(\mathbf{p}_i) - \bar{I}_w(\mathbf{p})\right) \left(I_f(\mathbf{p}_i) - \bar{I}f(\mathbf{p})\right)\right)^2} {\sum{\mathbf{p}_i} \left(I_w(\mathbf{p}_i) - \bar{I}w(\mathbf{p})\right)^2 \sum{\mathbf{p}_i} \left(I_f(\mathbf{p}_i) - \bar{I}_f(\mathbf{p})\right)^2} \tag{7} $
    • \(\mathbf{p}_i\) 는 \(\mathbf{p}\) 근처에 위치한 \({n}^3\)의 크기를 갖는 local window 위의 점들을 뜻하고, \(\bar{I}_w (\mathbf{p})\) 와 \(\bar{I}_f (\mathbf{p})\) 는 local window 내의 이미지 intensity의 평균값
    •  NCC 값이 클 수록 두 이미지가 정밀하게 일치한다는 의미이기 때문에 유사도 loss 계산을 위해서 음의 NCC 값을 사용했으며, window size \({n}\) 으로는 9를 사용했다.
    • \(\mathcal{L}_{sim} = -\text{NCC}()\)
  • \(\mathcal{L}_{reg}\) : 정규화항
    • \(\mathcal{L}_{Jdet}\)
      • local orientation consistency를 보장하기 위해서, selective Jacobian determinant regularization 항을 사용
      • 주어진 좌표 \(\mathbf{p}\) 에서의 Jacobian determinant 가 양수라면 deformation field 는 \(\mathbf{p}\) 근처의 orientation을 잘 보존하는 것이고, 음수라면 orientation이 뒤집히고 topology가 무너진 것으로 해석
      • 음의 Jacobian determinant 과 ReLU를 함께 사용해서 local region에 대한 패널티를 부여
      • $ \mathcal{L}_{Jdet} = \frac{1}{N} \sum_{\mathbf{p}\in\Omega} relu(-|J_\phi(\mathbf{p})|) \tag{8} $
        • $ J_\phi(\mathbf{p}) = \begin{bmatrix} \frac{\partial\phi_x(\mathbf{p})}{\partial x} & \frac{\partial\phi_x(\mathbf{p})}{\partial y} & \frac{\partial\phi_x(\mathbf{p})}{\partial z} \\ \frac{\partial\phi_y(\mathbf{p})}{\partial x} & \frac{\partial\phi_y(\mathbf{p})}{\partial y} & \frac{\partial\phi_y(\mathbf{p})}{\partial z} \\ \frac{\partial\phi_z(\mathbf{p})}{\partial x} & \frac{\partial\phi_z(\mathbf{p})}{\partial y} & \frac{\partial\phi_z(\mathbf{p})}{\partial z} \end{bmatrix} \tag{9} $
    • \(\mathcal{L}_{smooth}\)
      • 이상하게 치우친 deformation이 예측되는 경우를 방지하기 위해서, spatial gradient 자체를 loss 의 항으로 추가함으로써 부드러운 deformation field를 예측할 수 있게 함
      • 큰 spatial gradient 는 특정한 local area에서 deformation field의 값이 급변한다는 의미이기 때문에 registration 문제에 적합하지 않음
      • $ \mathcal{L}_{smooth} = \sum_{\mathbf{p}\in\Omega} {\left\|  \nabla \phi(\mathbf{p})) \right\|}^2 \tag{10} $

 

최종 loss 는 위와 같은 항들을 결합하여 사용했는데, 추가로 \({\lambda}_1\) 와 \({\lambda}_2\) 를 각 항의 weight로 사용했다.

 

$ \mathcal{L} = \mathcal{L}_{sim}  + \mathcal{L}_{reg} = \mathcal{L}_{sim}  + {\lambda}_1 \mathcal{L}_{Jdet}  + {\lambda}_2 \mathcal{L}_{smooth} \tag{11} $

 

 

✔️ Project page : https://co-tracker.github.io/

 

CoTracker: It is Better to Track Together

We track points sampled on a regular grid starting from the initial video frame. The colors represent the object (magenta) and the background (cyan). For PIPs, many points are incorrectly tracked and end up being ’stuck’ on the front of the object or t

co-tracker.github.io

 

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

 

CoTracker - a Hugging Face Space by facebook

 

huggingface.co

 


➡️ Abstract

  • 본 논문의 저자는 transformer를 기반으로 해서 영상에 걸친 dense point들을 추적할 수 있는 CoTracker를 제안
  • 해당 방식은 다른 point tracking 방식에서 각 point들을 독립적으로 추적하는 것과는 달리 다른 point 추적을 동시에 고려하면서 진행함으로써 더 높은 정확도와 안정성을 확보한다고 주장

 


➡️ Introduction

지점 일치(point correspondences)를 잘 하도록 설계하는 task는 컴퓨터 비전 분야에서 기초적인 문제이면서도 이후의 downstream task 수행을 위해 필수적이다. 논문의 저자는 동적인 물체가 있고 움직이는 카메라가 촬영한 영상에서 지점 일치 문제를 풀고자 했다. 특히 주어진 한 개 이상의 3차원에서의 정사영에 해당하는 2차원 점이 주어졌을 때, 영상 내의 다른 frame 에서 해당하는 지점이 어디에 위치하는지 찾고자 하는 것이 목표였다.

 

이와 유사한 두 가지 문제가 존재한다. 첫 번째로 optical flow는 영상 frame 내의 각 지점의 속도를 예측하고자 했지만 짧은 frame 이내의 지점들에 대해서만 잘 예측하는 한계가 있었다. 두 번째로 tracking은 조금 더 긴 기간동안의 지점의 움직임을 예측하고자 했는데, 효율성을 위해 sparse한 몇 개의 지점에 대해서만 독립적으로 작업을 수행한다는 한계가 있었다. 

 

본 논문에서는 추적된 지점 사이의 상관관계를 고려할 수 있다면 성능이 크게 향상할 것으로 가정했다. 이러한 특성을 구현하기 위해서 transformer 구조를 차용했으며, 여러 지점의 tracking 과정을 동시에 고려할 수 있게 됨으로써 큰 성능 향상을 이뤄냈다. Self-attention을 통해서 각 track 사이의 정보들이 서로 고려할 수 있게 되었고 virtual track 이라는 기법을 통해 조금 더 효율적인 self-attention 연산을 수행할 수 있었다. 

 


➡️ Introduction

(중략)

 


➡️ CoTracker

 

✔️ 모델의 목표

  • 영상 \({V} = (I_t)^{T}_{t=1}\) 에 걸쳐서 2D point들을 track하는 것
    • 영상은 \({T}\) 개의 RGB frame 들로 구성되어 있음
    • \({I}_t \in \mathbb{R}^{3 \times H \times W}\)
  • 구체적으로 tracker는 \({N}\) 개의 point를 추적하고 예측함
    • \({P}_t^i = (x_t^i, y_t^i) \in \mathbb{R}^2\;,\;\;t=t^i,\ldots,T,\;\;i=1,\ldots,N\)
    • 이때 \({t}^i \in {1, \ldots, T} \) 는 track이 시작되는 시점
  • 또한 지점이 특정 frame에서 화면에 보이는지 여부도 visibility flag \({v}_t^i \in {0, 1}\)를 통해 예측함
    •  작업의 편의를 위해 영상의 첫 frame에서는 지점이 visible 하도록 설정함 ( \({v}_{t_i}^i = 1\) )

 

✔️  모델의 입 / 출력

  • 입력
    • 영상 : \({V}\)
    • \({N}\) 개의 track들에 대한 시작 위치와 시간 : \( ( {P}_{t^i}^i, t^i )^N_{i=1} \) 
  • 출력
    • track 위치와 visibility 예측 :  \( \hat{P}_t^i = (\hat{x}_t^i, \hat{y}_t^i ), \hat{v}_t^i \)

 

✔️  Transformer formulation

저자는 Transformer 네트워크 ( \({\Psi} : {G} \mapsto {O}\) )를 통해서 track의 최초 예측을 개선하고자 했음.

  • Track들은 입력 토큰 grid \({G}_t^i\)로 인코딩됨
    • \({i} = 1, \ldots, N \)는 각 track을 나타내고, \({t} = 1, \ldots, T\)는 시간을 나타냄
  • 업데이트된 track들은 출력 토큰 grid \({O}_t^i\)로 표현됨

 

◾ Image features

  • 각 영상 frame \({I_t}\)로 부터 convolutional 네트워크를 사용해서 dense \({d}\)-차원 appearance feature \({\phi}(I_t) \in \mathbb{R}^{d \times \frac{H}{k} \times \frac{W}{k}}\)를 추출함
    • 이때 효율성을 고려해서 \({k} = 4\) 를 사용해 resolution을 줄임
  • 저자는 추가로 몇몇 scale 된 버전을 실험했음
    • \( \phi_s(I_t) \in \mathbb{R}^{d \times \frac{H}{k2^{s-1}} \times \frac{W}{ k2^{s-1} } }\)
    • \({s} = 1,\ldots,S\) 로 변경하며 실험했고, 최종적으로 \({S} = 4\) 를 사용함
    • 이러한 downscale된 feature들은 base feature로 부터 average pooling을 통해 계산되었음

 

◾ Track features

  • track의 appearance는 feature vector \( {Q}_t^i \in \mathbb{R}^d \) 를 통해 iteration을 통해 지속적으로 연산됨
    • 시작지점의 image feature를 sampling 해서 초기화 되고 이후 네트워크를 통해 업데이트 됨

 

 

◾ Correlation features

  • 이미지에 맞는 track을 찾기 위해서 RAFT에서 사용한 correlation feature \({C}_t^i \in \mathbb{R}^s\)를 사용함
    • \({C}_t^i\) 는 track feature \({Q}_t^i\) 와 현재 track의 예측 위치 \(\hat{P}_t^i\) 근처의 image feature \(\phi(I_t)\) 를 내적해서 계산함
      • \({C}_t^i\) 는 내적 결과를 쌓아서 얻어짐
        • \( [C_t^i]_{s\delta} = < Q_t^i, \phi_s(I_t) [\hat{P}_t^i / ks + \delta] >, \)
        • 이때 \({s}=1, \ldots, S\)는 feature scale 이고 offset은 \({\delta} \in \mathbb(Z)^2, ||\delta||_{\infty} \leq \Delta  \)
    • image feature \({\phi}_s (I_t)\)는 bilinear interpolation과  border padding을 통해 정수가 아닌 위치로 sampling 되었음
      • \({C}_t^i\)의 차원은 \((2\Delta + 1)^2S = 196\) ( \({S} = 4\), \({\Delta} = 3\) 을 사용 )

 

◾ Tokens

  • Position, visibility, appearance와 track들의 correlation에 대한 입력 토큰 \({G}(\hat{P}, \hat{v}, Q)\)는 다음과 같은 feature들의 합으로 계산됨
    • \({G_t^i=\left(\hat{P}_t^i-\hat{P}_1^i, \hat{v}_t^i, Q_t^i, C_t^i, \eta\left(\hat{P}_t^i-\hat{P}_1^i\right)\right)+\eta^{\prime}\left(\hat{P}_1^i\right)+\eta^{\prime}(t) \tag{1}}\)
  • \({\eta}\)는 시작 지점 \({t}=1\)에 비해 예측된 위치가 얼만큼 떨어져있는지를 계산하기 위한 sinusoidal positional encoding이고 \({\eta}^{\prime}\)은 시작위치와 현 시점 \({t}\)에 대한 자체 positional encoding 을 계산하기 위해 사용됨
    • 이 정보는 예측 위치 \({P}\)에 내포되긴하지만, 위와 같이 직접 계산해서 추가해주는 방식이 더 좋은 성능을 냈다고 주장함
  • 최종 출력 토큰은 \(O(\Delta\hat{P}, \Delta Q)\) 이며, 각각 position 과 appearance 값에 대해 다음 iteration에서 업데이트 해줄 값임

 

◾ Iterated transformer applications

  • Transformer 구조를 \({M}\)번 적용하면서 track에 대한 예측을 점진적으로 개선함
    • \({m}=0,1,\ldots,M\) 을 예측 단계의 index라고 할 때, \({m}=0\)은 최초 initialization을 의미함
    • 각 iteration 마다 update가 진행됨
      • iteration의 출력 토큰 : \({O}( \Delta \hat{P}, \Delta Q ) = \Psi (G(\hat{P}^{(m)}, \hat{v}^{(0)}, Q^{(m)} )) \)
      • update 진행 : \(\hat{P}^{(m+1)} = \hat{P}^{(m)} + \Delta \hat{P} \) 과 \({ {Q}^{(m+1)} = {Q}^{(m)} + \Delta \hat{Q}  }\)
    • 단, visibility mask \(\hat{v}\) 는 transformer를 통해 매번 업데이트되지 않고, \({M}\) 번의 iteration 이후 마지막에 한번 업데이트됨
      • \(\hat{v}^{(M)} = \sigma( WQ^{(M)} )\)
      • \({\sigma}\) 는 sigmoid 활성화 함수이고 \({W}\) 는 학습된 가중치 행렬
    • \({m} = 0\) 일 때, \(\hat{P}^{(0)}\), \({v} ^{(0)} \), \({Q} ^{(0)} \) 는 각각 모든 시간 \({t}=1, \ldots, T\) 에 대해서 \({P}^i_{t^i}\), 1, \(\phi{(I_{t^i})[P^i_{t^i}/k]}\) 로 설정함

 

✔️  Transformer architecture and vitual tracks

  • Transformer \(\Psi\) 는 attention 연산을 time과 track 차원에 각각 수행함
    • 이 연산을 통해 효과적으로 연산할 수 있게 되어 시간 복잡도도 줄일 수 있다 
      • (\ (O({N^2T^2}\) 에서 \(O({N^2 + T^2})\)
    • 하지만 여전히 큰 \({N}\)의 경우 계산량이 커서 사용하기 힘듦
  • 저자는 이러한 문제를 극복할 수 있는 \({K} \;\; virtual tracks tokens\) 방식을 제안함 ( \( K {\ll} N \) )
    •  고정되고 학습 가능한 초기화를 사용하여 입력 그리드에 추가 토큰으로 추가되고 출력에서 제거

 

✔️  Windowed inference

  • Iterative 한 업데이트 방식 tracking의 주요 장점은 길이가 긴 영상에 대해서 sliding window 방식을 적용하기 쉽다는 점임
    • 최대 window 크기 \({T}\)보다 더 긴 길이 \({T}^{\prime}\) 를 갖는 영상 \({V}\) 를 가정
    • 영상 전체를 따라 track을 하기 위해서, 영상을 \({T}\) 길이를 가지며 \({T/2}\) frame이 겹치는 \({J} = \lceil 2T^{\prime}/T-1 \rceil \) 개의 window로 나눔
  • \({(m, j)}\) 는 \({m}\) 번째 transformer의 \({j}\) 번째 window 값이라고 가정
    • 즉, \({M \times J}\) 크기를 가지며 \( ( \hat{P}^{(m,j)}, \hat{v} ^{(m,j)}, Q ^{(m,j)} ) \) 값을 갖는 grid가 transformer iteration과 window를 따라 존재함
    • \({m}=0, \; j=1\) 은 초기화값을 사용하고 이후 transformer를 통해 \({M}\) 번의 업데이트를 진행
      • 이후에 \({m}=M, \; j=1\) 의 값을 통해 \(j=2\) 의 업데이트를 동일한 과정으로 진행
      • 마찬가지로 마지막 window에 도달할 때까지 반복적으로 수행함

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}\)

 

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

 

PIPsUS: Self-Supervised Dense Point Tracking in Ultrasound

Finding point-level correspondences is a fundamental problem in ultrasound (US), since it can enable US landmark tracking for intraoperative image guidance in different surgeries, including head and neck. Most existing US tracking methods, e.g., those base

arxiv.org

 

 


➡️ Abstract & Introduction

  • 머리와 목과 같은 부위의 수술을 진행할 때, 초음파 영상의 특정 지점 (landmark)를 추적하는 것은 중요한 과제로 부상했으나 optical flow나 feature matching과 같은 기존의 방법론은 아래와 같은 단점이 있음
    1. RGB 영상을 기반으로 설계되어서 초음파 영상에 적용할 때는 성능의 한계가 있음
    2. 초음파 영상에서 supervised learning을 위한 ground truth을 얻기 위해서 다소 큰 비용이 필요함
  •  저자는 위 단점을 극복할 수 있도록 Particle video 에 기반한 새로운 방법론(PIPsUS)을 제안함
    • 여러 개의 임의의 지점을 tracking 할 수 있음
    • 단순히 연속한 frame 사이의 정보 뿐만 아니라 장기간의 여러 frame의 정보를 활용함
    • RGB 영상을 통해 학습된 teacher를 통해 self-supervised하게 초음파영상에서도 tracking 할 수 있도록 학습하는 구조
  • 목과 구강에 대한 초음파 영상을 통해 성능 평가를 진행함
  • 저자가 생각하는 Contribution은 다음과 같음
    1. 초음파 영상에 걸친 모든 시간에 대해 어떠한 point도 tracking할 수 있는 새로운 particle video 모델
    2. self-supervised teacher-student 방식을 활용한 lag-free 모델

 


➡️ Related Work

( 중략 )

 


➡️ Methods

 

제시하는 Persistent Independent Particles in US (PIPsUS) 모델은 PIPs의 개선된 모델인 PIPs++로부터 영감을 받음

 

✔️ 기존의 PIPs++

  • 영상 내의 particle의 움직임에 따른 pixel motion이 모델링 됨
  • optical flow 처럼 연속한 frame들 뿐만 아니라 영상 전체에 걸쳐 모든 pixel을 추적할 수 있음
  • 기존 PIP는 오직 8 frame의 chunk에 대해서 수행 가능했으나, PIPs++는 영상의 길이와 무관하게 수행 가능함
  • 점을 추적하기 위해서 전체 영상을 검사해야함으로, 많은 메모리와 계산량이 요구되어 실시간성을 확보하기 힘듦

 

✔️ PIPsUS

 

모델 구조 설명

  • Feature encoder를 통해 초음파 영상으로부터 feature map을 만들어 냄
    • PIPs와 마찬가지로 pretrain된 ResNet 기반의 encoder 사용 
  • 추적된 점들의 feature들은 이전 frame으로 부터 bilinear sampling
    • \({F}_i=bilinearsampling(I_i, \textbf{p}_i = (x_i, y_i) )\), where \(i \in \{0, t-4, t-2\}\)
    • 이전의 여러 frame으로 부터 sampling 함으로써, 모델이 메모리나 계산량은 동일하게 유지하면서도 추적하는 점에 대한 최초의 상태와 최근의 상태를 모두 고려해서 학습할 수 있게 함
  • 동일한 encoder가 새로운 이미지 \({I}_t\)에도 사용되어 dense feature map을 만들어 냄
    • 새로운 점 위치 \(\textbf{p}_t=(x_t, y_t)\)는 RAFT와 PIPs++에서 사용된 것 처럼 iterative한 업데이트 과정을 통해 산출됨
    • iteration의 초기화를 위해서 최초의 motion은 0으로 간주하고, 점 위치 \(\textbf{p}^0_t = (x ^0_t, y ^0_t )\)는 \(\textbf{p}_{t-1}\)로 설정함
  • 매 iteration \({k}\) 마다, \({R}\times{R}\) 크기의 patch를 현재 frame의 feature map위의 \(\textbf{p}_t^k\)에 적용해서 \(P^0, P^1 , \ldots , P^L \)을 뽑아냄 (\({L}\)은 pyramid 구조의 서로 다른 resolution layer) 
    • 즉, Feature \({F}_i\)와 각 resolution마다 동일한 크기 \({R}\)을 갖는 patch 사이에 correlation map들을 계산하게 됨
    • 모든 correlation map들을 합쳐서 \(L \times R^2\)의 크기를 갖는 vector가 만들어 짐
    • point motion이 어느정도 일관된 값을 가질 수 있게 하기 위해서, 최근의 motion flow 인 \(\textbf{p}_t^k - \textbf{p}_{t-1}, \textbf{p}_t^k - \textbf{p}_{t-2}, \textbf{p}_t^k - \textbf{p}_{t-3} \) 을 합치고 순서 정보를 살리기 위한 sinusoidal position embedding을 씌운 정보를 추가로 함께 사용
      • 해당 정보를 계산하기 위해 영상의 시작 부분 앞은 \({I}_0\)와 \(\textbf{p}_0\)로 padding 함
  •  앞서 계산한 recent motion 정보와 correlation vector를 합치고나서 1D-ResnetLinear layer을 통과하게 함으로써, 위치 수정 값인 \(\Delta{p}_t^k\)를 예측함
    • 따라서, 다음 iteration \({k+1}\)에서의 위치는 \({p_t^{k+1}} = p_t^k + \Delta{p_t^k}\)로 수정됨

 

Self-supervised Teacher-Student Training

모델을 ground truth에 의존하지 않고 학습시키기 위해서, 서로 다른 2가지 pseudo-ground truth를 사용함

  1. PIPs++ teacher labels
    • PIPs++ 점 위치 예측 결과를 하나의 ground truth로 사용함
    • PIPs++ 의 잘못된 예측 결과가 outlier로 작용하는 현상을 방지하기 위해 Huber loss를 사용함
    • \({L}_t = \mu_t \sum_{k=0}^K w_k HuberLoss (\textbf{p}_t^{gt}, \textbf{p}_t^k)  \;\;\;\;\;\;\;\;\;\; (1) \)
      • Iterative한 Update 과정의 특성을 녹여내기 위해, \({w}_k\)는 iteration이 진행되면서 점차 커짐 (\({w}_k=\lambda_{Iter}^{K-k-1}\))
      • Drifting 방지를 위해, \({\mu}_k\)는 time이 진행되면서 점차 커짐 (\({\mu}_t=\lambda_{Time}^{T-t-1}\))
  2. Simulation labels
    • motion에 대한 정답을 알고 있는 초음파 영상을 translation, intensity modulation, noise addition 등을 통해 무작위로 변화시켜서 augmetation을 진행함
    • 사용한 loss function은 위 \({(1)}\)과 동일하게 사용하지만, 정답을 알고 있는 데이터이므로 drift나 outlier는 없는 것으로 간주하고 \(\lambda_{Time}=1\) 과 L1 loss를 사용함 

우선 모델의 warm up을 위해서 Simulation label을 사용함. 이후에 모델은 PIPs++ label과 50%의 Simulation label을 사용해서 train되었고, PIPs++ label에 대해서 validation 되었다.

 

Paper link: https://link.springer.com/chapter/10.1007/978-3-030-59713-9_60

 


➡️ Abstract

심장 초음파 검사(echocardiography) 에서 정확하고 균일한 시간간격(temporal-consistent) 을 갖는 segmentation을 수행하는 것은 심혈관 질환을 진단하는데 매우 중요하다. 기존 방법론은 균일한 시간간격으로 segmentation 하는 것을 무시하는 경향이 있는데, 이는 ejection fraction(EF) 을 진단하는데 불리하게 작용된다. 

 

본 논문에서는 end diastole과 end systole 이 표기(labeled)되어있는 심장 초음파 영상(ultrasonic cardiac sequence)에서 균일한 시간간격으로 segmentation과 tracking을 동시에 학습하는 방법론을 두가지 전략으로 나눠 소개한다. 첫 번째로 segmentation과 tracking 이 서로 도움을 줄 수 있도록 하고, 심장 shape과 motion field에 대해 적합한 추정을 할 수 있게 하는 appearance-level co-learning (CLA)를 설계했다. 두 번째로는 label된 frame을 통해 구한 pseudo label을 이용해서 segmentation 을 개선하고 전체 영상을 따라 shape tracking 을 함으로써 균일한 시간간격 추정을 강화하는 shape-level co-learning (CSA)를 설계했다.

 

본 논문에서 제시하는 CLAS 방법론이 기존의 segmentation 및 EF 추정 방법론보다 뛰어난 성능을 확보했음을 공공 심장초음파 데이터셋 CAMUS 실험결과를 통해 보인다.

 


➡️ Abbreviations

  • CVS : CardioVascular Disease
  • EF : Ejection Fraction
  • ED : End Diastole
  • ES : End Systole

 


➡️ Introduction

임상 실습에서, 심장 초음파 검사는 실시간으로 검사할 수 있고 방사능이 사용되지 않으며 적은 검사 비용이 들기 때문에 심장 기능 검사와 심혈관 질환(CVS)을 진단하는데 자주 사용된다. 하지만 이 방법은 큰 잡음(noise)과 낮은 명암비(contrast)로 인해서 육안 검사(visual inspection)가 힘든 경우도 있다. 주요한 구조에 대해서 수동으로 표기하는 방식은 시간이 많이 들고 관측자-간에 혹은 관측자-내에(intra-/inter-observer) 따른 변동성이 크다. EF를 예로들면, 관측자-간과 관측자-내 일치 여부에 대한 상관계수는 각각 0.801, 0.896 밖에 되지 않는다. 이러한 결과를 통해 심장 초음파 영상으로부터 높은 정확도를 갖는 segmentation 과 정확한 값을 예측하는 EF 를 자동으로 수행해주는 방법론의 필요성이 대두된다.

 

이전의 SOTA 방법론은 영상의 각 frame 들을 독립적으로 분석하고, 심실(ventricle) 경계 segmetation에 대한 관측자 사이의 합의를 통해 준수한 성능을 확보했다. 하지만 좌심실 segmentation을 잘 수행하는 것이 필연적으로 정확한 EF 추정으로 연결되지는 않았다. 오히려 정확한 EF 추정을 위한 필요한 것은 오직 ED 와 ES frame이 주어졌을 때, 모든 frame에 대해 균일한 시간간격을 갖는 segmentation을 수행하는 것이었다.

 

심장 이미지 segmentation을 위해서 시간 정보를 활용하는 것의 장점은 이전 연구들에서 수차례 입증되었다. RNN 기반의 모델들이 시공간의 특성을 반영하기 위해 다수 사용되었고, 연속된 frame 들 사이의 상대적인 motion vector를 구하기 위해 optical flow 방법론이 사용되기도 했다. 하지만 긴 시간 간격을 갖는 심장 초음파 frame들 사이에서 해당 방법론을 적용하게 되면 motion 추정은 큰 error를 갖게된다. 따라서 해당 논문에서는 조밀하게 label 되어 있는 데이터를 요구하지 않으면서 연속한 frame에 대해 균일한 시간 간격을 가질 수 있는 방법론을 제시한다. 즉, Co-Learning of segmentation and tracking on Appearance and Shape level (CLAS)는 조밀하지 않게 (sparsely) label 된 심장 초음파 영상을 입력으로 받아서 두 가지 co-learning 전략을 통해 시공간 정보를 활용할 수 있고, 그 결과 segmentation 정확도를 향상시키고 균일한 시간간격을 강화할 수 있는 방법론이다.

 

 

저자가 주장하는 3가지 Contribution은 아래와 같다.

  1. Appearance-level co-learning (CLA) 전략을 통해, label 되거나 되지 않은 전체 frame에 대해서 적합한 shape과 motion field를 학습할 수 있다. 
  2. Shape-level co-learning (CLS) 전략을 통해, segmentation 결과에 대해 균일한 시간 간격을 갖게 할 수 있다. 특히 심장 shape에 대한 bi-direction tracking을 통해 appearance를 통해 학습된 이전 motion field를 개선할 수 있다. 이후 segmentation도 앞서 개선된 motion field를 바탕으로 생성된 pseudo label을 통해 추가로 개선할 수 있다. 이렇게 두 작업은 서로 상보적이며 균일한 시간 간격을 갖는데 도움을 준다.
  3. 조밀하지 않게 label된 심장 초음파 검사 데이터셋을 통해 성능 평가를 진행했고, endocardium과 epicardium을 segmentation하는 부분에서 작업자 간의 변동성에서 SOTA를 달성했다

 


➡️ Method

 

Fig. 1 은 CLAS에 대한 전체적인 구조를 설명하고 있다. Feature learning을 위해 3D UNet을 사용하고 있고, 이후 co-learning을 위해 두 가지로 분기되어 segmetation과 tracking을 수행한다. CLA를 위해서 ED/ES frame들에 대한 supervised segmentation을 하고 그 중간 frame들에 대해서는 unsupervised tracking이 진행된다. CLS를 위해서는 label된 ED/ES frame들을 bi-directional tracking을 통해 변형해서 만든 pseudo label을 사용해 segmentation을 개선한다. 

 

✔️ Co-learning Network architecture

co-learning 구조는 cardiac appearance로 부터 feature learning을 수행하는 CLA와 shape 에 대한 ground truth을 통해 segmetation 과 tracking 을 예측하는 CLS, 두 task를 수행하는 동안에 서로 상호적으로 도움을 줄 수 있게 설계 되었다. 

 

주어진 2D 심장 초음파 영상를 \(\mathbf{x} = \{ {x_t} \}_{t=1,2, \ldots , T}\) 라 하고, \({y}_1 , {y}_T\) 는 ED(\({t}=1\)) 와 ES(\({t}=T\)) 라고 할 때, 구조의 목적은 전체 영상에 대해 정확하면서 균일한 시간 간격을 갖는 segmentation mask를 얻는 것이다. 전체적인 네트워크는 아래와 같이 총 3가지 파트로 구성된다.

 

  1. Basic 3D Unet, \({G}\) as a backbone for feature extraction
  2. Segmetation head, \({S}\) that outputs the predicted mask \(\hat{y}\) of the background, Endo, Myo, LA
  3. Tracking head, \(\mathcal{T}\) that outputs bi-directional motion fields \( [ \overrightarrow{\phi}_t, \overleftarrow{\phi}_t ](t=1, \ldots, T-1) \), which can be utilized to deform images or labels to adjacent frames using spatial tranformation

 

✔️ Appearance-level co-learning

저자는 appearance-level segmentation은 supervise하게 수행하고 appearance-level object tracking은 unsupervised하게 optimize하는 것을 목표로 CLA를 설계했다. 

  • Supervised  Segmentation
    • 심장 appearanace 이미지로부터 \({G}\) 를 통해 강건하게 shape 정보를 학습
      • ED와 ES frame을 학습해서 \({G}\) 가 마치 noise를 제거하는 filter처럼 작동하도록 shape 정보를 인코딩하도록 학습함
      • 이후 tracking 단계에서 noisy한 심장 초음파 영상의 noise를 제거해주는 역할
    • segmentation objective \(\mathcal{L}_{SGA}\) 를 최적화하면서 심장 구조에 대한 shape mask를 출력
  • Unsupervised Tracking
    • \({G}\) 를 통해 얻은 shape 정보로 부터 인접 frame들에 대해서 Bi-directional 하게 motion field를 학습
      • label이 달려있지 않은 ED와 ES 사이의 frame을 포함한 전체 영상에 대해서 학습 수행
      • \({G}\) 가 더 많은 training image를 학습할 수 있게 돕는 역할
    • tracking object \(\mathcal{L}_{OTA}\) 를 최적화 하면서 motion field를 출력

 

Supervised appearance-level segmentation loss \(\mathbf{L}_{SGA}\) 는 cross-entropy(CE) loss와 multi-class Dice loss가 합쳐진 형태로 아래와 같다.

 

$ \mathcal{L}_{S G A}=\frac{1}{2\left| \Omega \right|}\sum_{t\in\left\{1,T\right\}}\sum_{c=1}^{C}\left(-\,y^{c,t}\cdot\log\hat{y}^{c,t}+\frac{1}{\left|C\right|}(1-\frac{\left|y^{c,t}\cdot\hat{y}^{c,t}\right|}{\left|y^{c,t}\right|+\left|\hat{y}^{c,t}\right|})\right) \tag{1} $

 

이때, \( {c} \in \{ background, Endo, Myo, LA \} \) 이고 \({y}\) 와 \(\hat{y}\) 는 각각 ground truth 확률과 예측값의 확률이다.

 

Unsupervised appearance-level object tracking loss  \(\mathcal{L}_{OTA}\) 는 local cross-correlation(CC)과 smooth loss \(\mathcal{L}_{sm}\) 가 합쳐진 형태로 아래와 같다.

 

$ \begin{array}{r}{{\displaystyle \mathcal{L}_{O T A}=\frac{-1}{2(T-1)}\sum_{t=1}^{T-1}\left(C C(x_{t+1},x_{t}\circ\stackrel{\rightarrow}{\phi}_{t})+C C(x_{t},x_{t+1}\circ\stackrel{\leftarrow}{\phi}_{t})\right)+}}\\ {{\frac{\gamma}{2(T-1)}\sum_{t=1}^{T-1}\left(\mathcal{L}_{s m}(\stackrel{\rightarrow}{\phi}_{t})+\mathcal{L}_{s m}(\stackrel{\leftarrow}{\phi}_{t})\right)}}\end{array} \tag{2} $

 

\({\circ}\) 는 spatial transformation을 뜻하며, \({\gamma}\) 는 smooth 항에 대한 regulation parameter이다. \(\mathcal{L}_{OTA}\) 를 최소화하는 과정은 전체 심장 초음파 영상에 걸쳐 tracking을 잘 할 수 있게 한다. 

 

위와 같은 두 과정을 수행하더라도 여전히 균일한 시간 간격을 가질 수 있도록 하는 부분은 없는데, 다음으로 소개하는 shape-level co-learning에서 해당 내용을 다룬다.

 

✔️ Shape-level co-learning

저자는 균일한 시간 간격을 가질 수 있도록 이전에 계산했던 shape masks와 motion field를 사용하는 CLS를 설계했는데, 이는 아래 두 가지를 포함한다.

  1. ED/ES의 true masks의 변형을 통해 중간의 frame들에 대한 pseudo label을 만들고, 이를 이용한 unsupervised segmentation 진행
  2. ED와 ES 사이의 shape에 대한 semi-supervised bi-directional tracking 진행

 

심장 shape에 대한 shape-level tracking은 noise와 background가 사라진 상태에서 진행되는 것이고, 따라서 CLA에서 학습한 motion field를 개선할 수 있다. 개선된 motion field는 ED와 ES 사이의 label이 없는 frame에 대해서 더 질 좋은 pseudo label을 만듦으로써 segmentation 성능을 개선할 수 있다. 개선된 segmentation은 shape 임베딩 \({G}\)를 개선함으로써 shape-level tracking의 성능을 또 개선할 수 있게 된다. 결과적으로 이러한 segmentation과 tracking 과정이 서로 긍정적으로 상호작용하게 됨으로써 최종 예측된 segmentation mask가 균일한 시간 간격을 가질 수 있게 된다. 

 

우선 sequential한 motion field값을 이용해서 ED label \({y}^{c,1}\)을 변형한 pseudo label \(\overrightarrow{y}^{c,t}, (t=2, \ldots, T)\) 을 생성하는데 이는 다음과 같이 표현할 수 있다 : \(\overrightarrow{y}^{c,t} = [[y^{c,1} \circ \overrightarrow{\phi}_1] \circ \overrightarrow{\phi}_2] \circ \ldots \circ \overrightarrow{\phi}_{t-1} \). 마찬가지로 \(\overleftarrow{\phi}^{c,t}, (t=2,\ldots,T-1)\) 도 ES label \( {y}^{c,t}, (t=2, \ldots, T) \) 로 부터 생성할 수 있다. 이렇게 생성한 pseudo label을 통해 기존에 label이 없었던 ED와 ES 사이의 frame들의 정보를 모두 네트워크에 학습시킬 수 있음으로써 shape-level segmentation는 segmetation을 개선할 수 있게 돕는다( \( (t=2, \ldots, T-1) \) )

 

$ {\mathcal{L}}_{S G S}={\frac{1}{2(T-2)|C||\Omega|}}\sum_{t=2}^{T-1}\sum_{c=1}^{C}(2-{\frac{|{\overrightarrow{y}}^{c,t}\cdot{\hat{y}}^{c,t}|}{|{\overrightarrow{{y}}}^{c,t}|+|{\hat{y}}^{c,t}|}}-{\frac{|{\overleftarrow{y}}^{c,t}\cdot{\hat{y}}^{c,t}|}{|{\overleftarrow{{y}}}^{c,t}|+|{\hat{y}}^{c,t}|}}) \tag{3} $

 

shape-level tracking은 ED/ES label을 pseudo label \(\overleftarrow{y}_1\), \(\overrightarrow{y}_T\)으로 매칭함으로써 학습된 motion field를 개선할 수 있다

 

$ {\mathcal{L}}_{OTS}={\frac{1}{2|C||\Omega|}}\sum_{c=1}^{C}(2-{\frac{|{\overrightarrow{y}}^{c,T}\cdot{{y}}^{c,T}|}{|{\overrightarrow{{y}}}^{c,T}|+|{{y}}^{c,T}|}}-{\frac{|{\overleftarrow{y}}^{c,1}\cdot{{y}}^{c,1}|}{|{\overleftarrow{{y}}}^{c,1}|+|{{y}}^{c,1}|}}) \tag{4} $

 

✔️ Overall objective

네트워크는 총 2개의 stage로 나뉘어 최적화된다. Stage 1에서는 CLA가 아래와 같이 사용된다.

 

$ \mathcal{L}_{stage1} = \mathcal{L}_{SGA} + \mathcal{L}_{OTA}  \tag{5} $

 

\(\mathcal{L}_{stage1}\) 을 최소화하게 되면 적합한 segmentation mask와 전체 영상에 대한 motion field를 구할 수 있게 되어 CLS를 warm start 할 수 있는 배경이 된다. 그리고서 진행되는 Stage 2에서는 CLA와 CLS가 아래와 같이 사용된다. (이때 \({\alpha}\) 와 \({\beta}\)는 trade-off 파라미터이다.)

 

$ \mathcal{L}_{stage1} = \mathcal{L}_{SGA} + \mathcal{L}_{OTA} + \alpha \mathcal{L}_{SGS} + \beta \mathcal{L}_{OTS} \tag{6} $

 

Paper link : https://particle-video-revisited.github.io/

 

Particle Video Revisited: Tracking Through Occlusions Using Point Trajectories

Particle Video Revisited: Tracking Through Occlusions Using Point Trajectories ECCV 2022 (Oral) --> --> --> --> Sorry, your browser doesn't support embedded videos. --> --> --> --> --> Sorry, your browser doesn't support embedded videos. Sorry, your browse

particle-video-revisited.github.io

 


➡️ Abstract

기존 optical flow의 단점인 장기간의 motion 추정이 불가능하다는 점을 "particle video" 방법론을 응용해서 해결한 새로운 object tracking 방법론 제시

 


➡️ Introduction

2006년에 Sand와 Teller가 제안한 "particle video"는 장기간의 여러 frame 사이에서 영상 내 특정 particle의 motion을 추정하는 featuer matching과 optical flow의 중간다리와 같은 방법론이었다. 해당 논문 이후로 feature tracking과 optical flow 분야는 비약적인 발전을 했지만, 대부분은 몇개의 frame 쌍 사이에서의 추정을 하고 장기간 데이터에 대해서는 거의 연구가 이뤄지지 않았고 가려진 물체에 대해서는 잘 추정하지 못하는 단점이 있었다. 본 논문의 저자가 제안하는 Persistent Independetn Particles(PIPs)는 가려진 물체(occlusions)와 여러 frame (multi-frame)에 대해 잘 추정할 수 있다. 또한 첫 번째 frame에서 지정하는 query point의 개수나 위치도 자유롭게 설정할 수 있다. 

 


➡️ Persistent Independent Particles (PIPs)

PIPs 모델의 입/출력구조에 대한 간단한 설명은 아래와 같다

  • 입력
    1. \({T}\)개의 frame을 갖는 RGB 영상 데이터
    2. 첫 번째 frame에서 track을 진행하고자 하는 query point 좌표 \((x_1, y_1)\)
      • 입력되는 query point의 개수 \({N}\)는 여러 개가 될 수 있으며, 이 경우 병렬적으로 계산될 수 있음 
  • 출력
    • 모든 frame에 대해서 각각 
      1. tracking된 point 좌표 \((x_t, y_t)\)
      2. 가려짐 여부 occlusion \({v}_t \in [0, 1]\)
  • 구조
    • 총 4개의 stage로 구성 ( optical flow 방법론인 RAFT의 구조와 유사 )
      1. Feature extraction
      2. Feature and tracking point initialization
      3. Local similarity measuring
      4. Positions and features updating

 

 

 

✔️ Extracting Features

입력 영상 데이터의 모든 frame에 대한 feature 추출을 진행한다. 이때 각 frame은 독립적으로 CNN를 통과하게 되며 feature로 변환되고, 해상도는 1/8 크기로 줄어들게 된다.

 

+ 구현에 대한 Details와 구현 코드를 찾아보면, 여기서 말한 CNN(2D Conv)은 RAFT에서 feature 추출에 사용한 "BasicEncoder"와 동일한 구조를 사용한다.

 

✔️ Initializing Each Target

영상 데이터의 각 frame 마다 feature를 뽑고 나서, tracking을 할 target point에 대한 feature vector를 추가로 계산한다. 이때 첫 번째 feature map에서 bilinear하게 samping해서 채널 수 \({C}\) 를 갖는 feature vector \({f}_1\) 을 구하게 된다. 이후에 있을 iterative한 update에 앞서서, \({f}_1\) 을 모든 시간에 대해 단순히 복사해 쌓은 행렬 \( \mathbf {F}^0\) 는 \({T} \times {C}\) 의 shape을 갖게 된다. 비슷한 방식으로 update를 반복하면서 예측될 position들에 대한 행렬 \( \mathbf {X}^0\) 도 최초에 설정한 track point를 모든 시간에 대해 복사해 쌓아서 만들어지고 \({T} \times 2\)의 shape을 갖는다. 이후의 update 횟수를 \({k}\)라고 했을 때, 위 두 행렬은 각각 \( \mathbf {X}^k\) 와 \( \mathbf {F}^k\) 로 표현된다.

 

✔️ Measuring Local Appearance Similarity

Iterative한 update 과정 도중에 현재 iteration에서 갖는 trajectory에 대한 feature나 position을 Initialization 때 계산한 feature map과의 비교를 통해 visual similarity를 구한다. 즉, \( \mathbf {F}^k\) 와 feature map를 시간 축에 대해서 내적함으로써 correlation을 계산하는 것이다. 이후에는 \((x_t, y_t)\) 에 대응되는 \({f}_k\) 위의 좌표 주변부에 대해서 crop을 함으로써 "local" score를 얻게된다. 

 

위 과정을 통해서 정규화 되지 않은 유사도를 얻을 수 있고, 높은 값을 가질 수록 target의 feature와 convolutional한 feature이 서로 유사함을 의미한다. 이 유사도는 시간에 따라서 계산되어 \({T} \times {P \cdot P}\) 의 shape을 가지게 되는데, 이때 \({P}\) 는 local한 영역을 얼만큼의 크기로 볼 것인지에 대한 숫자이다. 추가로 RAFT의 pyramid 구조를 차용해서 feature map을 여러 scale로 변환해 동일한 과정을 반복하게 되어, 최종적으로 \({L}\) 만큼의 pyramid 층을 사용한 경우 multi-scale score crops \( \mathbf {C}^k\) 는\({T} \times {P \cdot P \cdot L}\) 의 shape을 갖게 된다.

 

✔️ Iterative Updates

매 iteration에서 앞서 계산된 여러 정보들을 묶어서 update할 delta 값을 계산하게 된다. \({k}\) 번째 iteration에 대해서 feature 행렬 \({ \mathbf F}^k\)와 correlation 행렬 \( \mathbf {C}^k\), 위치 값의 displacement 행렬을 묶어서 사용하게 되는데, 이때 displacemen 행렬은 \( \mathbf {X}^k\)의 모든 원소에 대해서 \((x_1, y_1)\)을 각각 빼서 계산하는데 이는 모든 trajectory의 시작점을 \((0,0)\)으로 통일하는 역할을 하기 때문이다. 또한 transformer에서 성공적으로 적용되었던 sinusoidal encoding을 추가로 적용한 정보도 함께 사용한다. 

 

이와 같은 정보들을 모두 합쳐서 \({T} \times {D}\) 의 shape을 갖는 새로운 행렬을 12개의 block을 갖는 MLP-Mixer에 입력으로 전달하여 update를 위한 \(\Delta{ \mathbf {X}}\) 와 \(\Delta{ \mathbf {F}}\) 가 출력된다. 이 값들은 각각 \(\mathbf{F}^{k+1} = \mathbf{F}^k + \Delta{F} \) 와 (\mathbf{X}^{k+1} = \mathbf{X}^k + \Delta{X} \) 로 사용된다. 

 

총 \({K}\) 번의 update가 이뤄졌다고 했을 때, 마지막 update 이후에 계산 될 수 있는 \({X}^K\), \({F}^K\)를 linear layer와 sigmoid를 통해 모든 시간에 대해서 해당 point가 가려졌는지 예측하는 행렬 \({V}^K\)가 계산된다.

 

✔️ Supervision

저자는 \({L}_1\) 거리를 통해 ground-truth trajectory와 추정된 trajectory의 loss를 계산했는데, RAFT와 비슷하게 exponential weight \({\gamma}=0.8\) 을 사용해서 후반부의 update에서 잘못 예측하는 것에 더 큰 패널티를 부여했다.

 

$ \mathcal{L}_{\mathrm{main}}=\sum_{k}^{K}\gamma^{K-k}||\mathbf{X}^{k}-\mathbf{X}^{*}||_{1} \tag{1} $

 

위 loss 식은 target이 가려진 경우나 화면 밖으로 사라진 경우들은 고려하지 못하지만 학습할 때 사용되었고, 생성된 데이터를 기반으로써 ground truth가 존재하기 때문에 사용할 수 있는 loss 식이다.  

 

$ {\mathcal{L}}_{\mathrm{ce}}=\mathbf{V}^{*}\log\mathbf{V}+(\mathbf{1}-\mathbf{V}^{*})\log(\mathbf{1}-\mathbf{V}) \tag{2} $

 

또한 모델의 visibility 분류 예측에 대해서는 위와 같은 BCE loss를 사용했다.

 

$ \mathcal{L}_{\mathrm{score}}=-\,\mathrm{log}(\mathrm{exp}(c_{i})\big/\sum_{j}\mathrm{exp}(c_{j}))\mathrm{l}\,\{{\bf V}^{*}\not=0\} \tag{3} $

 

추가로 저자는 update 과정의 일부인 score map 자체를 비교하는 위와 같은 loss 식을 실험적으로 사용해봤는데, 식 \({(1)}\) 을 사용하는 것 보다 더 빠르게 수렴했다고 한다.

 

 

Paper link : https://tapvid.github.io/

 

TAP-Vid: A Benchmark for Tracking Any Point in a Video

Generic motion understanding from video involves not only tracking objects, but also perceiving how their surfaces deform and move. This information is useful to make inferences about 3D shape, physical properties and object interactions. While the problem

tapvid.github.io

 


➡️ Abstract

Computer Vision 분야에서 영상 데이터의 motion을 해석하는 방식에는 물체 추적(Tracking objects)과 표면의 변화 및 이동 인식(Perceiving surface deform & move)이 있다. 이러한 정보는 물체의 3차원 형태나 물리적인 특성, 상호작용을 이해하는데 사용될 수 있다. 하지만 길이가 긴 영상 데이터에서 멋대로 변화하는 표면 위의 지점(physical points on surfaces)을 추적하는 task는 성능 평가를 데이터셋이나 benchmark가 존재하지 않는다는 문제가 있다. 본 논문에서는 처음으로 Tracking Any Point (TAP) 문제를 정의하고 이를 평가할 수 있는 benchmark인 TAP-Vid를 소개한다. 또한 이를 benchmark를 통해 학습된 TAP end-to-end 모델인 TAP-Net을 소개한다.

 


➡️Introduction

Motion을 인식하는 것은 비전 분야에서 세상을 이해하는데 중요한 tak이고 그 동안 많은 연구가 이뤄져 왔지만, 장기간의 영상 데이터의 point 변화를 추적하는 task는 그렇지 못했다. 이뤄졌던 여러 종류의 연구들도 아래와 같은 명확한 단점들이 있었다.

  • Box & Segment tracking
    • 표면의 deformation과 rotation을 고려하지 못함
  • Optical Flow
    • 오직 두 frame 쌍 사이의 point track만 수행할 수 있음
    • 가려짐(Occlusion)을 고려하지 못함 
  • Keypoint matching
    • 특정하게 관심있는 포인트(e.g. 관절)에 대해서만 tracking 수행
    • 물체의 변형이나 뚜렷하지 않은 질감에 대해 고려하지 못함

 

 

본 논문에서는 Tracking Any Point (TAP) 로 명명한, 길이가 긴 영상 데이터에서 물리적인 point를 추적하는 문제를 정의한다. 저자가 제시하는 방법론은 오직 하나의 \(\textit{query}\) 픽셀만 입력으로 받으면, 해당 target point가 속해 있는 표면을 결정하고 영상 데이터에서 시간에 따른 움직임을 예측할 수 있다 (단, 투명한 물체, 액체, 유리는 다루지 않음). 해당 방법론의 학습과 평가는 실제 영상 데이터(real world) 와 생성한 영상 데이터(synthetic)를 섞어서 사용했는데, 이때 사용하는 실제 영상 데이터에서 ground truth를 사람이 수동으로 표기하는 것은 쉽지 않은 방식이다. 따라서 저자는 실제 영상 데이터에서 효과적이고 정확하게 point track을 표기(annotation)하는 pipeline을 개발했다. 이를 통해 1,189개의 Youtube 영상을 각각 약 25개 이상의 points로 labeling 했다. 이후에는 소수의 Annotator를 통해 label을 검증하는 과정을 거쳤다.

 

해당 논문에서 주장하는 3가지 Contribution은 아래와 같다.

  1. Annotator(실제 영상 데이터의 point를 labeling하는 사람)가 더욱 정확하게 작업하도록 도울 수 있는 알고리즘을 개발하고 평가했음
  2. 1,219개의 평가용 실제 영상데이터(총 31,951개의 points)를 만들었음
  3. 기존의 사람 key point tracking 데이터 셋인 JHMDB와 논문에서 제시한 TAP-Vid 데이터셋을 각종 baseline 알고리즘들을 통해 비교한 결과, TAP-Vid 데이터셋이 학습에 더 용이하다는 결과를 얻음

 


➡️ Related Work

(중략)

 


➡️ Dataset Overview

 

본 논문에서 제시한 방법론은 입력으로 영상 데이터와 \(\textit{query}\) points \((x, y, t)\)를 전달 받는다( \( {x, y} \) 는 2차원 위치, \( {t} \) 는 시간 ). 그리고는 각 query point 마다 1) 모든 frame별로 point가 움직인 위치 \((x_t, y_t)\)와 , 2) point가 모든 frame별로 가려졌는지에 대한 여부 \({o}_t\) 를 산출해야한다. 단, point가 가려져있는(occluded) 동안에 예측되는 \((x_t, y_t)\)는 무의미한 값이다. 

 

저자는 TAP 분야의 평가를 위한 benchmark를 만들고자 하는 목적으로 실제 영상 데이터와 생성된 영상 데이터를 섞은 TAP-Vid를 만들었다. Kubric과 같이 특정 생성된 데이터를 포함하는 세트를 평가 데이터로 사용하는 것은 특정 도메인에만 편향된 학습 결과를 보여줄 수 있기 때문에, 저자는 학습에 Kubric 데이터만 사용하고 추가로 3가지 종류의 데이터를 더 만들어서 테스트에 함께 사용했다. 아래는 총 4가지 종류의 TAP-Vid 데이터에 대한 정보를 기술한 표이다.

 

✔️ TAP-Vid Datasets

 

◾ TAP-Vid-Kinetics

  • Kinetics-700 validation set에서 추출
    • 다양한 사람의 행동으로 구성된 데이터 셋 
    • YouTube에 업로드 되어있음
    • 720P 해상도를 가짐
    • 움직이는 물체가 여러 개라던지, 카메라가 흔들리고, 불필요한 밝기 변경되는 등 구조화되지 않은 데이터임
  • 25 fps를 갖는 10초 단위의 clip으로 편집하여, 한 clip은 총 250개의 frame을 가짐

 

◾ TAP-Vid-DAVIS

  • DAVIS 2017 validation set에서 추출
    • segment tracking을 위한 30개의 영상으로 구성됨
    • 1080P 해상도를 가짐
    • 레이블이 1개의 움직이는 물체에만 매겨져 있음
  • Annotator를 통해서, 5개의 다른 물체에 5개의 다른 point를 레이블링함
  • 256 x 256 크기로 편집함

 

◾ TAP-Vid-Kubric

  • 본 논문에서 제시하는 모델 TAP-Net지도학습과 평가에 모두 사용된 데이터 셋
  • Kubric에서 소개된 생성된(synthetic) MOVi-E dataset에서 추출
    • 각 영상은 Bullet의 물리 엔진과 Blender의 레이트레이싱이 적용된 약 20개의 사물들로 구성됨
  • 모델 학습을 위해서 augmentation을 적용함, 최대로 2:1 화면비, 최소로 픽셀 수 30%로 cropping

 

◾ TAP-Vid-RGB-Stacking

  • 생성된(synthetic)데이터로, robotic stacking 시뮬레이터를 녹화한 데이터 셋
    • 원격 조종자가 다양한 기하학적인 모형을 원하는 대로 움직일 수 있는 시뮬레이터
    • \(\textit{triplet-4}\)라는 모형을 사용했고, 좌측 전면 카메라를 통해 녹화함
  • 50개의 episodes를 녹화했고, 각 영상마다 30개의 points를 선택함 (20개는 움직이는 모형, 10개는 정적인 모형)
  • 해당 데이터셋의 사물들은 질감이 없고(textureless), 회전축에 대해서 대칭(rotaionally symmetric)이며, 수시로 가려지기(frequent occlusions) 때문에 특히 더 어려운 데이터 셋임

 


➡️ Real-World Dataset Construction

Tracking Any Object (TAO)에 영감을 받아서, 논문의 저자도 annotator들에게 point 추적을 라벨링 할 위치를 지정해주기 보다는 일반화를 위해서 annotator이 원하는 물체 위의 원하는 임의의 point를 직접 선택해서 라벨링하게 했다. Annotator들은 총 15명으로 진행되었는데, 이들은 Google의 crowdsourcing pool에서 구인되었다고 하며 시급을 받고 진행했다고 한다. 저자는 소수의 annotator를 운용함으로써 작업자들의 전문성을 높혀 더 효과적으로 진행할 수 있었다고 한다. 아래의 그림과 같이 Annotation은 총 3단계로 이루어졌다. ( 각 단계의 자세한 내용은 아래에 기술 )

 

Stage 1: Object Selection

  • 작업자는 \({K}\)개의 물체 수를 선택한다 (Kinetics에서는 \({K}=10\), DAVIS에서는 \({K}=5\) 사용)
  • 눈에 띄고 오래동안 화면에 등장하는 순으로 물체들의 순위를 매긴다
  • 30 frame에 한번씩 모든 물체에 대해서 box를 그린다
  • 각 물체에 대한 텍스트 레이블을 작성한다

Stage 2: Point Annotation

  • Stage1에서 선택한 모든 물체에 대해서, point 수 \({M}\)를 선택한다 (Kinetics에서는 \({M}=3\), DAVIS에서는 \({M}=5\) 사용)
  • 작업자는 모든 frame에 대해 각 물체가의 위치가 변화할 때 동일한 point를 표시해야 하는데, 이때 optical flow를 활용한 \(\textit{track assist}\) 알고리즘을 통해 point의 움직임을 예측해서 작업을 도와준다
    • 단, 몇개의 sparse한 point는 작업자가 찍어줘야 한다
    • 해당 알고리즘에 대한 자세한 설명은 바로 다음 섹션에서 계속

Stage 3: Iterative Refinement

  • Annotation 퀄리티를 확보하기 위해서, 최초 작업이 끝난 이후 결과는 두 번째 작업자에게 넘겨져서 작업이 잘 되었는지 확인한다
  • 이 과정은 마지막 작업자가 모든 label에 대해서 승인할 때 까지 반복된다
  • 평균적으로 4~5명의 작업자 기준, 10초짜리 영상의 작업은 3.3시간이 걸렸다

 

✔️ Track Assist Algorithm

Annotator에 의해서 첫 번째 point가 주어지게되면, RAFT와 같은 Optical flow 알고리즘을 통해서 이후 frame에서 해당 point가 어디로 움직일지 어느정도 예측이 가능하다. 하지만 이러한 방식에는 아래와 같이 두가지 문제가 있다.

  1. 현재 point 이후 너무 많은 frame 뒤를 예측하게 하면, drift가 생겨 제대로된 예측을 할 수 없음
  2. Occlusion을 고려하지 못함

두 번째 문제를 예방하기 위해 작업자들은 occlusion이 발생하면 작업을 멈추도록 교육을 받았고, 첫 번째 문제인 drift를 해결하기 위해서 Optical flow를 예측하는 알고리즘에 수정이 필요했다. 저자는 우선 RAFT를 이용해 전체 영상에 대해서 optical flow를 계산했고, 작업자가 frame \({s}\)에 대해 point \({p}_s\)를 선택하게 되면 미리 계산해둔 flow값과 선택된 point를 통해 마지막 frame까지 bilinear interpolation 사용해서 다음 frame point 값을 연산해서 넘겨준다. 작업자가 그 다음 frame \({t}\)의 point \({p}_t\)를 선택하게 되면, 각 frame 별로 optical flow 계산과 찾을 경로의 차이 제곱 값이 최소화 되게 하는 경로를 찾게 된다. 이를 식으로 표현하면 아래와 같다.

 

$  \operatorname{arg\,min}_{\rho\in{\mathcal{P}}_{s:t}}\sum_{i=s}^{t-1}\|(\rho_{i+1}-\rho_{i})-{\mathcal{F}}(p_{i})\|^{2}\qquad{\mathrm{s.t.}}\quad\rho_{s}=p_{s},\rho_{t}=p_{t} \tag{1} $ 

 

\( \mathcal{P}_{s:t} \)는 frame \({s}\)에서부터 frame\({t}\)까지의 모든 경로의 집합이다 (각 경로는 points들의 list). 따라서  모든 \({\rho}\)는 \( \mathcal{P}_{s \colon t} \) 에 속한다 ( \(\{\rho_i, i \in \{s, \ldots, t\}  \}\), \(where, {\rho}_i \in \mathbb{Z}^2\) ). 또한 \( \mathcal{F} \colon \mathbb{Z}^2 \rightarrow \mathbb{R}^2  \) 는 optical flow tensor를 뜻하고, 이 값에 의해 이미지 픽셀들이 optical flow vector로 매핑된다.

 

위 식은 non-convex 최적화 문제이지만, 각 프레임의 픽셀을 노드로 보면 그래프에서의 최단거리 문제로 간주할 수 있다. Frame \({i}\)에서의 각 픽셀은 frame \({i+1}\)의 모든 픽셀과 연결되어있고, 이때 각 연결의 가중치는 optical flow를 통해 게산한 두 경로 거리 차이의 제곱의 비율이다. 이는 곧 다익스트라 알고리즘을 통해 효과적으로 최단거리를 구할 수 있게된다. 이러한 알고리즘을 통해 annotator의 작업을 어느정도 도울 수 있게 된다.

 

✔️ Evaluation and Metrics

저자는 보이는 부분에 대한 정확한 point 위치 예측과 보이지 않는 point를 예측하는 것을 간단하게 표현할 수 있는 metric을 사용했다. occlusion 여부와 같은 binary decision과 위치 예측 regression prediction을 동시에 비교하는 것은 쉽지 않은 접근이기 때문에, regression 값에 treshold를 사용해서 binary 문제로 바꾸어서 아래의 3가지 Jaccard 스타일 metric을 산출한다.

 

  1. Occlusion Accuracy \({OA}\)
    1. 가려짐 여부에 대한 단순한 classification accuracy 계산
  2. \({\delta}^x\)
    1. 가려지지 않은 frame에서, 해당 threshold를 통해 position accuracy를 계산
    2. ground truth와의 거리가 theshold 보다 작은 포인트들의 비율을 계산
    3. 5가지 threshold 값을 변경하면서 결과를 평균내어 \({\delta}_{avg^x}\)를 계산 (각각 1, 2, 4, 8, 16 픽셀)
  3. \(\text{Jaccard at }{\delta}\)
    1. 가려짐 여부와 position 위치 정확도를 동시에 평가
    2. \(\text{Jaccard} = \frac{True Positives}{True Positives + False Positives + False Negatives}\)
    3. \(\text{Average Jaccard (AJ)}\)는 \({\delta}_{avg^x}\) 에서와 같은 threshold를 사용한 결과의 평균

 


➡️ Datset Analysis

 

저자는 기본적인 데이터셋에 대한 통계치를 제공하고, 수동으로 annotating한 track에 대해 ground truth와 비교해서 point tracking에 대한 정확도를 평가했다. 또한 미래의 연구를 위해서 여러 방법론들에 대해 각 논문에서 제시한 알고리즘에 따라 baseline 성능 평가를 진행했다. 해당 알고리즘들의 성능이 우수하지 못해서, 저자는 cost volume을 활용해 좋은 성능을 확보한 TAP-Net baseline을 개발했다. 

 


➡️ Baselines

기존의 몇몇 방법론(e.g. Kubric-VFS-Like, RAFT, COTR)은 조금의 수정이나 확장을 통해서 곧바로 적용해 볼 수 있었다. 하지만 대부분 좋은 성능을 확보하지 못했다. 예를 들면 Occlusion을 고려하지 못하는 RAFT, deformable한 사물을 잘 다루지 못하는 COTR, 생성한 데이터에서 실제 데이터로 전이가 잘 이뤄지지 않은 Kubric-VFS-Like가 있다. 이러한 단점들은 모델의 구조적인 한계에서 비롯되기 때문에 저자는 이를 고려해 합리적인 성능과 빠른 실행시간을 확보한 딥러닝 구조를 개발했다.

 

 

✔️ TAP-Net

영상 데이터의 dense feature grid를 계산하고, query point와 다른 모든 point 사이의 feature들을 비교한다. 비교한 결과 값을 신경망구조에 입력해서 point 위치 값을 예측하고 occlusion 여부를 분류한다.

 

◾Cost Volume

저자는 optical flow 분야에서 성공적으로 사용되었던 cost volume에 영감을 받아 이를 응용했다. 먼저, 영상 데이터의 dense feature grid를 계산하고 query point와 다른 point의 feature들을 비교한다. 그리고서 비교한 쌍들의 집합 자체를 새로운 feature로 여겨서(cost volume), 이후에 신경망의 입력으로 사용한다. 이는 아래 Figure 7에 묘사되어 있다.

 

 

주어진 영상 데이터에 대해서 먼저 grid \({F}\)를 계산한다. \({F}_{ijt}\)는 시간 \({t}\)에서 좌표 \(i, j\)의 \({d}-\)차원 feature를 의미한다. 이를 위해 저자는 Per-frame ConvNet을 사용했는데, TSM-ResNet-18의 앞쪽 두 layer에만 time shifting을 적용해서 이를 구현한 결과는 좋지 않았기 때문이다. 시간 \({t}_q\) 의 query point 좌표 \({x}_q, {y}_q\) 가 주어졌을 때, feature grid \({F}_t\) 위의 \({i}_q, j_q, t_q\)에 대해 bilinear interpolation 해서 feature를 뽑는다. 이렇게 뽑힌 feature를 grid \({F}_q\)라고 칭한다. 그리고 행렬 곱을 통해 cost volume을 계산하는데, 즉 feature map \({F}\)위의 각 feature가 shape \({d}\) 을 갖는다면 출력값은 cost volume \({C}_{qijt} = F_q^{\intercal}F_{ijt}\) 이다. 따라서 \({C}_q\)는 3차원 tensor 이며, ReLU 활성화 함수화 함께 사용된다.

 

◾Track Prediction

다음 단계는 각 frame 마다 독립적으로 query point와 관련된 cost volume을 후처리하는 과정이다. 한 frame에 대한 처리 과정의 모식도는 아래 Figure 8과 같다.

 

하나의 출력값을 갖는 Conv layer와 softmax를 통해 position 예측을 한다. 그 후 soft argmax와 spatial average를 취하는데, 이는 출력값 heatmap에서 가장 큰 값을 갖는 위치의 주변부를 활성화시키는 역할을 한다.

 

수학적으로 기술해보자면, query \({q}\)의 시간 \({t}\)의 공간 좌표 \({i}, {j}\)에 대한 softmax 활성화함수는 \({S}_{qijt} \in \mathbb{R}\)이라고 정의한다. 또 \({G}\)는 spatial grid라고 하자. 즉, \({G}_{i,j} \in \mathbb{R}^2\)는 \({S}_{i,j}\)의 이미지 좌표 공간에서의 위치이다. 마지막으로 \({S}_{qt}\)의 argmax 위치를 \((\hat{i}_{qt}, \hat{j}_{qt})\)라고 하면, 출력물은 아래와 같은 식으로 표현할 수 있다.

 

$ p_{q t}=\frac{ \sum_{i, j} \unicode{x1D7D9} \left(  \left\|  (\hat{i}_{qt}, \hat{j}_{qt} ) - (i,j) \right\|_2 < \tau \right) S_{qijt}G_{ij}}{\sum_{i, j} \unicode{x1D7D9} \left(  \left\|  (\hat{i}_{qt}, \hat{j}_{qt} ) - (i,j) \right\|_2 < \tau \right) S_{qijt}} \tag{2} $

 

위 식에서 \({\tau}\)는 상수이며, 보통 5로 사용했다. 해당 식의 일부분(thresholding과 argmax 부분)은 미분이 가능하지 않음에 주의해야한다.

 

◾Loss Definition

각 query point에 대한 loss는 아래와 같다.

 

$ {\cal L}(\hat{p},\delta,p^{g t},o^{g t})=\sum_{t}(1-o_{t}^{g t}){L}_{H}(\hat{p}_{t},p_{t}^{g t})-\lambda\left[\log(\hat{o})o^{g t}+\log(1-\hat{o})(1-o^{g t})\right] \tag{3} $

 

여기서 \(L_{H}\)는 Huber loss이고, \(p_{gt}\)는 위치의 ground-truth값, \(o_{gt}\)는 가려짐에 대한 binary ground-truth값이다. 즉 저자는 가려지지 않은 point에 대한 위치 예측을 단순히 frame별 regression 문제로 접근했다. error가 매우 커지는 만약의 경우를 대비해서 Hubber loss를 썼고 occlusion에 대해서는 binary cross entropy를 사용했다;

 

 

+ Recent posts