[AAAI 2021] Weakly-supervised Temporal Action Localization by Uncertainty Modeling

안녕하세요. 오늘 제가 리뷰할 논문은 21년도 AAAI에 게재된 ‘Weakly-supervised Temporal Action Localization by Uncertainty Modeling’ 이라는 논문입니다.

이전에 작성한 리뷰에서 제가 비디오 분야의 Weakly-supervised Temporal Action Localization (WTAL) task에 관심을 갖게 되어 앞으로 해당 task의 논문을 순차적으로 리뷰할 예정이라고 말씀드렸었는데, 오늘도 그의 일환으로 21년도에 나온 관련 논문을 리뷰하고자 합니다.

TAL task는 ‘Action’ 구간과 Action이 아닌 ‘background’ 구간이 공존하는 비디오 내에서 Action의 구간을 찾고, 그것이 어떤 Action인지 분류까지 해야 하는 난이도 높은 task입니다.

이번 논문에서는 annotation으로 아래 표와 같이 시간 구간의 정보 없이, 이 비디오에 어디인지는 모르겠지만 특정 action이 존재한다는 정보만을 이용하여 문제를 해결해야 합니다.

우선 이 논문은 제가 직전 리뷰에서 작성한 Background Suppression Network의 저자와 동일합니다.
직전 리뷰의 컨셉에 대해 간략하게 설명드리자면 Background Suppression이라는 논문의 제목에서도 알 수 있듯, 저자는 WTAL task에서 action을 잘 찾아내기 위해 action의 특성을 파악하는 것에만 집중하던 기존 연구 방식에서 한 발 더 나아가 파악한 action의 특성을 이용해 background를 제거할 수 있는 모델을 설계하였습니다.

저자는 WTAL task에서 background를 잘 처리한다면 좋은 성능을 낼 수 있다는 점에 주안을 두고 있었습니다.
하지만 background를 어떻게 처리할지에 앞서 background가 어디인지를 파악하는 것이 더 우선일텐데요, 이번 논문은 이를 위해 어떻게 하면 background를 더욱 명시적으로 모델링할 수 있을까? 에 대한 고민에서 시작되었다고 볼 수 있습니다.

그럼 본격적으로 논문을 살펴보겠습니다.

1. Introduction


저자는 action을 잘 찾아내기 위해 반대로 background를 잘 구별하는 능력을 갖추는 것이 중요하다고 말합니다. 만약 실제로는 background에 해당하는 프레임이 action으로 분류된다면 classification과 localization 성능 하락으로 이어질 수 밖에 없기 때문입니다.

이를 극복하기 위해 background를 명시적으로 모델링하려는 이전의 연구들이 있었습니다. 비디오 내에서 상대적으로 정적인 프레임들을 모아 pseudo-background로 지정하여 학습을 수행하는 방식도 있었고, 전체 action 클래스에 “background” 클래스를 추가하여 각 프레임이 “background”로도 분류될 수 있도록 설계하는 방식도 있었습니다.

첫 번째 방식을 사용하는 경우 아래 그림의 (a)와 같이 선수들이 세레모니를 하는 장면은 background에 해당하지만 굉장히 동적이기 때문에 이러한 장면은 제대로 background로 분류하지 못하게 될 것입니다.
두 번째 방식의 경우 아래 그림의 (b)에서 같은 비디오의 background이지만 시각적인 공통점이 거의 없기 때문에 이들을 하나의 클래스로 묶어버린다면 효과적인 학습과 inference를 기대하기 힘들다는 단점이 존재합니다. (참고로 (b)의 파란색 박스도 스윙을 준비하는 자세이기 때문에 background에 해당합니다.)

이러한 비일관성에도 불구하고 잘 모델링하기 위해 저자는 비디오의 background를 새로운 관점으로 바라봅니다.

편의 상 지금 소개드리는 논문의 방법론인 Uncertainty Modeling을 UM으로 줄여 부르겠습니다.
UM에서는 비디오의 각 프레임이 out-of-distribution sample일 확률(=uncertainty)을 살펴보고, 그러한 확률이 높으면 background로 간주하고 이후의 처리를 해줍니다. 그렇다면 uncertainty는 무엇을 기준으로 측정할까요?

저자는 비디오를 임베딩하여 얻은 feature의 크기(magnitude)를 이용해 uncertainty를 측정합니다. 관찰을 통해 actionfeature는 background segment feature의 크기보다 상대적으로 크다는 것을 직접 알아냈다고 하는데, 아무래도 action을 표현하려면 그 부분의 feature logit들이 커질 수 밖에 없기 때문이라고 합니다.
이것을 바탕으로 어떤 segment feature의 크기를 기준 삼아 segment가 action일 확률을 계산하게 됩니다. 이 확률이 높으면 action segment, 낮으면 background segment로 간주하는 것입니다.

하지만 action과 background feature의 분포는 여전히 비슷하기 때문에 크기의 차이만을 사용하는 것은 좀 부족하다고 말합니다. 분포가 비슷하기 때문이라는 말이 처음에 잘 이해가 가지 않았는데, 아래 그림의 (a)를 보고 이해하였습니다. action과 background의 feature 분포를 시각화 한 것인데요, 물론 action feature가 전반적으로 큰 값들을 가지는 것을 볼 수 있지만 저자는 모델이 이 정도의 차이를 보고 무언가를 학습하기에는 부족하다고 판단했던 것 같습니다.

이를 보완하기 위해 학습 과정에서 action segment feature는 크기가 더 커지고, background segment feature는 크기가 더 작아지는 방향으로 학습하게 됩니다. 따라서 위 그림의 (b)는 학습된 UM 모델로 추출한 각 feature인데, 이를 보시면 둘의 전반적인 값 차이가 학습 이전보다 극명해진 것을 확인하실 수 있습니다.

UM의 가장 핵심적인 아이디어 한 가지에 대해 먼저 소개해드렸습니다.
계속해서 이에 대해 더 자세히 알아보고, 세부적인 아이디어들은 무엇이 있는지 살펴보도록 하겠습니다.

2. Method


2.1 Main Pipeline

이 부분은 비디오로부터 feature를 추출하고 CAS를 생성하는 과정으로 여타 WTAL task와 비슷한 흐름입니다.
이에 대해 잘 아시는 분들은 2.2 Uncertainty Modeling 으로 넘어가셔도 좋을 것 같습니다.

Feature extraction

학습과 inference에 사용할 raw untrimmed video는 길이가 매우 길기 때문에 모든 프레임을 메모리에 저장하기는 현실적으로 힘듭니다. 또한 비디오마다 길이가 서로 다르기 때문에 이에 대해서도 신경 써줘야 합니다. 먼저 길이가 L_nn번째 비디오 v_n = {\{s_{n, l}\}}_{l=1}^{L_n}로 표현할 수 있습니다. 이 때 s는 비디오에서 16프레임씩 겹치지 않게 가져온 프레임 덩어리를 의미합니다. L_n은 비디오마다 다르기 때문에 각 비디오가 각자 다른 개수의 segment로 표현되는데, 이 중에서 고정적인 T개의 segment만 샘플링하여 사용합니다. 따라서 하나의 비디오는 T개의 segment로 이루어지도록 표현할 수 있고 {\{\tilde{s}_{n, t}\}}_{t=1}^{T}와 같이 나타냅니다. 이렇게 샘플링 한 비디오를 RGB, Optical flow feature extractor에 각각 태워 x_{n, t}^{RGB} \in \mathbb{R}^{D \times T}, x_{n, t}^{flow} \in \mathbb{R}^{D \times T}를 추출할 수 있고 둘을 concat 하여 얻은 x_{n, t} \in \mathbb{R}^{2D \times T}를 하나의 video 표현으로 사용하게 됩니다.

Feature embedding

위에서 얻은 feature는 한 번의 embedding 과정을 거칩니다. embedding은 단순히 1D Convolution과 Activation funciton 연산으로 이루어집니다. Embedding 후 output feature의 차원도 input feature와 같고 embedded feature F_{n} \in \mathbb{R}^{2D \times T}와 같이 표현할 수 있습니다.

Segment-level classification – Action score aggregation

앞선 과정에서 얻은 F_n으로부터 segment-level class score를 얻어야 합니다. 다시 말해 Class Activation Sequence(CAS)를 얻고, 그로부터 video-level label을 과정입니다. F_n을 linear classifier에 태워 CAS \mathcal{A_n} \in \mathbb{R}^{C \times T}를 만들어 냅니다. C는 전체 클래스의 개수를 의미합니다. 얻은 CAS에 top-k mean pooling을 적용해 video-level class score을 얻어냅니다. 이 과정은 제 이전 리뷰와 임근택 연구원님의 WTAL 관련 리뷰에서도 그 내용을 자세히 확인하실 수 있으니 넘어가도록 하겠습니다. 대략적인 상황은 아래 그림과 같습니다. (실제 코드 상에서의 video-level class score는 softmax를 취하여 총합이 1인 형태로 존재합니다.)

2.2 Uncertainty Modeling

2.1까지는 그 당시 WTAL task 방법론들에서 흔하게 진행되는 과정이고 여기서부터 본격적으로 UM의 contribution에 해당합니다. 여기까지의 과정을 거쳐 얻은 video-level class score는 아직 background modeling과는 거리가 멀다고 볼 수 있습니다.

UM에서는 segment \tilde{s}_{n, t}가 action class c에 해당할 확률을 chain rule을 이용해 아래와 같이 두 가지 term(in-distribution action prob., uncertainty)으로 표현합니다.

d\tilde{s}_{n, t}가 어떤 action이든 action에 해당하면 1, 그렇지 않으면 0을 나타냅니다.

Uncertainty formulation

chain rule을 이용한 확률 식에서, P(y_{n, t} = c | d = 1, \tilde{s}_{n, t})는 CAS \mathcal{A}_{c, t}로 볼 수 있고 이는 segment \tilde{s}_{n, t}가 클래스 c를 가질 확률을 의미합니다.
그리고 P(d = 1 | \tilde{s}_{n, t})는 Introduction에서 설명한 feature 크기에 따른 uncertainty로부터 얻을 수 있습니다.

\tilde{s}_{n, t}가 action일 확률 P(d = 1 | \tilde{s}_{n, t})는 사전에 정의한 feature의 최대 크기 m과 feature의 크기에 대한 식으로 설정해줍니다. 이는 0~1 사이의 값으로 산출되고 feature의 크기가 크면 클수록, action일 확률이 높다는 것을 의미합니다. feature의 크기는 L2 norm을 의미합니다.

둘을 곱하여 얻은 P(y_{n, t} = c | \tilde{s}_{n, t})가 최종 video-level class score로 사용됩니다.

사실 코드를 살펴보니 위와 같이 chain rule을 이용해 특정 segment의 score를 계산하는 방식은 inference 시에만 사용되고, 학습 과정에서는 단순히 둘 중 첫번째 term인 P(y_{n, t} = c | d = 1, \tilde{s}_{n, t})만을 사용하는 것을 알 수 있었습니다.

Uncertainty modeling via multiple instance learning

학습에 사용할 비디오의 대표 pseudo action과 pseudo background segment를 선정합니다. 이번에도 마찬가지로 feature의 크기를 기준으로 전체 segment 중 top k^{act}개를 pseudo action segment로 지정하고, 반대로 bottom k^{bkg}개를 pseudo background segment로 지정합니다. 이렇게 지정된 segment들만 학습에 사용되고, 나머지는 사용되지 않습니다. 사용되지 않는 segment들은 Method 그림에서 회색 동그라미, non-selected features로 나타나 있는 것을 확인하실 수 있습니다.

2.3 Training Objectives

이번 절에서는 loss에 대해 설명합니다.

UM에서의 loss는 총 3가지 term으로 이루어집니다.

\mathcal{L}_{total} = \mathcal{L}_{cls} + \alpha\mathcal{L}_{um} + \beta\mathcal{L}_{be}

Video-level classification loss

첫 번째 term인 \mathcal{L}_{cls}에 대한 설명입니다. 이 loss는 WTAL task에서 기본적으로 적용되는데, 위에서 설명드린 Segment-level classification – Action score aggregation 과정에서 얻은 video-level class score와 저희에게 주어진 GT label과의 BCE loss에 해당합니다. GT label은 normalize하여 사용하는데, 만약 데이터셋 전체의 action class가 5개 이고 비디오가 0번, 2번 클래스를 가지는 것이 주어졌다면 GT label은 [0.5, 0, 0.5, 0, 0]으로 loss 계산에 적용됩니다.

Uncertainty modeling loss

두 번째 term \mathcal{L}_{um}은 Introduction에서 설명 드렸듯 pseudo action으로 지정된 segment의 feature 크기는 더 커지고, pseudo background로 지정된 segment의 feature 크기(L2 norm)는 더 작아지는 방향으로 학습되게 하는 loss입니다. 수식으로 보면 아래와 같습니다.

\mathcal{L}_{um} = \cfrac{1}{N}\displaystyle\sum_{n=1}^{N}(max(0, m - ||f_{n}^{act}||) + ||f_{n}^{bkg}||)^2

pseudo action segment의 feature 크기는 사전에 하이퍼 파라미터로 지정한 feature의 최대 크기 m에 가까워 지도록, pseudo background segment의 feature 크기는 0에 가까워지도록 학습합니다.

Background entropy loss

마지막 loss \mathcal{L}_{be}는 background entropy loss를 의미합니다. uncertainty를 모델링 하여 지정한pseudo background segment들을 조금 더 적극적으로 학습에 사용하기 위해 저자는 해당 segment의 특정 action class score가 커지지 않도록 하는 loss를 설정해줍니다. 계속해서 background가 action으로 잘못 분류되는 현상을 막기 위해 지금까지 모델을 설계 해왔으니, 논리적으로도 자연스럽다는 생각이 듭니다. 아무튼 수식은 아래와 같습니다.

\mathcal{L}_{be} = \cfrac{1}{NC}\displaystyle\sum_{n=1}^{N}\displaystyle\sum_{c=1}^{C}-log(p_{c}(\tilde{s}_{n}^{bkg}))

코드를 살펴보면 위와 같은데, 만약 클래스가 5개인 경우 pseudo background segment로부터 뽑아 낸 5개의 score를 정규화된 [0.2, 0.2, 0.2, 0.2, 0.2]와 loss를 계산하여 특정 action class의 점수가 높아지는 현상을 방지해줍니다.

2.4 Inference

Inference는 Method의 main pipeline을 따라갑니다. 비디오를 입력으로 받아 CAS를 생성하는데, 여기서 학습 과정과 다른 점이 존재합니다. 단순히 CAS module로부터 얻은 CAS(\mathcal{A})를 aggregation하여 video-level class score로 사용하는 것이 아니라, \mathcal{A}와 ‘Uncertainty formulation’ 절에서 소개해드린 점수와 곱하여(chain rule) \mathcal{A'}을 생성합니다. 이후 \mathcal{A'}의 score들을 aggregation하여 video-level class score을 얻습니다. 이렇게 얻은 score에 thresholding을 하여 localization 할 class를 골라내고, \mathcal{A'}에서 다시 해당하는 class들의 segment score를 보고 thresholding을 거쳐 점수가 높은 segment들을 grouping 합니다. 마지막으로 outer-inner score를 적용해 NMS를 거쳐 최종 proposal을 만들어냅니다.

3. Experiments


Benchmark

UM의 THUMOS 14′, ActivityNet 1.3 데이터셋에 대한 정량적 성능 비교와 Ablation study만 살펴보고 글을 마치도록 하겠습니다.

THUMOS 14′
ActivityNet 1.3

두 데이터셋 모두에서 UM이 이전 방법론들과 꽤나 큰 차이로 SOTA를 달성하였습니다. 하지만 아직 Fully-supervised 방법론과는 성능이 크게 차이나는 것으로 보입니다.
저자의 직전 논문인 ‘BaS-Net’이 위에서 background에 해당하는 추가 클래스를 설정하여 학습하는 방식이었는데 UM에서의 background 모델링 방식이 훨씬 더 효과적이었음을 알 수 있습니다. 저자도 다른 방법론들과의 성능 차이를 분석적으로 적어두지는 않았네요.
추가로 THUMOS 데이터셋 표에 EM-MIL이라는 방법론이 높은 기준의 IoU에서 좋은 성능을 보여주는데, 어떤 특징을 가지는지 살펴보는 것도 도움이 될 것 같습니다.

Ablation Study

다음은 inference 시 어떤 final score를 사용할지와 loss의 사용 여부에 따른 THUMOS 데이터셋에서의 ablation study 성능입니다.

Score의 softmax / fusion은 앞서 inference 부분을 설명 드릴 때, CAS로 \mathcal{A}\mathcal{A'}의 차이로 이해하시면 됩니다. chain rule을 통해 uncertainty를 적용하는 것만으로도 평균 mAP가 거의 10% 오른는 것을 확인할 수 있습니다. 또한 score fusion 방식과 action feature는 더 크게, background feature는 더 작게 만들어주는\mathcal{L}_{um}의 시너지 효과도 확실히 존재한다는 것을 예상해볼 수 있습니다.

저자가 비디오의 background 모델링과 처리 방식에 대해 고민하던 점을 정량적 관찰과 분석을 통해 해결 해낸 점이 굉장히 인상 깊은 논문이었습니다. 또한 모델의 구조가 복잡하지 않으면서도 핵심만을 파고들어 성능을 올렸다는 점도 대단하다는 생각이 듭니다.

리뷰 마치겠습니다.

Author: 김 현우

2 thoughts on “[AAAI 2021] Weakly-supervised Temporal Action Localization by Uncertainty Modeling

  1. 리뷰 잘 읽었습니다.

    저도 이 논문을 읽으면서 가졌던 의문이 하나 있는데 그 부분을 질문드리겠습니다.

    결국 Background entropy Loss의 역할이 무엇이라고 생각하는지 궁금합니다. 확률 분포를 유니폼하게 만드는 것까지는 목적을 알겠지만 결국 Loss를 통해 그 분포가 1에 근접하는 constant로 수렴할 것 같아 의문이 들었습니다. 이부분에 대해서 어떻게 생각하시나요?

    1. 저는 사실 수식만으로 잘 납득이 안가 코드를 보고 이해하였습니다..
      코드와는 다르게 수식에서는 말씀해주신대로 pseudo background segment(k_bkg개)의 평균 softmax score가 1로 수렴하도록 loss 식이 표현되어있는데, 이 부분에 대해 저자 깃허브 이슈를 남기거나 메일을 보내 확인해보도록 하겠습니다.
      혹시 해결되신 질문일 경우 알려주시면 감사하겠습니다.

답글 남기기

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