안녕하세요, 오늘 X-Review는 Weakly-supervised Temporal Action Localization(WTAL) task 관련 논문을 가져왔습니다. 해당 논문은 2021년도 AAAI에 게재되었고, 제목은 ‘Weakly Supervised Temporal Action Localization Through Learning Explicit Subspaces for Action and Context’ 입니다.
WTAL task에 대해서는 이제 다들 아실것으로 생각되니 task 설명은 생략하고 바로 논문으로 넘어가겠습니다.
1. Introduction
저자가 해결하고자 하는 문제점은 예전부터 WTAL 연구에서 거론되었던 부분입니다.
WTAL에서는 video-level label만을 이용합니다. 다시 말해 temporal annotation 없이 action의 구간을 예측해야 합니다. 또한 WTAL에서 지금까지도 사용되는 video feature는 “Action Recognition(classification)” 분야의 trimmed video로 사전학습된 backbone network에서 추출됩니다.
WTAL에서는 action과 background 구간이 공존하는 untrimmed video를 보고 action 구간을 골라내는 능력을 학습해야 합니다. 하지만 classification task로 사전학습된 backbone network에서 추출한 feature는, 상대적으로 temporal localization task와는 맞지 않다고 볼 수 있습니다.
이러한 단점을 가진 feature는 실제로 action 구간과 spatial, temporal 관점에서 굉장히 유사한 context snippet들을 제대로 구분해내지 못해 localization 성능에 걸림돌이 된다는 문제가 기존 연구들에서도 계속 언급되었었습니다.
저자는 이 문제를 해결하고자 했고, 이를 action-context confusion이라고 칭하고 있습니다. 모델이 context 구간을 action 구간으로 혼동하여 실제 GT에 비해 조금씩 짧거나 긴 예측들을 만들어 내는 문제를 해결하고자 한 것입니다.
그렇다면 ‘context’가 무엇인지 짚고 넘어가겠습니다. Context 예시로 그림의 왼쪽 하단을 보시면 되는데요, “Baseball Pitch” action을 포함한 video에서 실제 GT는 4개의 프레임 중 빨간 박스가 쳐진 가운데 2개의 frame입니다. 하지만 맨 첫번째와 마지막 프레임을 보면 action에는 해당하지 않지만 시각적으로 보았을 때 action 구간과 동일하게 배경은 야구장이고, 선수들이 서 있는 모습으로 보아 action과 굉장히 혼동하기 쉬워보입니다.
Feature 자체가 temporal localization에 적합하지 않다는 문제도 있지만, 기존 연구들에서는 CAS를 활용하여 video-level classifier를 학습시켜 WTAL task를 수행해왔습니다. 이런 학습 방식은 아예 action과 관련 없는 irrelevant background들은 잘 구별하더라도 앞서 언급한 context와 action은 embedding space 상에서 제대로 구별하지 못하는 문제가 발생합니다.
왜냐하면 기존 연구들의 학습은 ‘localization by classification’ 방식으로 video 내 “Baseball Pitch” action의 존재 여부를 분류할 때 각 snippet이 분류에 얼마나 큰 역할을 하는지에 따라 localization을 수행해왔습니다. 그러면 실제 action과 동일하게 야구장과 선수들이 등장하는 context들도 action으로 잘못 포함될 확률이 있다는 것입니다.
이렇게 혼동되는 context들을 잘 구분해내기 위해, 저자는 기존의 단일 feature space를 Action subspace와 Context subspace, 즉 두 개의 feature subspace로 나눕니다. 이를 나누고 학습하기 위해 temporal annotation이 없는 상황에서 RGB feature와 Optical flow feature의 특징을 이용합니다. Action subspace는 Action <-> Context, Irrelevant Background feautre들이 분리되도록, Context subspace는 Action, Context <-> Irrelevant Background가 분리되도록 나뉩니다. 이 뿐만 아니라 temporal residual module과 unsupervised training task도 소개되는데, 뒷부분에서 설명드리겠습니다.
2. Proposed Method
WTAL에서는 일반적으로 RGB와 Optical flow feature를 함께 사용하는데, 2.4절 까지는 두 feature가 동일한 과정을 거치므로 표기를 생략하겠습니다.
2.1 Feature Embedding
Video의 feature를 추출하기 위해, 우선 겹치지 않는 T개의 snippet으로 video를 나눕니다. 이후 I3D 또는 UntrimmedNet의 입력으로 들어가 feature F_{o} \in \mathbb{R}^{D_{o} \times {T}}를 추출합니다. t-th snippet s_{t}의 feature F_{o}(t)의 차원은 \mathbb{R}^{D_{o}}이겠죠.
2.2 Base Module
Base module은 간단하게 구성되어 있습니다. 역할은 attention mechanism을 통해 snippet 별 action일 확률을 추출하고, 이를 기반으로 어떤 class가 video에 존재하는지 분류하는 것입니다.
먼저 앞서 얻은 feature F_{o}(t)를 FC layer와 sigmoid로 구성된 \mathcal{M}_{att}에 통과시켜 attention weight \mathcal{a}(t), \mathcal{a} \in \mathbb{R}^{1 \times {T}}를 얻습니다. 이렇게 얻은 \mathcal{a}는 snippet이 특정 클래스에 관계 없이 action일 확률을 의미합니다.
따라서 \mathcal{a}는 video-level foreground feature f_{fg}를 얻는데 사용되고 반대로 video-level background feature f_{bg}를 얻기 위해 1-\mathcal{a}를 사용합니다. 수식은 아래와 같습니다.
여기서 \mathcal{M}_{cls}는 FC layer이고 p_{fg}, p_{bg}는 background class를 포함한 총 (N+1)개의 클래스가 video에 존재할 확률을 나타냅니다.
방금은 video-level foreground, background feature에 대해 클래스 확률값을 얻은 것이고, snippet-level feature가 같은 \mathcal{M}_{cls}을 거치면 일반적으로 WTAL에서 사용하는 CAS를 얻을 수 있습니다.
2.3 Subspace Module
여기서부터 본격적인 논문의 contribution입니다. Subspace module의 목적은 Introduction의 figure처럼 각 snippet feature를 두 개의 subspace상으로 잘 임베딩 하는 것입니다. 여기서도 맨 처음 2.1에서 embedding 한 feature F_{o}(t)를 입력으로 받아 사용합니다.
기존 feature F_{o}(t)를 FC layer와 ReLU로 구성된 \mathcal{M}_{\mathcal{T}}에 태워 F_(t)를 얻습니다. F_(t) \in \mathbb{R}^{2D}이고 F \in \mathbb{R}^{2D \times{} T}에 해당합니다.
처음에 두 개의 subspace로 나눠 임베딩한다고 하여서 RGB와 flow feature의 특성을 잘 살려 임베딩하는 줄 알았는데 방금 얻은 F \in \mathbb{R}^{2D \times{} T} 중 D차원 각각이 subspace에 해당한다고 하네요. 뒤에서 어떤 loss를 적용해 각 subspace 별 특성을 살려주는지에 집중해야 할 것 같습니다.
이런식으로 단순히 FC layer로 계속 임베딩 한다면, video의 contextual information을 살리기 어렵게 됩니다. 그래서 이를 보완하기 위해, Temporal residual module(T-ResM)을 적용하여 feature의 표현력을 더 높여주는 과정을 거칩니다. T-ResM 모듈이 필수는 아니지만 논문에서는 T-ResM까지 거쳐 나온 F_{r}을 이후에 사용합니다.
이 부분에서도 각 subspace별로 나누어 다른 처리를 해주지는 않고, 단순히 concat 되어 있는 상태로 \mathcal{M}_{res}를 거칩니다. \mathcal{M}_{res}는 시간축에 대해 1D convolution을 수행해줍니다. 하지만 뚜렷한 학습 목적 없이 1D convolution을 적용한다고 좋은 embedding이 된다고 보장할 수는 없을텐데, 저자는 이에 의미를 더 주기 위해 unsupervised training task를 추가해 1D convolution layer를 학습시킵니다. 이 unsupervised training task에 대한 설명은 2.5절에서 이어 하겠습니다.
여기까지 마치고 본격적으로 각 embedding space를 명시적으로 학습하게 됩니다. 아까 각 subspace가 D차원씩 해당한다고 했는데, 이제는 둘을 나누어 사용합니다.
F_{a}는 Action subspace, F_{c}는 Context subspace를 나타냅니다. 아까 original snippet feature F_{o}(t)에 FC layer를 태워 각 snippet의 클래스 별 확률을 얻었듯, 마찬가지로 F_{a}, F_{c}를 각각 \mathcal{M}_{a}, \mathcal{M}_{c}에 태워 subspace 상에서 snippet의 클래스 별 확률 P_{a}(t)와 P_{c}(t)를 얻습니다.
\mathcal{M}_{a}, \mathcal{M}_{c}는 FC layer이고 P_{a}, P_{c} \in \mathbb{R}^{(N+1) \times{} T}에 해당합니다.
여기까지가 저자가 제안한 모듈의 구조이고, 가볍게 정리한 후 이것들이 어떻게 학습에 사용되는지 살펴보는 것으로 넘어가겠습니다.
Summary of proposed architecture
지금까지의 모듈을 거쳐옴으로써 얻은 output들과 무엇이 학습에 사용되는지 정리해보겠습니다.
먼저 Base module에서는 학습 시 output으로 (1) p_{fg}, p_{bg}, (2) a를 내뱉는데 (1)은 Base module의 학습에, (2)는 Subspace module의 학습에 사용됩니다. Inference 단계에서는 output으로 (1) a와 (2) P_{o}를 내뱉는데 (1)은 Action proposal generation에 사용되고 (2)는 생성한 proposal의 score를 매기는 과정에서 사용됩니다.
Subspace module에서는 학습 시 output으로 (1) P_{a}, P_{c}가 나와 Subspace module 학습에 사용되고, (2) F_{r}이 output으로 나와 T-ResM 학습에 사용됩니다. Action proposal generation과 score를 매기는 과정 모두 P_{a}를 통해 진행됩니다. 다시 말해 Context subspace는 학습 때만 사용되는 것이네요.
2.4 Training Process for Classification
논문의 처음부터 주장했듯 action feature와 context feature를 잘 분리해내는 것이 저자의 최종 목적인데 지금까지는 그러한 내용 없이 계속해서 embedding 과정만 수행했습니다. 어떻게 두 개의 subspace를 저자의 의도대로 잘 구성하는지, 즉 Subspace module의 학습 방식이 논문의 핵심 contribution인데, 어떻게 진행되는지 살펴보겠습니다.
An Overview of the Training of Subspace Module
앞서 Subspace module에서 T-ResM을 거쳐 얻은 F_{r}이 각 subspace를 구성하기 때문에 이를 어떻게 잘 학습시켜주냐가 관건입니다.
학습의 방향은 크게 3가지(property)로 볼 수 있습니다.
- About similarities among features in different subspaces, guided by triplet loss L_{t}
- About classification predictions of features in different subspaces, guided by the subspace classification loss L_{s}
- F_{r} \in \mathbb{R}^{2D \times T} should contain temporal imformation, guided by an optional temporal residual loss L_{r}
Preparation before Loss Calculation
저자는 snippet들을 action / only context / only irrelevant background 세 가지로 분류했습니다. 그리고 각 분류에 해당하는 snippet들의 집합을 각각 \mathbb{S}_{a}, \mathbb{S}_{c}, \mathbb{S}_{bg}라 칭하겠습니다. 이렇게 세 분류로 snippet들을 나눠야 학습에 사용할 수 있겠죠. 이러한 집합을 만들기 위해 하나의 snippet 씩 어떤 기준으로 분류하는지 보겠습니다.
각 snippet을 \mathbb{T}_{a}, \mathbb{T}_{c1}, \mathbb{T}_{c2}, \mathbb{T}_{bg} 중 하나로 분류하고 있습니다. 뭔가 RGB와 flow의 attention score에 threshold를 걸어 분류하는 듯 하네요.
\theta_{h}, \theta_{l}는 각각 0.5를 기준으로 사전에 정의한 하이퍼파라미터 \alpha만큼 크고 작게 정의됩니다.
\mathbb{T}_{a}는 RGB feature의 action일 확률이 \theta_{h}보다 크고 flow feautre의 action일 확률이 \theta_{l}보다 크다고 하는데, 이는 RGB가 spatial, flow가 temporal을 본다는 관점에서 공간 정보와 motion 정보 모두 action임을 가리키고 있다면 해당 snippet을 진짜 action으로 간주하겠다는 의미입니다. 반대로 \mathbb{T}_{bg}는 RGB와 flow 모두에서 action일 확률이 낮으므로 Irrelevant snippet으로 확실히 정의해주겠다는 의미일 것입니다.
그렇다면 \mathbb{T}_{c1}은 RGB에서의 값은 크고, flow에서의 값은 작을 때를 말합니다. 이는 spatial 정보를 봤을 때엔 action이지만, temporal 정보를 봤을 때엔 action이 아니라고 판별한 상황입니다. 이러한 상황은 아까 Introduction에서 “Baseball Pitch” 비디오의 context snippet과 유사하다고 볼 수 있습니다. 시각적으로는 실제 action과 유사하게 야구장과 선수가 보이지만, temporal 한 정보를 봤을 때 어떠한 action이 드러나지 않았다는 것으로 해석할 수 있겠죠.
반대로 \mathbb{T}_{c2}는 RGB에서는 action이 아니고, flow에서는 action으로 판별하고 있는 상황을 의미합니다. 이도 context에 해당하는데 예를 들어 다이빙 후 물이 첨벙거리는 장면을 생각해보면 temporal 정보는 역동적으로 움직이고 있겠지만 시각적으로는 다이빙 하는 선수도 안보이고 다이빙 대도 보이지 않으므로 action이 아닌, 즉 다이빙 이후의 context로 판단하겠다는 것입니다.
위와 같은 기준으로 모든 snippet을 분류하여 snippet들의 3가지 집합 \mathbb{S}_{a}, \mathbb{S}_{c}, \mathbb{S}_{bg}를 만들어낼 수 있습니다. \mathbb{S}_{c}에 \mathbb{T}_{c1}, \mathbb{T}_{c2}가 포함됩니다.
First Property and Triplet Loss
두 개의 feature subspace를 만들고 각 공간에서의 feature representation을 조절해주기 위해 자연스럽게 triplet loss를 떠올릴 수 있습니다. Action subspace에서 s_{c}, s_{bg}끼리는 가까워지고 s_{a}는 나머지 둘과 멀어져야 합니다. Context subspace에서는 s_{a}, s_{c}끼리 가까워지고 s_{bg}는 나머지 둘과 멀어져야 하겠죠.
이 때 멀어지고 가까워질 feature들은 F_{r}을 둘로 나눈 F_{a}, F_{c}에서 가져옵니다.
이후 지금까지 설명한 내용에 맞게 triplet loss를 적용해줍니다.
Second Property and Subspace Classification Loss
Action subspace에서 action으로 분류된 snippet, 즉 \mathbb{S}_{a}에 속하는 snippet들은 action class로 분류되고, 나머지는 background class로 분류되어야 합니다. 그리고 Context subspace에서 \mathbb{S}_{c}에 속하는 snippet들은 action으로 분류되고, \mathbb{S}_{bg}에 속하는 snippet들은 background로 분류되어야 합니다. 여기서 \mathbb{S}_{a}는 따로 class를 부여받지 않는다고 합니다. Context subspace에서 \mathbb{S}_{a}는 따로 학습되지 않는듯 하네요.
L_{s}는 이러한 목표를 두고 아래와 같은 방향으로 학습하도록 설계됩니다.
이 때 |_{n}은 n번째 action class에 속할 확률이고 0번 class는 background입니다. n번째 class는 주어진 video-level label을 의미합니다. 위 방향대로 BCE Loss가 사용됩니다.
Third Property and Temporal Residual Loss
세 번째는 앞서 생략한 T-ResM의 unsupervised task와 L_{r}입니다. 별다른 loss 설계 없이 T-ResM의 1D convolution만 거친다면 temporal 또는 contextual information을 명시적으로 학습한다고 보기는 힘듭니다. 이를 위해 저자는 “snippet level four-class classification” task를 추가합니다.
아까 \mathbb{T}_{a}, \mathbb{T}_{c1}, \mathbb{T}_{c2}, \mathbb{T}_{bg} 중 하나로 snippet을 분류하고 이를 학습에 사용했었는데, 여기서는 아래 식을 통해 4개 중 하나를 맞추는 방식으로 학습합니다.
단순한 FC layer \mathcal{M}_{r}을 통해 4가지 중 하나를 분류하고 이를 잘 분류하기 위해 학습을 통해 T-ResM이 contextual information을 더 잘 담는 방향을 기대하는 것으로 생각됩니다.
최종적으로 Subspace module에서 사용되는 Loss는 3가지입니다.
- L = L_{t} + L_{s} + L_{r}
2.5 Testing Process for TAL
Inference 단계에서는 Action proposal generation은 Base module에서, Proposal evaluation에는 Action subspace가 사용됩니다. RGB와 flow feature가 각각 P를 만들어 낸 후 둘의 가중합으로 CAS를 생성해 내고 thresholding과 OIC score를 계산해 평가를 진행합니다.
3. Experiments
3.1 Benchmark Results
THUMOS14 dataset에 대한 WTAL 성능입니다. 최근의 SOTA와는 비교할 성능이 못되지만 그 당시에는 굉장히 큰 차이로 기존의 SOTA들보다 높은 성능을 보이는 것을 확인할 수 있습니다. 그 당시 SOTA였던 BaSNet에 비해 더 많은 모듈과 loss함수를 포함하는 만큼 확실히 성능도 크게 앞서는 것을 볼 수 있습니다.
ActivityNet v1.2와 v1.3에 대한 벤치마크 성능입니다. 마찬가지로 평균 mAP를 기준으로 가장 높은 성능을 보이고 있습니다.
3.2 Ablation Studies
Table 1의 각 상황에 따른 ablation 성능입니다. I3D backbone을 사용한 경우를 봤을 때 Inference 과정에서 Original feature space의 feature를 사용하는 것보다 Action subspace의 feature를 사용하여 OIC score를 적용했을 때의 성능 향상이 굉장히 큰 것을 알 수 있습니다. 저자의 의도대로 context snippet들의 점수가 확연히 낮아졌다는 것을 보여주는 결과인 것 같습니다.
또한 T-ResM을 적용한 경우 방법론에서 유일하게 temporal information을 사용하는 부분이라 성능이 많이 오를 줄 알았는데 I3D feature를 사용하는 경우에 생각보다 성능이 크게 많이 오르지는 않은 모습입니다. 아무래도 I3D 자체가 어느정도 temporal한 정보를 주기 때문인 것으로 보입니다.
Conclusion
RGB와 flow 모달 각각이 담고 있는 정보의 의미를 따져 context snippet을 명시적으로 모델링 했다는 점은 굉장히 참신했다고 생각합니다. 하지만 Context subspace가 근본적으로 왜 있어야만 하는지 살짝 헷갈리는데, 이 부분에 대해서 좀 더 깊게 고민해봐야 할 것 같습니다.
이상으로 리뷰 마치겠습니다. 감사합니다.
안녕하세요. 좋은 리뷰 감사합니다.
이 논문은 context들이 action으로 잘못 구별되지 않도록 이를 막기 위해서 action subspace와 context subspace로 feature subspace로 나누는 것이 contribution인것 같습니다. 제 생각에는 action subspace 만으로도 충분히 action과 context를 잘 구별할 수 있을 것이라 생각하는데, 굳이 action subspace와 context subspace를 가져간 것은 action, context, irrelevant backgound이 세개를 확실히 구별하기 위해서라고 볼 수 있을까요?