[ECCV 2020] MotionSqueeze: Neural Motion Feature Learning for Video Understanding

안녕하세요. 오늘은 지난 리뷰[WACV-2023] Motion Aware Self-Supervision for Generic Event Boundary Detection의 AS 시간입니다. 지난 리뷰에서 잘 다뤄지지 않았던 부분이 그래서 어떻게 Flow 없이 motion 정보를 활용하는 것에 대한 내용이었는데요. 해당 논문에서 원리를 설명하지는 않아서 이 논문을 읽게 되었습니다.

Introduction

비디오에서 가장 뚜렷한 특징이 뭐가 있을까요? 주로 Motion이 답변으로 제시되는데요. 그래서 비디오를 활용할 때, (특히 action 관련 task)에서는 주로 optical flow를 많이 활용합니다. 문제는 이 optical flow를 계산하기 위해서는 시간도 많이 들고, 기존 모델 말고 다른 모델이 필요하다는 문제점이 항상 제시되어 왔습니다. 이러한 문제점들을 해결하기 위해서 spatio-temporal convolution을 통해서 움직임을 잘 게산해보려는 노력들이 있었는데, 잘 안되었다고 하네요.

그래서 본 논문에서는 motion estimation이 가능한 E2E 학습 모듈, MotionSqueeze Module(이하 MS 모듈)을 통해서 이 문제를 해결했다고 합니다. 그림 1이 그 성능을 보여주는데요. MSNet은 우리가 알고있는 Resnet 백본에 여기서 제안하는 모듈을 붙인 네트워크인데요. 기존의 flow를 사용하는 모델보다 더 빠른 속도에 더 높은 정확도를 보여주는 것을 확인할 수 있습니다.

Proposed approach

그럼 본격적으로 본 모듈에 대해서 알아봅시다. 일단 기본적으로 비디오에서 움직임을 계산하기 위해서는 앞/뒤 프레임이 필요합니다. 그래서 모델이 T개의 프레임을 가진 비디오를 입력으로 받습니다. 단, MS 모듈이 단일 프레임을 입력으로 받지는 않는다는 점을 기억하고 넘어갑시다.

MotionSqueeze Module

MS module은 motion feature extractor로 정의할 수 있습니다. 그림 2를 보면 대략적인 구조를 확인할 수 있는데요. 기존의 백본의 중간에 이렇게 끼워넣는다 정도로 생각하면 될 것 같습니다. 그럼 이 끼워 넣는 것에서 어떻게 motion 정보를 추출하는가… 그건 3단계(Correlation computation / Displacement estimation / Feature transformation)로 나눠집니다.

Correlation computation

Feature에 대한 notation을 잠깐 짚고 넘어갑시다. t번째 feature를 F^{(t)}라고 할때, 이 단계에서는 F^{(t)}F^{(t+1)}를 입력으로 correlation을 계산합니다. 이때 feature의 shape가 H*W*C인데, 여기서 C끼리의 차이를 계산하고, feature에서 C의 위치를 F_x라고 부릅니다.

P는 displacement라고 할때 그럼 (1)번 수식을 이해하는데 필요한 notation을 다 알게 되었습니다. 즉, t번째 feature의 특정 위치와 t+1번째 feature의 특정 구역(p의 크기만큼 따져보면 구역이 됩니다)의 행렬곱을 통해서 correlation을 계산하는 것을 알 수 있습니다. 이렇게 설명하면 되게 복잡하게 느껴지실텐데요. 단순하게 보면 p만큼의 크기를 가지는 1×1 convolution 연산이라고도 보면 좋을 것 같습니다. (참고로 p는 15로 설정해서 쓴다고 합니다.)

Displacement estimation

다음 단계는 motion 정보의 변위를 측정하는 단계입니다. 미분 가능하지 않은 방법으로 이 방법을 수행해보면 단순하게 \argmax_p s(x,p,t)와 같이 계산하는 영역에서 correlation이 최대값인 x의 위치를 사용하는 방식이 있습니다. (이 부분은 t와 t+1에서 픽셀 매칭을 했을때 유사도가 제일 높은 픽셀이 움직인 위치라고 볼 수 있다는 부분입니다.) 하지만 학습을 하려면 가중치가 흘러야하는데 미분이 안되면 E2E로 학습시킬 수 없겠죠? 따라서 여기서는 soft-argmax라는 방법을 이용해서, 가중 평균을 사용해서 변위를 추정합니다.

[수식 2]가 바로 이 soft-argmax라는 방법입니다. Softmax를 모르시는 연구원님은 없을 것 같아서 여기 설명은 넘어가고, 이 방법의 문제점이 또 있습니다. 특정 포인트를 고르는게 아니고, 영역에서 softmax값 만큼 가중치를 주고 계산을 하다보니 outlier에 대한 문제가 있다고 합니다.

그래서 이 correlation 값에 2D Gaussian kernel를 적용해서 아웃라이어들을 마스킹 해주는 방식을 이용합니다. [수식 4]번이 가우시안 필터를 어떻게 줄지에 대한 수식이고, [수식 3]번이 가우시안 필터를 적용한 soft-argmax 수식이 됩니다. 특별한건 없는데, 수식은 1D 가우시안 필터같은데… 왜 2D인지는 모르겠습니다. 아무튼 이렇게 계산하는 값이 displacement 값이 되는데요. 여기서는 추가적인 정보를 하나 더 계산합니다.

correlation의 max pooling을 적용해서 correlation의 confidence map을 계산하는데요. 이건 이제 auxiliary motion information으로 활용을 해서 displacement의 outlier를 찾거나, 모션 정보 학습하는데 추가적으로 활용을 합니다. 최종적으로 이 단계에서는 2채널의 displacement map과 1채널의 confidence map이 생성됩니다. 채널축으로 concat 해서 3채널로 다시 만들어줍니다.

Feature transformation

마지막 단계는 displacement tensor D^{(t)}를 motion feature M^{(t)}로 바꿔주는 과정입니다. 이 과정을 보기전에 [그림 3]의 모델 구조만 보면 설명이 다 되서, 그림을 잠깐 보면 마지막 단계에서는 D^{(t)}에 4개의 depth-wise separable convolution layer를 태우면 끝입니다. 이제 이 레이어들이 아까 계산한 변위와 confidence를 학습해서 motion feature를 뽑아준다고 보면 됩니다.

MotionSqueeze network (MSNet)

모듈에 대한 설명은 끝났고, 이 단계에서는 Resnet 백본에 이 모듈을 어떻게 끼워넣을 수 있는지에 대해 설명합니다. (Resnet에만 가능한건 아니고 모든 백본에 넣을 수 있다고 하네요.) 우선 Resnet의 Residual block마다 TSM이라는 모듈을 넣습니다. 이 TSM은 Temporal shift module로, 2D conv 연산을 수행하기 전에 feature의 channel의 일부를 temporal한 축에 따라 옮기는 형식으로 2D인데 3D conv의 효과를 얻을 수 있게하는방법론이라고 합니다.

Resnet 백본의 세번째 stage에 MS module을 끼워넣고, 계산한 motion feature를 element-wise addition 해줍니다. 이렇게 간단하게 이 모듈을 여러 백본에 붙일 수 있다고 하네요.

Experiments

[표 1]은 기존의 SOTA 방법론과의 비교입니다. 주목해야할 부분은 FLOPS와 성능입니다. 기존의 optical flow를 활용하는 방법론이 체크표시된 방법론들인데요. 아무래도 two-stream 기반이다 보니 FLOPS가 높고 성능도 높은 것을 볼 수 있습니다. 이와 대응되는 방법론이 E_n이 붙어있는 MSNet인데요. 이건 16프레임 / 8프레임 간격으로 계산한 두 모델을 앙상블한 방법론인데요. 조금 더 빠르고, 높은 성능을 보이는 것을 볼 수 있습니다. 그리고 굳이 이렇게 앙상블 하지 않을 경우에는 훨씬 빠르고, 비슷한 성능을 보입니다.

[표 2]는 motion representation을 활용한다는 방법론들과의 비교입니다. 여기서도 비슷한 경향성을 확인할 수 있는데요. MSNet이 optical flow를 활용하는 방법론들 보다 훨씬 빠르고 비슷한 성능을 가지고, Flow만 쓰거나 RGB만 쓰는 방법론에 비해서는 빠르거나, 성능이 더 높은 것을 확인할 수 있습니다. 특히 비교군으로 맨 위의 ResNet50과 R(2+1)D의 성능을 좀 비교해서 보면 논문에서 TSM과 MS module을 잘 결합하여 motion feature를 추출한 것 같습니다.

Abalation도 더 많은데, 모델 ablation은 이제 관심이 있으신 분들이 찾아보면서 보는게 좋을 것 같습니다. 리뷰에서 다뤄볼만한 부분으로는 MS module이 정말 여러 백본에 적용이 가능한가에 대한 실험으로 [그림 5]를 확인하면 되고, 다른 방법론이 아니라, 좀 더 직접적인 Two-stream과의 비교는 [표 6]을 확인하면 됩니다. Optical flow 자체가 flow를 여러개 쌓아서 사용하기 때문에, 공정한 비교를 보려면 “8+(8X1)”을 봐야한다고 하네요.

마지막으로는 displacement map과 confidence map에 대한 정량적인 결과인데요. Optical flow로 뽑은 것 같이 움직임이 있는 영역을 잘 추출한 것을 볼 수 있습니다.

Author: 광진 이

4 thoughts on “[ECCV 2020] MotionSqueeze: Neural Motion Feature Learning for Video Understanding

  1. 리뷰 잘 읽었습니다.

    한가지 궁금한 점이 correlation map에다가 soft-argmax를 취한다고 하셨는데, softmax도 아니고 soft-argmax는 뭔가요?? softmax를 취한 다음에 argmax를 연달아서 취한 것을 soft-argmax라고 명칭하는 것인가요?

    1. 아뇨 argmax를 하게되면 미분이 안되니까 argmax는 안하고. 음… softmax 값을 weight로 가지는 weight sum? 정도로 생각하면

      컨셉 자체가 미분 가능해야해서 argmax를 어떻게 뺄 수 있을까의 문제라서 argmax를 하는 것은 아니고요. 쉽게 생각하면 그냥 softmax 값을 weight로 가지는 sum pooling이라고 보면 될 것 같습니다.

  2. 안녕하세요 좋은 리뷰 감사합니다.

    리뷰에서 언급해주신 displacement의 outlier는 어떤 상황에 발생할 수 있는건가요?

    그리고 confidence map이 displacement의 outlier를 찾거나, 모션 정보 학습하는데 추가적으로 활용된다고 해주셨는데, outlier를 찾아내는 별도의 과정이 있는게 아니라 뒤 conv layer를 통과하며 얻을 수 있는 효과를 말씀하신 건가요?

    1. 우선 Displacement의 outlier 같은 경우에는 변화량을 계산하기 위해서는 어디서 어디까지 움직였는지를 알아야 계산을 하겠죠? Action이 좀 격하거나 배경이 밋밋하다고 생각하면 정해진 범위 내에 대응점이 없을 수도 있는데, 이 경우에 outlier가 발생할 수 있을 것 같습니다.

      뒤의 질문은 그게 맞습니다. 따로 추가적인 연산을 해준다기 보다는, 서로 다른 정보를 채널축으로 합쳐 conv layer에 던져서 모델이 학습하기를 기대하는 방향입니다.

광진 이에 답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다