본문 바로가기
Paper Review/Video Understanding

[CVPR 2022] Exploring Denoised Cross-Video Contrast for Weakly-Supervised Temporal Action Localization

by TaekGeun 2022. 7. 15.

Before Review

이번 논문은 Weakly Supervised Temporal Action Localization입니다.

 

개인적으로는 Code가 공개되지 않아서 아쉬움이 드는 논문입니다. 방법론이 인상 깊어서 원복을 해보려고 코드를 짜보고 있는데 K-Means에서 막혔네요. GPU를 이용해도 K-Means가 너무 오래 걸리는 거 같은데 저자는 어떻게 처리했는지 궁금하네요.

 

리뷰 시작하겠습니다.

Introduction

Weakly Supervised Temporal Localization(이하 W-TAL)은 snippet level의 feature를 추출하고 Temporal-Class Activation Sequence (이하 T-CAS)를 생성하고 thresholding을 거쳐 localization을 수행하는 것이 일반적인 process입니다.

 

그리고 T-CAS를 이용하여 video-level의 score vector를 만들고 video-level에서의 classification을 수행하여 video level의 classification에 도움이 되는 snippet을 찾아서 grouping 하는 것이 핵심이라 볼 수 있습니다.

 

그런데 video-level 만을 가지고 classification으로 T-CAS를 학습시키게 되면 당연히 한계가 존재합니다. 그래서 WTAL 관련 논문들은 다양한 방식으로 단순 classification Loss가 아닌 다른 loss function을 정의해서 좀 더 T-CAS를 정교하게 학습을 시킵니다.

 

예를 들면 attention 기반의 방식을 사용하여 foreground-segment와 background segment를 구분하는 attention weight를 학습시켜 T-CAS를 좀 더 잘 만들기도 합니다.

 

또한 비슷하게 contrastive learning을 이용하여 foreground feature와 background feature의 representation을 학습시켜 좀 더 discriminative 한 embedding space를 학습시키기도 합니다.

 

이것 말고도 다양한 아이디어를 활용해 T-CAS를 좀 더 잘 만들기 위해서 많은 연구들이 진행됐고, 진행되고 있습니다.

 

여기서 본 논문은 contrastive learning에 집중을 합니다. 그리고 저자는 이상적인 feature embedding space는 다음과 같은 성질을 가져야 한다고 주장합니다.

 

  • Action snippet들은 class에 상관없이 일단 background snippet과 분리될 수 있어야 한다.
  • Action snippet들은 같은 class라면 다른 class feature에 비해 좀 더 가까워야 한다.

자 그러면 일반적인 contrastive learning의 framework를 도입하면 위의 embedding space를 학습할 수 있을 것 같습니다.

 

하지만 이전까지의 방법론들은 전체적인 global contrast를 적용하지 않았기 때문에 완전하게 feature를 분리할 수 없다고 얘기합니다. 무슨 소리인지는 아래의 그림을 통해서 확인하도록 하겠습니다.

이전까지의 contrastive learning은 (a) 아니면 (b)의 상황을 가정하고 진행하게 됩니다.

 

(a)의 상황은 하나의 비디오에서만 contrast를 다루는 경우입니다. 단일 비디오 내에서 action과 background를 구분하고 positive / negative를 정의하여 contrastive learning을 진행합니다. 물론 안 하는 것보다는 낫겠지만, positive / negative pair가 다양하지 못해 embedding space를 완전하게 학습하기 어렵습니다.

 

(b)의 상황은 Mini-batch 상황에서의 contrast를 다루는 경우입니다. Mini-batch이다 보니 단일 비디오만을 고려하는 것보다는 효과가 있지만 역시나 조금 아쉬운 상황입니다.

 

(c)의 상황이 저자가 제안하는 방식입니다. 위에서 (a), (b)에 대한 설명을 보면 느낄 수 있습니다. 결국 전체를 봐야 한다는 것입니다. 우리가 positive / negative pair를 구성할 때 데이터셋의 일부분만을 보고 구성하는 것이 아니라 전체를 보고 구성을 해야 한다는 의미입니다. 이를 위해 많이 사용되는 기법인 memory bank를 도입하였다고 하네요.

 

일단 여기까지가 저자가 제안하는 contrastive learning 흐름입니다.

 

이제 핵심은 어떻게 embedding feature를 정의하고 pair를 구성할지인데, embedding feature를 정의하는 과정에 pseudo label 개념이 들어가게 됩니다. WTAL 상황에서는 라벨이 비디오 레벨 밖에 없다 보니, classification으로 학습이 되는 데 이는 localization task에 있어서 sub-optimal 한 상황이라 볼 수 있습니다. 즉, 원래 localization task에 적합할 수 있게 구간에 대한 pseudo-Label을 만들어내는 것입니다.

 

Pseudo label을 어떻게 설계하는지에 집중하면서, 제안된 방법론에 대해서 알아보도록 하겠습니다.

Method

Baseline Setup

대다수의 WTAL 논문은 baseline은 굉장히 간단하게 설계됩니다. 그냥 우리가 알고 있는 정보가 video-level annotation 뿐이니깐 일단 classification loss로 베이스라인을 잡는 것이지요.

 

비디오 전체 구간에 대해서 snippet-level feature를 추출하고 이를 embedding layer를 거쳐서 T-CAS(Temporal-Class-Activation-Sequence)를 생성합니다.

 

T-CAS는 결국 비디오 구간 전체에 대해서 각 클래스에 대한 확률 분포를 의미합니다. 그리고 이를 잘 aggregate 해서 video-level classification을 할 수 있습니다. 각 클래스 별로 확률이 높은 k개의 snippet 들의 확률을 평균 내서 video-level score vector를 만들게 됩니다. 그리고 cross entropy loss로 embedding layer들이 학습된다고 보면 됩니다.

이 정도가 가장 간단한 베이스라인인데 저자는 여기에 Bas-Net의 구조를 그대로 사용합니다. 즉, Bas-Net을 베이스라인으로 사용한 것이라 보면 되는데, 두 가지 상황에 대해서 classification을 한다고 보면 됩니다.

 

일단 일반적으로 우리가 사용하는 데이터셋은 모두 untrimmed video이기 때문에 항상 background class가 존재합니다. 그렇기 때문에 background class에 대한 라벨은 항상 1로 고정시킬 수 있습니다. 근데 이렇게 되면 background에 대해서 negative sample이 없기 때문에 trival solution으로 수렴할 가능성이 높습니다.

 

그래서 attention이 도입됩니다. attnetion의 목적은 background를 suppression 하는 것이죠. 이상적으로 background가 suppression 되었다면 T-CAS에는 background에 대한 확률 분포는 적어졌을 것이고, background class에 대한 라벨은 0으로 두는 것이 맞겠죠.

 

방금 제가 설명한 아이디어는 정확히 Bas-Net에서 제안한 아이디어와 동일합니다. 저자도 그 부분은 밝히고 있고요. 무튼 이에 대한 자세한 설명은 이전 리뷰인 Bas-Net에 있기 때문에 이 정도로 설명하고 이제 저자가 직접 제안한 모듈에 대해서 알아보도록 하겠습니다.

Denoised Cross-Video Contrastive Algorithm(DCC)

저자는 세 가지 모듈을 추가적으로 제안합니다.

Snippet-wise Pseudo-label Generation

Pseudo-label을 생성하는 목적 자체는 다음과 같습니다. 우리가 localization task이지 classification task가 아니다. 결국 localization이 조금 더 완전해지기 위해서는 pseudo-label이지만 구간에 대한 정보가 있어야 한다. 뭐 pseudo-label 방법이야 unsupervised 상황이나 semi-superivsed 상황에서 자주 사용하기 때문에 목적 자체는 직관적으로 받아들일 수 있을 것 같습니다.

 

일단 pseudo label의 초기화 같은 경우는 굉장히 간단하게 처리합니다. 각 클래스 별로 mean-thresholding을 처리해 주는 것이죠. 아래 그림을 보면 쉽게 이해할 수 있습니다. 각 클래스 별로 mean score를 계산하고 mean score 보다 크면 label을 1로 할당해 주는 것입니다.

그런데 저렇게 thresholding 만 했다고 해서 pseudo label이 잘 생성되길 기대하기는 어렵습니다. 따라서 생성된 pseudo label에 noise를 제거해 주는 작업이 필요합니다.

Pseudo-label Denoising

조금 더 trustworthy 한 label을 만들기 위해선 noise 한 label을 denoising 하는 작업이 필요합니다. 여기서 clustering이 등장합니다. clustering을 한번 돌리고 난 후에 같은 cluster에 있다는 것은 비슷한 표현력을 가지기 때문에 same action category일 확률이 높습니다. 나름 비지도 학습 방식으로 feature 끼리 relationship을 부여한다고 생각하면 좋습니다.

 

즉 우리의 pseudo label을 이렇게 refine 시킨다고 보면 됩니다.

 

  • 같은 cluster이고 같은 pseudo-label 일 때 confidence를 높게 부여
  • 다른 cluster이고 같은 pseudo-Label 이거나 같은 cluster이고 다른 pseudo-label이라면 condifence를 낮게 부여 -> 이 경우는 noise라 판단하였나 보네요.

그래서 새롭게 만들어주는 confidence map의 formulation은 아래와 같습니다.

분모항은 같은 cluster가 몇 개 있는지 나타내는 항입니다.

 

분자항이 핵심인데 저 조건이 True 일 때 1 아니면 0이 되는 indicator function의 형태로 되어있습니다. 풀어서 설명하자면

 

  • 같은 cluster 이면서 같은 pseudo label 일 때, 1
  • 그 외 모든 경우는 0

즉, 같은 cluster 이면서 같은 pseudo label인 확실한 경우만을 사용하겠다는 뜻으로 보면 될 것 같습니다.

 

간단한 toy-example을 준비했으니 한번 보도록 하겠습니다.

Denoising 후 만들어지는 confidence map을 보았을 때 값이 낮을수록 pseudo-label이 noise 하다고 볼 수 있으며 값이 클수록 pseudo-label이 confident 하다고 볼 수 있습니다.

Denoised Contrastive Learning

앞서 우리는 pseudo-Label을 만들었고, 이에 해당하는 confidence score까지 구했습니다.

 

이를 토대로 좀 더 정교한 contrastive feature를 만들고 contrastive learning을 할 차례입니다.

 

그전에 일단 다시 notation을 제대로 표기하고 시작하겠습니다.

 

  • $\hat {A} \in R^{\left( C+1\right)  \times T}$ : Pseudo Label Map입니다.
  • $S\in R^{\left( C+1\right)  \times T}$ : Confidence Map입니다.
  • $X\in R^{T\times d}$ : embedding feature를 한번 더 projection 시킨 feature입니다. 조금 더 compact 한 representation을 얻기 위해 차원을 $d=512$로 줄여준 것이라고 하네요.

그래서 우리는 특정 클래스 $c$에 대한 denoised video feature를 다음과 같이 구할 수 있습니다.

 

  • $F_{t, i}=\hat {A}_{t, c} \times S_{t, c}\times X_{t, i}$ : element-wise 방식으로 곱해집니다.

결국 우리가 구한 pseudo label이랑 confidence score를 가지고 attention을 준다고 봐도 무방합니다. Toy example을 한번 보도록 하겠습니다.

일단 element-wise 방식으로 pseudo-label과 confidence score를 곱해줍니다. 그리고 이 denoised pseudo label을 가지고 projection 된 feature에 attention을 가해줍니다. 여기서 핵심은 클래스별로 attention을 가해주는 것입니다. class 별로 attention을 가해주기 위해 denoised pseudo label을 class별로 쪼개서 처리합니다.

저렇게 class 별로 attention score를 구해준 다음에 class 별 denoised video feature를 구할 수 있습니다. 예를 들면 class A에 해당하는 denoised video feature는 temporal 축에 대해서 attention 연산을 취해준다고 보면 됩니다.

그래서 모든 action에 해당하는 denoised action video feature를 얻을 수 있습니다. 반대로 background에 대해서는 pseudo-label을 반대로 취해주면 background가 되기 때문에 아래와 같이 구할 수 있습니다.

 

  • $F^{bg}_{t, i}=(1-\hat {A}_{t, c} )\times S_{t, c}\times X_{t, i}$

그래서 각 action class에 해당하는 feature와 background에 해당하는 feature를 모두 얻을 수 있었습니다. 다음으로 temporal 축에 대해서 region을 나누게 되는데요. 논문에서 5개의 구간으로 나눈다고는 나와있지만 사실 어떻게 나누는지 까지는 논문에 나와있지 않아 정확히는 모르겠습니다.

 

예를 들어 비디오가 100초라면 0~20초 , 20~40초 , 40초~60초, 60~80초 , 80~100초 이렇게 균등하게 나누는 것이 아닌가 싶습니다. 코드가 공개되지 않아 이 부분은 자세히 모르겠네요.

 

무튼 구간을 나눴을 때 다음과 같이 표기합니다.

 

  • $F\Longrightarrow \{ R_{m}\}^{M}_{m=0} $

영역을 나누었다면 그 영역에 해당되는 action feature들과 background feature들을 얻을 수 있습니다. Projection feature들에 대해서 해당 구간에 속하는 snippet feature들을 average pooling 하는 방식으로 region feature를 얻을 수 있습니다.

 

  • $\{ r_{m}\}^{M}_{m=0} $ : action에 대한 region feature들입니다.
  • $\{ r^{\prime }_{m}\}^{M}_{m=0} $ : background에 대한 region feature들입니다.

Region feature를 만드는 과정을 이렇게 이제 모든 training video에 대해서 이러한 작업을 진행해 주면 region memory bank를 구축할 수 있습니다. Contrastive Learning을 할 때 모든 training video를 고려하기 위함이죠. 근데 이 부분도 설명이 한 줄밖에 없어서 정확히 어떻게 처리하는지 궁금하네요.

 

모든 training video에 대해서 action region feature, background region feature를 구했으니 이제 positive/negative pair를 구성할 차례입니다.

 

임의의 action region feature에 대해서 positive pair는

 

  1. action region feature from same video with the same action class
  2. action region feature from different video with the same action class

임의의 action region feature에 대해서 negative pair는

 

  1. background region feature from same video
  2. background region feature from different video
  3. action region feature from different video with different action class

Contrastive Loss는 많이 사용되는 InfoNCE Loss를 사용했다고 합니다.

 

  • $L_{dcc}=-\frac {1}{M} \sum^{M}_{m=0} log\frac {\sum\nolimits_{r^{+}_{m}\in Pos} exp\left( r_{m}\cdot r^{+}_{m}/\tau \right)  }{\sum\nolimits_{r^{\pm }_{m}\in Pos\bigcup Neg} exp\left( r_{m}\cdot r^{\pm }_{m}/\tau \right)  } $

Positive Pair를 보면 같은 비디오와 다른 비디오 내에 있는 action class끼리 당기기 때문에 Intra-class compactness를 챙길 수 있습니다. 같은 class 끼리 더욱 뭉친다는 의미입니다.

 

Negative Pair를 보면 action과 background를 구분하기도 하지만 다른 비디오 다른 action 끼리도 분리하기 때문에 Inter-class separability를 챙길 수 있습니다. 일단 action과 background는 클래스 구분 없이 멀어짐과 동시에 action 끼리도 서로 다른 class라면 조금 멀어지는 방향이죠.

 

이렇게 정교하게 만들어지는 contrastive framework 속에서 우리가 원하는 embedding space를 학습할 수 있게 됩니다.

Overall Training Objective and Inference

그래서 정리하면 학습에 사용되는 최종 loss term은 다음과 같습니다.

 

  • $L_{final}=L_{base}+\beta L_{dcc}$

이때 $\beta$는 balancing factor라고 해서 학습 초반에는 0.1로 사용하다가 학습이 끝날 때는 10000으로 조정이 됩니다. 학습 초반에 DCC 모듈에 큰 가중치를 부여했다가 수렴이 제대로 되지 않아 초반에는 Base Model에 집중하여 안정성을 꾀하다가 궤도에 올라오면 DCC 모듈에 좀 더 집중하는 방식을 취했다고 볼 수 있습니다.

 

DCC 모듈은 학습 과정에서만 사용되고 inference 단에서는 사용되지 않는다고 합니다. 우리가 필요한 건 정교한 T-CAS 뿐이니깐 inference 과정에서 DCC 모듈이 할 역할이 없기 때문입니다.

Experiments

Ablation Studies

Effect of each component

크게 베이스라인과 Denoising 과정 그리고 DCC 모듈 전체를 비교하는 ablation입니다. denoising 과정을 제거하면 1.7% 정도의 성능 drop이 발생하네요. 제가 아직 실험을 본격적으로 들어가지 않아 이게 큰 차이인지는 아직 감이 안 잡히네요. 그래도 분명히 K-Means Clustering을 통한 denoising 과정이 효과가 있는 것 같습니다.

 

Action-background separation

우선 action-background separation에 대한 T-SNE 시각화입니다. 확실히 Baseline 대비 action과 background feature 간의 경계가 뚜렷하게 보이는 것 같습니다.

 

Intra-class compactness & inter-class separability

다음으로는 Intra-class compactness & inter-class separability를 확인할 수 있는 T-SNE 시각화입니다. action이라 할지라도 같은 class 끼리는 좀 더 가까이 분포하는 게 좋을 것 같습니다. 시각화를 보면 알 수 있지만 baseline 대비 같은 class일 때 compactness가 더 좋게 분포하고 있습니다. 또한 서로 다른 class 간의 구분도 더 잘 되는 것 같네요.

 

이를 통해 denoised contrastive learning이 잘 진행되어 discriminative 한 feature를 얻을 수 있었던 것 같습니다.

 

Contrastive features from different videos

Contrastive pair를 구성할 때 단일 비디오에서 sampling 하는 방식과 Mini-batch에서 sampling 하는 방식 그리고 Memory Bank를 이용해 전체 비디오에서 sampling 하는 방식을 비교한 ablation입니다. Constarive pair를 구성할 때 데이터가 많으면 많을수록 성능이 좋다고 알려져 있는 데 딱 그러한 경향성을 보여주는 테이블입니다. 더욱 다양한 상황에서의 Negative를 만나서

 

comparison with State-of-the-Arts

마지막으로 벤치마킹입니다. 전년도(2021년도)에 비해 우수한 성능을 달성하여 본 방법론의 effectiveness를 증명했습니다. 우선 THUMOS에서의 성능입니다. 이번 2022년도 다른 방법론에 비하면 조금 낮은 성능이지만 전년도와 비교했을 때는 확실히 가장 높은 성능을 보여주고 있습니다.

ActivityNet에서도 같은 경향성을 보여주고 있습니다.

 

Conclusions

개인적으로 조금 참신함을 느꼈던 부분은 clustering을 도입하여 비지도 방식으로 나름 feature들 간의 relation을 고려한 부분이 인상 깊었습니다. Weakly-Supervised Temporal Localization 같은 경우는 구간 라벨이 없기 때문에 이렇게 부족한 정보를 채워나가는 것이 중요한 것 같습니다.

 

논문만 읽었을 때 이 정도는 금방 원복 할 듯..? 이렇게 생각했는데 생각보다 조금 어렵네요.. 코드를 공개해 주면 좋겠습니다.

 

이상으로 리뷰 마치도록 하겠습니다.