논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

Deep Feature Flow for Video Recognition

Problem

  • CNN을 이용한 image recognition 분야의 발전은 video domain으로의 확장으로 이어지게 되었다. 특히 빠르고 정확한 video recognition은 autonomous driving이나 video surveillance 분야에서 매우 중요한 가치를 지니고 있다.
  • 하지만 image recogntion 네트워크를 모든 video 프레임에 각각 적용하기에는 너무 많은 계산량이 필요로 한다.

Essence

  • 최근의 CNN들은 대부분의 레이어들의 convolutional로 구성되어있고 이것들의 대부분의 계산을 차지한다.
  • 입력된 이미지와 Intermediate convolutional feature map은 같은 규모의 크기를 가지며, 익히 알려진대로 연속된 video frame에서는 이미지 content의 변화가 천천히 이루어지므로 이에 따라 middle부터 high level semantic feature 간의 correspondence가 유지된다.
  • 따라서 인접 프레임으로부터 spatial warping을 통해 더 적은 연산으로 feature를 propagate할 수 있다.
  • 논문에서는 deep feature flow를 제안하고, flow field를 이용하여 key frame으로부터 다른 frame으로의 deep feature map을 propagate하는 방법을 제안한다.
  • Propagation된 feature는 원래의 feature와 비슷하게 동작한다.
  • Flow estimation와 feature propagation에 필요한 시간은 feature를 직접 계산하는 것보다 훨신 빠르고, 모든 부분들이 end-to-end로 학습된다.

Detail

Deep Feature Flow Inference

  • 기존의 CNN \mathcal{N}의 구조를 두 부분으로 나누어 intemediate feature map \mathbf{f}를 생성하는 feature network \mathcal{N}_{feat}과 특정한 task를 수행하는 task network \mathcal{N}_{task}로 구분하였다.
  • 연속된 video frame들은 매우 비슷하기 때문에 feature map 또한 비슷하게 생성된다. 따라서 계산량을 줄이기 위해 feature network는 key frame에 대해서만 수행하고 non-key frame에 대해서는 key frame의 feature map으로부터 propagation한 feature map을 사용하고자 하였다.
  • Deep convoluional layer의 feature map은 이미지에서 지역적인 semantic concept을 encode하므로 image warping과 같은 방식으로 spatial correspondence를 이용하여 feature map을 propagation이 가능해진다.
  • Flow estimation \mathcal{F}(\mathbf{I}_k, \mathbf{I}_i)으로부터 계산된 flow field를 \mathbf{M}_{i \rightarrow k}이라고 하자.
  • 이미지 \mathbf{I}_i의 한 위치 \mathbf{p}의 대응되는 이미지 \mathbf{I}_k의 위치는 \mathbf{p} + \delta \mathbf{p}, \delta \mathbf{p} = \mathbf{M}_{i \rightarrow k}(\mathbf{p})이다.
  • 이 대응되는 위치를 이용하여 feature warping은 bilinear interpolation을 통해 이루어진다.
  • Flow estimation은 error를 포함하고 있기 때문에, flow의 amplitude를 feature map와 같은 크기와 채널크기를 가지는 scale field \mathbf{S}_{i \rightarrow k}를 이용하여 변화시켜준다.
  • 여기서 scale field는 두 프레임을 입력으로 하는 scale function \mathcal{S}을 통해 계산된다.
  • 정리하자면 feature propagation은 bilinear interpolation을 먼저 적용한 뒤, 그 결과에 scale field를 element-wise하게 곱하는 것으로 계산된다. 수식으로 표현하면 다음과 같다.

\mathbf{f}_i = \mathcal{W}(\mathbf{f}_k, \mathbf{M}_{i \rightarrow k}, \mathbf{S}_{i \rightarrow k})

  • Flow estimation을 기존의 SIFT-Flow와 같은 low-level 방법을 이용할 수도 있는데, 이 때에는 flow function의 학습은 하지 않고 scale function은 모두 1로 사용하면 된다.

Deep Feature Flow Training

  • 기존의 flow function은 low level 이미지 픽셀 수준에 적당한 방법이기 때문에 여기서는 CNN을 이용하여 flow field를 별도로 estimation하게 하고 jointly하게 end-to-end로 학습하도록 하였다.
  • 프레임 차이가 9개 이내의 프레임 쌍을 샘플링하여, feature network가 \mathbf{I}_k에 대해 feature map을 생성하고, flow network가 flow field와 scale field를 estimation한 뒤, feature map \mathbf{f}_k를 propagation하여 \mathbf{f}_i를 생성하였다. 다음 task network를 \mathbf{f}_i에 적용한 뒤 그 결과를 loss로 하여 학습을 진행하였다.

  • Flow network는 feature network보다 매우 빠르도록 구성하였고, Flying Charis dataset으로 미리 pretrain한 뒤 사용하였다.

  • 마지막 레이어는 flow를 estimation 할 뿐 아니라 채널을 하나 늘려 scale function으로 사용하도록 하였다.


Add a Comment Trackback