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를 사용했다;

 

 

 

 

Paper link : https://proceedings.neurips.cc/paper_files/paper/2015/hash/33ceb07bf4eeb3da587e268d663aba1a-Abstract.html

 

Spatial Transformer Networks

Requests for name changes in the electronic proceedings will be accepted with no questions asked. However name changes may cause bibliographic tracking issues. Authors are asked to consider this carefully and discuss it with their co-authors prior to reque

proceedings.neurips.cc


➡️ Abstract

  CNN은 강력한 모델로 떠올랐지만, 여전히 입력 데이터에 대해 Spatial Invariance에 대한 계산 능력과 효율적인 파라미터 유지 능력이 부족하다는 한계가 있다. 본 논문에서는 추가적인 지도 학습이나 최적화 과정 없이도 feature map을 변환할 수 있는 학습가능한 모듈 Spatial Transformer를 연구했다. 이미지의 변환, 크기 조정, warping 등에 대한 Spatial Invariance를 효과적으로 학습할 수 있는 효과적인 모듈을 제안한다.

 

( * Spatial Invariance : 임의 변환된 입력 이미지에 대해서, 동일한 원본 이미지로 인식할 수 있는 성질 )

 


➡️ Introduction

  CNN의 발전으로 Computer vision 분야는 큰 발전을 이룩했다. 비록 새로 개발된 모델 구조는 아니었지만, 이를 구조를 응용해서 Classfication, Localisation, Sematic Segmentation, Action Recogition 등 다양한 분야에서 최고의 성능을 확보할 수 있었다. 

 

  이미지 데이터를 추론하는 모델에게 기대하는 속성 중 하나는, Object의 질감과 모양으로부터 자세나 부분의 변화를 분리하는 것이다. CNN은 Max-pooling layer를 사용함으로써 위와 같은 속성인 Spatial invariance를 확보할 수 있었는데, 만약 입력 이미지 데이터에서 변화하는 부분이 너무 작거나 큰 경우에는 잘 인식하지 못하는 한계가 있었다.

 

  본 논문에서 소개하는 Spatial Transformer 는 모델이 공간적인 변화를 잘 인지할 수 있게 만들어주는 모듈인데, 일반적인 neural network 구조에 쉽게 추가해서 사용할 수 있다. 또한 고정된 receptive field를 갖는 pooling layer와는 달리, Spatial Tranformer는 동적으로 적절한 변화점을 인식할 수 있게 해준다. 이러한 특성으로 인해서 단순히 변화가 일어나는 지점을 찾는 것 뿐만 아니라, 다음 layer의 연산을 돕기 위해 feature를 일반적으로(canonical) 변환하는 기능도 수행할 수 있다.

 

Spatial Transformer는 CNN 구조에 결합되어 다음과 같은 다양한 작업에 활용될 수 있다.

  • Image Classifcation
    • Figure1과 같이 숫자의 위치나 크기가 모두 다른 sample들에 대해서 Classifcation 과정이 원활하게 진행될 수 있도록 해당 모듈을 사용할 수 있다.
  • Co-localisation
    • 동일한(단, 알 수 없는) 클래스의 다른 인스턴스를 포함하는 이미지 집합이 주어지면, 해당 모듈을 통해 각 이미지에서 인스턴스를 위치 지정하는데 활용될 수 있다.
  • Spatial Attention
    • Attention 메커니즘을 필요로 하는 작업에 사용될 수 있는데, 이로 인해 낮은 해상도의 이미지를 고해상도의 이미지 처럼 사용할 수 있게 되어 계산 속도에서 이점을 가질 수 있다.

 


➡️ Related Work

( 중략 )

 


➡️ Spatial Tranformers

  Spatial Transformer는 feed-forward 단계에서 하나의 feature map을 입력으로 받고 내부적으로 공간 변화 연산을 수행하며 하나의 feature map을 출력하는 미분가능한 모듈이다. 여러 channel을 갖는 입력의 경우에는, 각 channel에 대해 동일한 기능을 각각 수행한다. 단, 이 섹션에서는 설명의 편의를 위해서 입력 데이터는 하나의 channel을 갖는다고 가정한다. 

✔️ Localisation Network

  Localisation network은 입력으로 feature map \({U \in \mathbb{R}^{H \times W \times C}}\)을 받고 (\({W}\)는 너비, \({H}\)는 높이, \({C}\)는 channel 수), 출력으로는 \({\theta}\)를 반환한다. 출력 \({\theta}\)는 이후에 있을 변환 \({\mathcal{T}}_\theta\) 의 파라미터로, \({\theta} = f_{loc}(U)\)로 표현된다. \({\theta}\)의 크기는 변환의 종류에 따라서 달라질 수 있다. 예를 들어 Affine 변환의 경우 \({\theta}\)는 6차원을 갖는다.

 

✔️ Parameterised Sampling Grid

  입력 feature map에 대한 warping 연산은 각 출력 "pixel"은 feature map의 특정 위치를 중심으로 하는 sampling kernel을 통과함으로써 계산된다. 여기서 "pixel"이라는 표현은 꼭 원본 이미지에서의 픽셀을 뜻하는것에 국한되지 않고, feature map에서의 픽셀도 아우른다. 일반적으로 출력 pixel들은 regular grid \(G = \{ G_i \} \) 위에 있는 것으로 정의되는데 ( \({G_i = ({x}^t_i, {y}^t_i))}\) ), 이때 출력 pixel들이 모여서 출력 feature map \({U \in \mathbb{R}^{H^{\prime} \times W^{\prime} \times C}}\) 를 구성한다. (\({W}^ {\prime} \)는 grid의 너비, \({H}^ {\prime} \)는 grid의 높이, \({C}\)는 입력 feature map에서와 동일한 channel수)

 

  설명의 편의를 위해서 \({\mathcal{T}}_\theta\)는 2차원 Affine 변환 \({\mathbf{A}_\theta}\)라고 가정한다. (다른 변환들은 아래에서 재차 다룰 예정)  

 

$ \left(\begin{array}{c}x_i^s \\ y_i^s\end{array}\right)=\mathcal{T}_\theta\left(G_i\right)=\mathrm{A}_\theta\left(\begin{array}{c}x_i^t \\ y_i^t \\ 1\end{array}\right)=\left[\begin{array}{lll}\theta_{11} & \theta_{12} & \theta_{13} \\ \theta_{21} & \theta_{22} & \theta_{23}\end{array}\right]\left(\begin{array}{c}x_i^t \\ y_i^t \\ 1\end{array}\right) \tag{1} $

 

\({(1)}\)번 식은 Affine 변환으로, pointwise transformation의 예시이다. \({ ({x}^t_i, {y}^t_i) }\)는 출력 feature map에서 grid의 target 좌표이고,  \({ ({x}^{s}_i, {y}^{s}_i) }\)는 입력 feature map에서 정의된 source 좌표이다. 이때 각 입출력 공간에서의 높이와 너비는 정규화된 값을 사용한다 \(( -1 \leq {x}_i^s, {y}_i^s \leq 1, \;\; -1 \leq {x}_i^t, {y}_s^t \leq 1 )\) 

 

$ \mathrm{A}_\theta=\left[\begin{array}{ccc}
s & 0 & t_x \\
0 & s & t_y
\end{array}\right] \tag{2} $

 

위와 같이 변환 \({\mathcal{T}}_\theta\)는 더 제한적(constrained)일 수 있는데, 다양한 \({s}, {t}_x, {t}_y\)의 값 변화에 따라  cropping, translation, isotropic scaling과 같은 변환 효과를 얻을 수 있다. 이 parameter가 8개가 되면 평면에 projection시키거나 piece-wise 아핀 변환, thin plate spline과 같이 조금 더 일반적인 변환도 할 수 있다. 앞선 내용들을 정리하면, 변환에 사용되는 parameter들이 어떻게 설정되냐에 따라 다양한 변환을 표현할 수 있고 이 parameter들이 미분가능하도록 구현하면 backpropagation을 통해 localisation network 출력 \({\theta}\)를 학습을 할 수 있다는 것이다. 예를들어 attention, affine, projection, thin plate spline 변환들이 표현 가능한 일반적이면서도 미분가능한 변환 \({\mathcal{T}}_\theta = M_{\theta}B\)가 있을 때, \({B}\)는 \({(1)}\)번 식에서 G와 동치로 target grid를 의미하며 \({M_\theta}\)는 \({\theta}\)로 parametrized 된 행렬이다. 이 경우에 입력 데이터에 대해서 \({\theta}\)를 학습을 할 수 있고, 작업의 종류에 따른 \({B}\) 행렬도 학습할 수 있다.

 

✔️ Differentiable Image Sampling

입력 feature map에 대해서 공간 변환을 수행하기 위해, sampler는 입력 feature map \({U}\)를 따라 샘플링된 점들의 집합인 \({\mathcal{T}}_{\theta}(G)\)를 입력받고 샘플링된 출력 feature map \({V}\)를 반환해야 한다. 모든 \({i}\)에 대해서 \(\mathcal {T}_\theta(G)\) 위의 \(({x}_i^s , {y}_i^s)\) 좌표들은 sampling kernel을 통과하여 output feature \({V}\) 위의 특정한 pixel로 변환된다. 이는 아래와 같은 식으로 표현할 수 있다.

 

$  V_i^c=\sum_n^H \sum_m^W U_{n m}^c k\left(x_i^s-m ; \Phi_x\right) k\left(y_i^s-n ; \Phi_y\right) \forall i \in\left[1 \ldots H^{\prime} W^{\prime}\right] \forall c \in[1 \ldots C] \tag{3} $

 

\({\Phi}_x\)와 \({\Phi}_y\)는 bilinear interpolation과 같이 일반화된 sampling kernel \(k\left(\right)\)의 parameter이다. \({U}_{nm}^c\)는 입력 데이터의 \({c}\)번 째 channel에서 \((n, m)\) 위치 값이고, \({V}_i^c\)는 \({c}\)번 째 channel의 \(({x}_i^t, {y}_i^t)\) 위치의 \({i}\) 번 째 pixel 출력 값이다. sampling 연산은 모든 channel에 대해서 독립적으로 수행됨으로써, channel 사이의 spatial consistency가 유지된다.

 

이론적으로 \({x}_i^s\) 와 \({y}_i^s\)에 대해서 미분이 가능하다면 다른 어떠한 sampling kernel을 사용해도 무방하다. 아래는 \({(3)}\) 번 식에 integer sampling kernel을 적용한 예시이다.

 

$ V_{i}^{c}=\sum_{n}^{I I}\sum_{m}^{W}U_{n m}^{c}\delta(\lfloor x_{i}^{s}+0.5\rfloor-m)\delta(\lfloor y_{i}^{s}+0.5\rfloor-n) \tag{4} $

 

\(\lfloor x+0.5\rfloor\) 는 \({x}\)를 가장 가까운 정수로 반올림(0.5를 더해준 다음 내림하게 되면 반올림을 하는 것과 같음)해주고 \({\delta}\) 는 Kronecker delta function이다. 이 kernel은 단순히 \(({x}_i^s, {y}_i^s)\) 에서 가장 가까운 pixel을 \(({x}_i^t, {y}_i^t\)로 복사하는 역할을 한다. 또 다른 예로는 bilinear sampling kernel을 사용하는 것이고, 그 식은 아래와 같다.

 

$  V_{i}^{c}=\sum_{n}^{I}\sum_{m}^{W}U_{n m}^{c}\,\mathrm{^{max}}^{}(0,1-\left|x_{i}^{s}-m\right|)\,\mathrm{max}(0,1-\left|y_{i}^{s}-n\right|) \tag{5} $

 

앞서 언급한 것 처럼 결국 sampling을 수행하면서 backpropagation을 가능하게 하려면, \({U}\) 과 \({G}\)에 대해서 미분가능해야한다. \({(5)}\) 번 식을 편미분하게 되면 아래와 같은 식을 얻을 수 있다.

 

$ \frac{\partial V_{i}^{c}}{\partial U_{n m}^{c}}=\sum_{n}^{H}\sum_{m}^{W}\mathrm{max}(0,1-|x_{i}^{s}-m|)\operatorname*{max}(0,1-|y_{i}^{s}-n|) \tag{6} $

$ \frac{\partial V_{i}^{c}}{\partial x_{i}^{s}}=\sum_{n}^{H}\sum_{m}^{W}U_{n m}^{c}\operatorname*{max}(0,1-|y_{i}^{s}-n|)\left\{\begin{array}{l l}{{0}}&{{\mathrm{if~}|m-x_{i}^{s}|\geq1}}\\ {{1}}&{{\mathrm{if~}m\geq x_{i}^{s}}}\\ {{-1}}&{{\mathrm{if~}m<x_{i}^{s}}}\end{array}\right. \tag{7} $

 

( \({(7)}\)번 식과 동일한 방식으로 \( \frac{\partial V_{i}^{c}}{\partial y_{i}^{s}} \)도 계산 가능하다. )

 

위 편미분 식을 통해 해당 sampling이 미분 가능하며 loss gradient를 입력 feature map과 sampling grid의 좌표로 backpropagate 할 수 있음을 보여준다. 따라서 더 이전의 localisation network의 parameter \({\theta}\)까지의 backpropagation도 가능하다 (식 \({(1)}\) 참고 ).  

 

✔️ Spatial Transformer Networks

앞서 설명한 세 모듈 localisation network, grid generator, sampler를 합쳐서 Spatial Transformer Network를 구성하게 된다. 이 네트워크 구조는 어떠한 CNN 아키텍쳐에도 적용될 수 있으며 사용되는 개수에도 제한이 없다. 해당 구조를 추가함으로 써, 모델은 기존 학습 과정 중간에 동적으로 전체 cost를 최소화하는 feature map을 변환 방식을 함께 학습한다. 또한 기존의 모델 속도에는 크게 영향을 미치지 않는다. 마지막으로 여러 개의 Spatial Transformer 구조를 CNN 구조가 깊어지는 중간에 사용하게 되면 모델이 더 추상적인 representation을 다루게하는 효과가 있다.  

 

 

 

 

 

 

 

 

Paper link : Link (본 포스트에 사용된 모든 이미지는 해당 논문에서 발췌하였습니다)

 

CVPR 2018 Open Access Repository

Deqing Sun, Xiaodong Yang, Ming-Yu Liu, Jan Kautz; Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2018, pp. 8934-8943 We present a compact but effective CNN model for optical flow, called PWC-Net. PWC-Net has been des

openaccess.thecvf.com

 


➡️ Abstract

  • 본 논문은 Optical flow를 위한 가볍고 효과적인 CNN 기반의 PWC-Net 모델을 제안함
  • 모델을 구성하는 모듈 (각 모듈에 대한 description은 아래 Approach에서 함)
    • Pyramidal processing
    • Warping
    • Cost volume
  • 모델의 전체적인 흐름
    1. 학습 가능한 pyramid 모듈을 사용해서 두 번째 입력 이미지의 CNN feature를 현재 optical flow를 고려하여 warping한다
    2. warping된 feature와 첫 번째 입력 이미지의 feature을 사용한 cost volume을 통해 Optical flow를 추정한다
  • 이전에 뛰어난 성능을 보였던 FlowNet2 모델 보다 약 17배 적은 사이즈를 가짐
  • MPI Sintel final passKITTI 2015 benchmarks 데이터에서 기존에 제안된 모든 방법론들 보다 뛰어난 성능 확보
  • 코드 경로 : https://github.com/NVlabs/PWC-Net

 


➡️ Introduction

  Optical flow estimation은 computer vision 분야의 핵심 문제로 자리잡았고, 많은 연구와 응용 사례가 생기고 있지만, 많은 계산양으로 인해 실시간성의 한계를 갖고 있다. 비록 성능적으로 SOTA는 아니지만, U-Net 구조를 사용한 FlowNetC와 FlowNetS라는 실시간성을 확보한 모델이 등장하기도 했다. 이후에는 FlowNetC와 FlowNetS를 쌓아서 만든 FlowNet2가 성능적으로 SOTA를 달성했으나, 과도하게 큰 모델 사이즈(640MB)와 Overfitting이라는 한계점이 여전히 남아있었다. FlowNet2와는 반대로, 새롭게 등장한 SpyNet은 고전적 optimal flow estimation 방식인 pyramid와 warping을 deep learning에 접목시킴으로써 모델 사이즈는 작게 줄일 수 있었지만 좋은 성능은 확보하지 못했다(Trade-off between model size and accuracy).

 

  본 논문의 저자는 SpyNet을 통해 고전적인 방법론과 CNN 구조의 결합에 대한 가능성을 확인했고, SpyNet의 낮은 성능의 문제를 해결해서 모델의 사이즈도 작고 성능도 좋은 모델 개발을 위한 연구를 진행했다. 저자는 다음과 같은 두 가지 관점을 제시했다. 첫 번째는 전통적인 Optical flow 방식 자체의 한계를 지적했는데, raw image를 전처리하는 과정에서 변하는 조명이나 그림자에 영향을 받지 않는 feature만을 추출한다고 주장한다. 또한 두 번째로는 cost volume을 통해 raw image나 feature보다 더 descrimiative 한 정보를 뽑을 수 있다고 주장한다. 다만, 과도한 계산량이 요구되는 전체 cost volume 계산 대신 pyramid level과 warping을 통한 partial cost volume 방식을 제안한다. 

 

  논문에서 제시하는 PWC-Net은 위와 같은 단순하지만 잘 짜인 원리들을 고수하여 모델의 사이즈를 줄이면서도 좋은 성능을 확보할 수 있었다고 한다. 논문을 작성하던 시기에 MPI Sintel final pass와 KITTI 2015 benchmarks 데이터셋에 대해 제시된 다른 방법론들 중에 가장 좋은 성능을 확보했다고 하고, 모델의 사이즈는 FlowNet2 보다 17배가 작았다고 한다. 또한 SpyNet과 FlowNet2보다 학습시키기가 편하고, (1024 x 436) 크기의 이미지를 35 fps의 실시간 데이터를 처리할 수 있다고 한다.

 

 


➡️ Previous Work

✔️ Variational approach

Optical flow 분석을 위한 과거의 접근법의 변화 과정을 설명한다.

  • Horn & Schunk : Energy function을 통해 밝기 불변성과 공간적 평활도를 결합하여 Optical flow 분야를 개척함
  • Black & Anandan : 밝기의 불일치성과 공간적 비연속성과 같은 outlier를 고려하는 강건한 방법론 제시
  • Brox & Sun : 기 제시된 방법론들의 과도한 계산량의 문제를 해결하기 위해서 warping 기반의 coarse-to-fine 방법론 제시 및 고도화
    • 다만, 여전히 실시간으로 작동하기에는 계산량이 많았음
  • Brox & Malik : coarse-to-fine 방법론은 coarse 단계에서 아주 작거나 빠른 물체를 탐지하지 못한다는 단점이 존재했는데, 이를 해결하기 위해서 feature matching 방법론 제시
    • 이후 후처리 방식인 EpicFlow와 CNN 기반의 두 interpolation 방법론으로 고도화 
  • 이후 DCFlow, FlowField-sCNN, MRFlow와 같은 다양한 CNN 기반의 고도화된 방법론이 등장했으나, 그 어떠한 모델도 실시간성을 확보하지 못했음

 

✔️ Recent work on learning optical flow

  CNN 기반의 모델들을 vision 과제에서 성공적으로 적용시킨 사례들에 영감을 받아서, 저자 Dosovitskiy는 U-Net denoising autoencoder를 기반으로 optical flow를 추정하는 두 CNN 모델 FlowNetsSFlowNetC를 개발한다. 두 모델은 FlyingChairs 데이터로 사전학습되었고 Sintel 데이터의 빠른 움직임을 갖는 물체들에 대해서 성공적으로 작동했다. 하지만 모델 원본 산출물의 배경 부분에 큰 문제가 있었고 몇몇 개선할 부분이 있었다.

 

  저자 Mayer는 FlowNet의 구조를 disparity와 scene flow 추정에 차용했다. Ilg는 기본 FlowNet를 여러 겹 쌓아서 FlowNet2라는 거대 모델을 만들었는데, 이는 Sintel benchmark에서 SOTA를 달성하기도 했다. 저자 Ranjan & Black은 SpyNet이라는 소형 공간 pyramid 네트워크를 개발했는데, Sintel benchmark에서 SOTA까지는 아니지만 FlowNetC와 비슷한 성능을 확보했다.

 

  다음과 같은 비지도 학습 방식의 연구도 진행되었다. Memisevic and Hinton은 이미지의 변형을 탐지하기 위한 비지도학습방법을 제시했고, Long은 CNN 기반의 frame 보간법을 연구했다. Yu는 모델의 loss term에 data constancy term과 spatial smoothness term을 추가한 학습을 연구했다.

 

✔️ Cost volume

Cost volume은 현재 프레임의 픽셀과 일치하는 다음 프레임의 픽셀을 매칭하는데 필요한 비용을 저장하는 것이다. 해당 비용을 계산하는 것은 optical flow의 특수한 케이스 중 하나로, stereo matching을 위한 일반적인 과정이다. 최근의 연구들은 전체 Cost volume을 한 scale에서 계산하는 방법을 주로 사용하는데, 이러한 방식은 과도한 계산량과 메모리 사용량을 요구한다. 본 논문에서는 여러 pyramid levels를 통해 부분적인 Cost volume을 계산함으로써 효율적인 모델을 개발했다.

 

✔️ Datasets

  다른 vision task들과 다르게 Optical flow 분야의 ground truth를 갖는 현실 데이터를 얻기는 매우 힘들다. 따라서 이전의 연구들에서는 "Yosemite"와 같은 임의로 만들어낸 데이터를 사용하곤 했는데, 실제 현실 데이터에는 잘 적용되지 못했다.

 

   KITTISintel 데이터셋은 Optical flow 분야에서 현재 가장 어렵고 널리 알려져 있다. KITTI는 정적인 데이터와 큰 움직임을 갖거나 심한 조명 변화를 갖는 동적인 데이터를 포함하여 어려운 데이터이며, Sintel은 open source 영화 그래픽 데이터인데 final 버전에서는 강한 기후변화효과와 모션 블러, 카메라 노이즈를 포함하여 어려운 데이터이다. 본 논문에서 제시하는 모델은 위 두 데이터셋에 대해 제시된 다양한 방법론들보다 뛰어난 성능을 확보했다.

  

✔️ CNN models for dense prediction tasks in vision

Denosing autoencoder(보통 Encoder와 Decoder 사이에 Skip connection과 동반되어 시용되는 구조)는 Computer vision분야에서 dense prediction을 할 때 주로 사용된다. 최근의 연구들에서는 Dilated convolution 레이어가 contextual 정보 활용과 semetic segmentation를 위한 세부사항을 개선하는데 더 낫다는 점이 확인되었다. 

  따라서 본 논문에서 제시하는 모델 또한 optical flow를 위한 contextual 정보 통합과 더 나은 성능 확보를 위해 dilated convolution을 활용한다. 

 

 

 


➡️ Approach

 

위 Figure3에서는 PWC-Net의 주요 모듈을 위주로 요약한 구조를 보여주며, 본문에서는 전통적인 coarese-to-fine 접근법과 비교한 몇 가지 차이점에 대해서 개괄적으로 설명한다. 이후에는 각 모듈들에 대해 자세히 설명한다.

( 개인적으로, 아래의 내용을 이해하는데 논문의 Figure3 보다 링크의 이미지가 더 직관적이고 편했다. )

  1. 원본 이미지는 그림자와 조명의 변화에 따라 변동성이 있으므로 이를 고려할 수 있도록, 고정된 pyramid를 대신해서 학습가능한 feature pyramid로 대체했다
  2. 큰 모션을 추정할 수 있도록 하기 위해, 고정된 warping 방식을 사용하는 대신 warping layer를 사용했다
  3. 원본 이미지보다 optical flow 정보를 더 잘 드러내는 cost volume을 사용하기 위해 이를 계산하는 CNN layer를 사용했다
  4. warping과 cost volume은 학습가능한 파라미터를 사용하지 않음으로써 모델의 사이즈를 줄였다
  5. median filtering, bilateral filtering과 같은 전통적인 방식에서 사용한 후처리방식을 대체하기 위해서, context layer를 사용했다

 

✔️ Feature pyramid extractor

두 입력 이미지 \( \mathbf{I}_1\)과 \( \mathbf{I}_2\)이 주어졌을 때, 각 이미지의 feature 추출을 위해 \(L\) 개의 층을 갖는 pyramid를 사용한다. 이때 pyramid의 가장 최하층값은 원본 입력 이미지와 동일하다. \((i.e., \mathbf{c}_t^0=\mathbf{I}_t)\)

\(l\) 번째 pyramid 층의 feature 표현 \( \mathbf{c}_t^l\)을 만들기 위해서, \(l-1\) 번째 층의 feature 표현 \( \mathbf{c}_t^{l-1}\)을 convolutional filter layers를 통해 크기를 반으로 downsample한다. 첫 번째부터 여섯 번째 층까지의 feature channel 수는 각각 [16, 32, 64, 96, 128, 196]을 사용했다.

 

✔️ Warping layer

\({l}\)번째 층에서 두 번째 이미지의 feature를 첫 번째 이미지 쪽으로 warping 하게 되는데, 이때 \({l+1}\) 번째 층에서 가져온 optical flow를 2배로 키운 upsampled flow를 사용한다.

 

${ \mathbf{c}_w^l }( \mathbf{x} )= { \mathbf{c}_2^l}( \mathbf{x} + { \mathbf{up}_2}( \mathbf{w}^{l+1} )( \mathbf{x}) ), \tag{1}$

 

\(\mathbf{x}\)는 이미지의 픽셀 인덱스이고 \(\mathbf{up}_2(\mathbf{w}^{l+1})\)가 upsampled flow인데, 이는 pyramid의 최고 층에서는 그다음 층이 존재하지 않기 때문에 0으로 설정한다. 그리고 warping 연산과 CNN feature 및 flow 계산을 수행할 때 backpropagation을 가능하게 하기 위해서 bi-linear 보간법을 사용했다. 위와 같은 warping 방식은 물체의 모든 포인트의 움직임이 일정하지 않은 비병진 움직임에서도 기하학적인 왜곡을 보상해 줄 수 있으며, 이미지 패치를 올바른 크기로 설정할 수 있는 효과가 있다.

 

 

✔️ Cost volume layer

Cost volume은 현재 프레임의 픽셀과 일치하는 다음 프레임의 픽셀을 서로 매칭하는데 드는 "비용"을 계산한 정보이다. 이때의 "비용"을 본 논문에서는 첫 번째 이미지 feature와 warping 된 두 번째 이미지의 feature 사이의 correlation으로 정의한다. 

 

$ \mathbf{c v}^l\left(\mathrm{x}_1, \mathrm{x}_2\right)=\frac{1}{N}\left(\mathbf{c}_1^l\left(\mathrm{x}_1\right)\right)^{\top} \mathbf{c}_w^l\left(\mathrm{x}_2\right), \tag{2} $

 

\({\top}\)는 전치 연산이며, \({N}\)은 column vector \({\mathbf{c}_1^l\left(\mathrm{x}_1\right)}\)의 길이이다. \({L}\) 번째 층 pyramid에서 제한적인 \({d}\) 픽셀 범위로 부분적인 cost volume를 계산하게 된다\(\left({i.e., \left|\mathrm{x}_1-\mathrm{x}_2\right|_{\infty} \leq d}\right) \). 최상층에서 한 픽셀의 움직임은 full resolution 이미지에서 \(2^{L-1}\) 픽셀의 움직임과 동일하기 때문에 \({d}\) 값은 작게 설정한다. 3D cost volume의 차원은 \(d^2 \times{H}^l  \times{W}^l\)인데, \({H}^l\) 과 \({W}^l\)는 각각 \(l\) 번째 pyramid 층의 높이와 너비를 의미한다.

 

✔️ Optical flow estimator

여러 층의 CNN으로 구성된 Optical flow estimator은 cost volume, 첫 번째 이미지의 feature, upsampled 된 다음 층의 optical flow, 현재 층의 flow \({\mathbf{w}^l}\)를 입력으로 받는다. convolution layer의 채널 수는 모든 pyramid 층에서 동일하게 [128, 128, 96, 64, 32]을 사용한다. 단, 각 층의 estimator들은 parameter는 공유하지 않고 각자의 값을 가지며, \({l}_0\)층에 도달할 때까지 모든 층에서 반복된다. 또한 이 estimator 구조는 DenseNet connection을 함께 사용함으로써 성능을 강화될 수 있는데, 이 경우에는 이전 layer의 입력과 출력값을 현재 layer의 입력값으로 사용하게 된다. 따라서 전통적인 방식보다 더 직접적인 연결을 가짐으로써 이미지 분류 성능을 향상하는데 도움을 준다. 본 논문의 저자는 이 아이디어를 구현하여 테스트했다.

 

✔️ Context network

전통적인 flow 방법론은 주로 후처리 과정을 통해서 contextual 정보를 사용했다. 이 점에 착안해서 본 논문에서는 context-network를 사용하여, 각 pyramid 층에 맞도록 모델의 인지 범위(receptive filed) 크기를 효율적으로 늘릴 수 있게 구현했다. context-network는 이전 층과 현재 층에서 추정된 flow를 입력으로 받고, refined flow를 출력한다.

 

Context-network는 feed-forward CNN이며 dilated convolution을 기반으로 고안되었다. 총 7개의 convolution layer로 구성되어 있고, 각 layer는 \(3\times3\)의 spatial 한 kernel을 갖는다. 또한 각 layer들은 서로 다른 dilation 상수 \({k}\)를 갖는데, 이는 입력 unit이 layer 내에서 filter 되는 과정에서 수평 혹은 수직으로 \({k}\) 개만큼 떨어진 unit들만을 고려한다는 의미이다. 이러한 구조는 큰 수의 dialation 상수를 가짐으로써 더욱 넓은 인지 범위를 가지게 되지만 계산량 자체는 크게 늘어나지 않는다는 효과가 있다. 본 논문에서는 최하층부터 최상층까지 [1, 2, 4, 8, 16, 1, 1]의 dilation 상수 값을 사용했다.

 

 

✔️ Training loss

Pyramid의 각 층의 pyramid extractor와 optical flow estimator들을 아울러, 모델 전체에서 학습할 수 있는 모든 parameter의 집합을 \({\Theta}\)로 정의한다. (단, warping과 cost volume 계산에는 학습 가능한 parameter가 없음에 주의). 또한 pyramid \({l}\) 층에서 추정한 flow를 \({\mathbf{w}_{\Theta}^l}\)로, 일치하는 supervision signal을 \({\mathbf{w}_{\mathbf{GT}}^l}\)로 표기한다. 본 논문에서는 FlowNet에서 제안된 multi-scale training loss를 사용한다. 

 

$ \mathcal{L}(\Theta)=\sum_{l=l_0}^L \alpha_l \sum_{\mathrm{x}}\left|\mathbf{w}_{\Theta}^l(\mathrm{x})-\mathbf{w}_{\mathrm{GT}}^l(\mathrm{x})\right|_2+\gamma|\Theta|_2, \tag{3} $

 

\({|\cdot|}_2\)은 벡터의 \(\mathbf{L}2\)norm을 계산하는 것이고, 두번째 항은 모델의 parameter에 대한 regularization term을 의미한다. Fine-tuning을 위해서는 다음과 같이 robust한 training loss를 사용한다.

 

$ \mathcal{L}(\Theta)=\sum_{l=l_0}^L \alpha_l \sum_{\mathbf{x}}\left(\left|\mathbf{w}_{\Theta}^l(\mathrm{x})-\mathbf{w}_{\mathbf{G T}}^l(\mathbf{x})\right|+\epsilon\right)^q+\gamma|\Theta|_2 \tag{4} $

 

\({|\cdot|}\)은 \(\mathbf{L}1\)norm을 계산하는 것이고, \({q < 1}\)의 제약을 통해 outlier에 대해 더 적은 페널티를 부여하는 효과를 준다. (\(\epsilon\)은 아주 작은 상수)

 

 

+ Recent posts