Mobile Video Object Detection with Temporally-Aware Feature Maps

google
detection
singleshot-detector
video
2018
rnn

#1

Object Detection을 Online Video에 대해 효과적으로 수행하는 모델을 소개한 논문입니다.

Deep Feature Flow 등에서 처럼, 최근에 Feature Flow를 사용하는 방식이 가능성을 보여주고 있는데, 이 논문에서는 LSTM Layer를 이용하여 시간 상의 관계를 모델에 추가했습니다. 특히 Bottleneck-LSTM 의 제안으로 효율적인 성능을 이끌어낸 것이 주요한 부분입니다.

  • Online Video Detection을 위한 Unifed Architecture
  • Recurrent Layer 사용
  • Convolutional LSTM의 변형을 제안함 : Bottleneck-LSTM

Related Work & Definitions

Video를 이미지 프레임의 집합이라고 보고, V = \{ I_0, I_1, ..., I_n \} , 각 Frame 별 Detection 결과를 \{ D_0, D_1, ... , D_n \} 이라고 사용하겠습니다.

기존에는 각각의 프레임마다 Image 레벨의 Detection을 수행하고 그 결과를 모으는 것이 가장 일반적이었는데, 이는 '시간 상으로 서로 연관된 다른 프레임의 정보’를 사용하지 않는 것이므로, 비효율적이고 정보의 손실도 큽니다. 최근에는 이러한 시간 상의 관계를

  • Seq-NMS 등에서는 결과로 나온 Bounding Box 정보를 여러 프레임에서 얻어 합치거나
  • Deep Feature Flow 등에서는 이전에 얻은 Feature를 현재 프레임에 맞게 변형해서 사용하거나
  • RNN 으로 모델을 추가하는

등의 시도가 있었습니다.

이 논문에서는, 추가적인 RNN을 도입하는 부류라고 보면 됩니다. 즉, Prediction Model은

F(I_t, s_{t-1}) = (D_t, s_t)

로, s_t 는 t 프레임에서의 Hidden State Vector입니다. 즉, 현재 프레임의 이미지와 여러 프레임을 거쳐 얻어진 State Vector를 Input으로 받아, 새로운 State와 Detection 결과를 주는 것으로 생각하면 됩니다.

Architecture

기본적으로 아래의 구조입니다.

위 2가지는 각 관련 논문 리뷰를 보면 도움이 될 것 같고, 주로 Convolutional LSTM을 설명하려고 합니다. 이 논문에서는 중간 중간 Convolution Layer에 LSTM을 추가한 형태의 구조를 제안합니다. 위의 Figure2를 참조하면 됩니다. (모든 곳을 바꾸지는 않고, 실험적으로 어떤 부분의 Conv Layer을 Conv+LSTM으로 대체해야하는지 찾았다고 합니다.)

Mobilenet 에서는 \alpha 파라미터로 전체 네트워크의 Feature Map 사이즈를 줄이거나 늘리는데 사용했는데, 여기에서는 더 많은 파라미터를 도입해서, Base Network를 위한 \alpha_{base} , SSD 레이어들을 위한 \alpha_{ssd} , 그리고 LSTM 레이어를 위한 \alpha_{lstm} 으로 구분해서 파라미터 지정을 했다고 합니다.

\alpha_{base} = \alpha \\ \alpha_{ssd} = 0.5\alpha \\ \alpha_{lstm} = 0.25\alpha

Efficient Bottleneck-LSTM Layers

일반적으로 Convolutional LSTM은 아래와 같이 정의됩니다.

image

이 때 별표는 Mobilenet에서 사용된 것과 동일한 Depthwise Separable Convolution 입니다.

이 때, 이 논문에서 제안한 것은, 효과적으로 연산양을 줄이기 위해서 한번의 Feature map 계산으로 많은 연산을 대체하는 형태로 위 구조를 변형하겠다는 것입니다. 즉,

image

를 계산하고, 이를 여러 곳에서 Feature로 쓰겠다는 뜻입니다.

image

다시 말하면, f_t, i_t, o_t, c_t 등을 계산하기 위해서 여러 번의 계산 많은 Convolution을 사용하는 것이 기존의 방식이라면, 이 논문에서는 Bottleneck Gate로 불리우는 부분에서 b_t 를 한번만 계산하고 이를 사용하겠다는 뜻입니다. 위 그림에서처럼 Bottleneck Gate로 계산된 피쳐가 기존에 x_t, h_{t-1} 을 받아 Convolution 연산을 했던 많은 부분에 쓰이고 있습니다.

Training

Hard Negative Mining, Augmentation 등을 사용했고, 오버피팅을 막기 위해서 SSD Network만을 학습시킨 후 LSTM을 SSD Layer들에 추가해 추가 학습을 수행했다고 합니다 .

Results

Ablation Study를 간단하게 소개하면…

  • LSTM을 Feature Map에 다양하게 추가하면서 성능이 올라감
  • Mobilenet-SSD 대비해서 비슷한 연산양을 가정할 때 4% 수준의 성능 향상
  • GRU보다는 LSTM이 성능이 더 좋음
  • \alpha_{lstm} = 0.25\alpha 보다 낮아지면 성능이 떨어지기 시작함

Imagenet VID 에서 다른 네트워크 대비 우수한 성능을 보입니다.

image

또한, 모바일 장비에서, realtime의 범주에 속하는 속도를 보여줍니다.

image


'Object Detection' Outline