오늘 제가 리뷰할 논문은 2020년도 AAAI에 게재된 ‘Background Suppression Network for Temporal Action Localization'(BaS-Net)입니다. 최근 비디오 분야의 Weakly-supervised Temporal Action Localization(WTAL) task에 관련한 몇 가지 논문을 읽었는데, 연도 순으로 하나씩 정리할 예정입니다.
먼저 WTAL이 어떤 task인지 간단히 살펴보고 넘어가겠습니다.
기본적으로 TAL task의 목적은 action과 action이 아닌 background가 번갈아가며 등장하는 긴 untrimmed video를 입력으로 받아, video 내 action이 존재하는 구간을 찾고 그 구간이 어떤 action class인지 분류까지 하는 것입니다.
이 때 Fully-supervised 방식은 annotation으로 video 내 존재하는 모든 action 구간과 그 구간의 class 정보까지 가진 상태로 학습을 진행합니다. 반면 Weakly-supervised 방식에서는 ‘어디인진 모르겠지만, 일단 video에 해당 class는 존재한다’는 video-level label만 가진 채로 학습을 진행합니다. 물론 video에 따라 하나 이상의 action class가 포함될 수도 있습니다.표를 보시면 쉽게 이해하실 수 있으실 겁니다.
WTAL은 오늘 소개해드릴 BaS-Net처럼 video-level label만으로 학습하는 방식도 있고, video-level label과 해당 label이 video에 몇 번 등장하는지의 정보를 사용하는 방식, 또한 이후에는 video에 존재하는 여러 개의 action instance 각각에서 하나의 frame 정보를 사용하여 학습하는 방식도 다양하게 연구되고 있습니다.
본격적으로 논문을 살펴보겠습니다.
Introduction
저자는 먼저 Weak-supervision 기반 연구의 필요성에 대해 언급합니다.
지적하는 Fully-supervision 방식의 3가지 단점은 아래와 같습니다.
- expensive
- subjective
- error-prone
‘expensive’는 단순히 annotation의 시간적이나 경제적인 cost의 비효율성을 의미하는 것이고, ‘subjective’는 특히 action 구간(시작과 끝 지점)은 결국 사람이 주관적으로 정해야 한다는 점에서 비롯된다고 합니다. 마지막 ‘error-prone’에 대해서는 자세히 이야기하고 있지 않은데, annotation은 결국 사람이 방대한 양의 data에 대해 진행하는 수작업이다보니 그로부터 생길 수 있는 오류의 가능성을 의미하는 것이 아닌가 생각해보았습니다.
이러한 이유로 저자는 WTAL 연구가 더욱 활발히 진행되어야한다고 주장하고 있습니다.
이어서 이전 WTAL 연구에는 어떤 방식이 사용되었는지에 대해 소개해 보겠습니다.
이전 연구에서는 예를 들어 특정 dataset의 action class가 20개인 경우, action classification도 20개의 class로 진행하였습니다. 다시 말해 video의 모든 frame 또는 segment가 분류될 때, 실제로는 background에 해당하는 frame도 loss를 줄이기 위해 강제로 action 중 하나로 분류하는 방향으로 학습된다는 것입니다. 이게 이후 action localization 과정에서 false positive를 늘려 성능의 저하를 일으키는 원인이 됩니다.
정리하자면 WTAL에서는 background를 잘 처리해주는 것이 성능에 영향을 미치는데, 기존의 연구에서는 그 부분이 미흡했다고 지적하고 있습니다.
이러한 문제를 해결하기 위해 BaS-Net은 background class를 추가로 설정해줍니다. 하지만 잘 생각해보면 input으로 들어오는 모든 untrimmed video는 background를 포함하고 있기 때문에 background class에 대해 positive sample만 존재하게 됩니다. background class에 대해 학습에 사용할 negative sample이 존재하지 않아서 단순히 background class를 추가하는 것만으로는 성능을 향상시킬 수 없다는 것입니다.
background class에 대한 negative sample을 얻어 학습에 사용한다면 모델도 segment를 보고 action class와 background를 구별할 수 있는 능력을 갖출텐데요, 이를 위해 BaS-Net에서는 Base branch와 Suppression branch를 설계합니다.
해당 논문의 contribution 3가지입니다.
- WTAL task에 존재하지 않던 Background class를 추가적으로 설정
- 비대칭적인 두 branch: base branch와 suppression branch 설계.
- ActivityNet과 THUMOS14 dataset에 대해 WTAL task에서 SOTA 달성
Background-Suppression Network
BaS-Net의 방법론을 설명하기에 앞서, WTAL task에서는 video의 action instance에 대한 classification과 localization이 모두 진행되어야 한다고 말씀드렸었습니다. 이에 관해 비교적 최근의 연구에서까지 사용되는 Temporal Class Activation Map(T-CAM)에 대해 정리해보겠습니다.
사실 제 이전 리뷰에서도 이에 대해 정리한적이 있어 간단하게만 설명드리면, video를 T개의 segment로 나눠 feature를 추출한 후 1D Convolution을 통과시켜주면 위와 같은 T-CAS를 만들어줄 수 있습니다.
T-CAS의 크기는 T * (C+1)로, 가로 축은 시간 상으로 1부터 T까지의 segment를 의미하고 세로 축으로는 background class를 추가해주었으므로 총 C+1개의 class를 의미합니다. 여기서 (c, t)는 t번째 segment가 class c action을 포함할 확률이 얼마인지 나타냅니다. 이렇게 구성되는 T-CAS를 이용해 action classification과 localization 모두 수행할 수 있습니다.
이제 suppression branch를 통해 background class에 대한 negative sample을 생성해주겠다는 저자의 의도를 바탕으로, BaS-Net의 전체 구조와 학습 방식, inference 과정까지 하나씩 알아보겠습니다.
BaS-Net의 전체 구조는 위와 같습니다.
두 branch에 포함된 convolution layer가 서로 가중치를 공유하는 모습을 볼 수 있는데, 이는 input video의 같은 segment를 보고 action과 background의 score가 동시에 높아지는 것을 방지하는 역할을 해주는 것으로 보입니다.
Feature extraction
Raw untrimmed video를 입력으로 받아, video의 처음부터 끝까지 겹치지 않게 16 frame씩 분할하여 L_n개의 segment를 얻습니다. 이 때 input video의 길이는 제각각 다르기 때문에 총 L_n개의 segment 중 T개의 segment만을 sampling하여 사용합니다.
이후에는 T개의 segment를 대상으로 backbone network인 I3D 또는 UntrimmedNet을 이용해 RGB Frame feature과 Optical flow를 추출하고 concat하여 feature로 사용합니다. 이렇게 생성된 feature는 base branch와 suppression branch로 들어갑니다.
Base branch
모델을 구성하는 두 개의 branch 중 base branch에 대해 먼저 알아보겠습니다.
Base branch에서는 입력으로 받은 2F*T 크기의 feature를 convolution layer에 통과시킵니다. 해당 convolution layer를 통과하면 앞서 설명드린 T-CAS가 생성되는데, 실제 코드를 보겠습니다.
Convolution layer는 단순히 1D Convolution과 LeakyReLU로 이루어져 있습니다. temporal 축에 대해 convolution을 진행하기 위해 permute로 차원 축을 잠시 바꿔주는 부분도 살펴볼 수 있었습니다. base branch에서는 입력으로 받은 feature가 실제로 포함하는 action class와 background class에 대해서 positive sample의 역할을 하기 때문에 해당 class들에 대해 높은 값을 갖는 방향으로 학습됩니다.
위와 같이 base branch로부터 T-CAS를 얻었다면 action classification에 대한 학습을 진행해야 합니다. base branch에서 loss 계산에 사용되는 ground truth label은 [y_1, y_2, ..., y_C, 1]인데 존재한다고 주어진 class는 1로, 존재하지 않는 class는 0으로 채워집니다. 그리고 마지막 1은 background class의 ground truth 값을 의미하는데, positive sample로서 사용하기 위해 존재한다고 지정해주기 위해 1로 채워줍니다.
이후 ground truth와 비교해줄 video-level class score를 생성해야 합니다. T-CAS에서는 모든 class에 대해 각 segment의 score를 얻을 수 있는데 이를 이용해 class c의 class score를 얻는 과정은 다음과 같습니다.
segment 1부터 T까지 class c에 대한 score를 보고, 가장 높은 k개의 score만 추려냅니다. 그리고 해당하는 k개의 score를 평균 내어 video에서 class c의 score로 사용합니다. 위 과정을 top-k mean aggregation이라 칭합니다.
같은 과정을 모든 class에 대해 수행해주면 video-level class score를 얻을 수 있게 되고 이를 앞서 설정한 ground truth와의 loss 계산에 사용합니다. loss는 BinaryCrossEntropyLoss를 사용합니다.
Suppression branch
방금 살펴본 base branch는 input video를 video-level label에 해당하는 action class와 background class에 대한 positive sample로 학습하지만, suppression branch에서는 Filtering module을 이용해 input video를 background class에 대한 negative sample로 만들어 학습에 사용합니다.
Filtering module에 대해 살펴보겠습니다.
filtering module은 다들 잘 아시는 단순한 attention module에 해당합니다. 마지막에 sigmoid를 거치며 input feature와 같은 shape의 0~1 사이 숫자를 반환하여 feature에서 background 부분이 suppressed 될 수 있도록 도와줍니다.
잘 학습된 filter module로부터 얻은 weight 값을 input에 곱해준다면 그것을 마치 background 없이 action으로부터 온 feature로 간주 할 수 있게 됩니다. 저자가 원했던 background class에 대한 negative sample로서의 역할을 수행할 수 있는 feature를 얻은 것입니다.
이렇게 background가 suppressed 된 feature를 convolution layer로 넘겨주면 아래와 같은 T-CAS를 얻을 수 있게 됩니다.
T-CAS를 얻었다면 base branch에서의 과정과 마찬가지로 top-k mean aggregation을 통해 video-level class score를 얻을 수 있게 됩니다. 이 때 loss 계산에 사용할 ground truth label 또한 base branch와 다릅니다. background를 모두 억제시킨다는 방향으로 학습을 진행해야 하므로 ground truth label은 [y_1, y_2, ..., y_C, 0]입니다. 앞서와 다르게 background가 존재하지 않는다고 가정하여 0으로 지정되어 있는 것을 볼 수 있습니다. 마찬가지로 BinaryCrossEntropy loss를 사용하여 video-level class score가 ground truth label에 가까워지도록 학습을 진행합니다.
loss 계산 과정을 정리하자면 위와 같고 3가지 loss term 중 마지막 L_{norm}은 filtering module에서 나오는 attention weight에 대한 L1 normalization입니다. 이를 통해 attention weight가 0으로 줄어들어야 하는 부분이 확실히 줄어들도록, sparsity를 갖도록 해줍니다.
Classification and Localization – Inference
Inference 과정에서는 background를 억제하도록 잘 학습된 suppression branch만을 사용합니다. action classification과 temporal localization은 모두 suppression branch에서 얻은 T-CAS를 이용해 수행한다는 뜻입니다.
base branch와 suppression branch의 학습 과정에서 video-level class score를 만들어주기 위해 top-k mean aggregation 과정을 설명드렸었는데 action classification을 위해 같은 절차를 거칩니다.
정리하자면 suppression branch로부터 얻은 T-CAS에서 video-level class score를 얻고 thresholding을 거쳐 점수가 높은 class만 남겨 이들을 classification 예측 label로 사용합니다.
video에 존재하는 action이 위 과정을 통해 추려지면, 해당 action label에 대해서만 localization을 진행합니다. 해당 action label에 대해 다시 T-CAS로 돌아와, 각 segment 별 score를 살펴봅니다. 다시 한 번 segment-level에서의 thresholding을 진행 하여 살아남은 segment들을 봤을때 연속되는 segment를 proposal candidate로 지정합니다.
지정된 proposal candidate의 score를 만들어주어 최종적으로는 temporal NMS를 진행하는데, proposal candidate의 score는 inner-outer contrast score를 사용합니다. 해당 score는 proposal 내부 segment들의 score(inner score)와 proposal을 앞뒤로 조금씩 늘린 구간 속 segment의 score(outer)를 비교하여 생성됩니다. inner score가 outer score보다 더 많이 높을수록 proposal이라고 볼 수 있습니다.
Experiments
TAL task 평가에서 대표적으로 사용되는 ActivityNet과 THUMOS14 dataset에 대한 성능입니다.
각 dataset에 대해 아직 Fully-supervised 방법론보다 BaS-Net이 더 높은 성능을 나타내는 경우는 많지 않아보입니다. Weakly-supervised 방법론 사이에서는 BaS-Net이 가장 높은 성능을 가지는 것을 알 수 있습니다.
다음은 ablation study입니다.
- baseline – background class를 추가로 사용하지 않은 경우
- Base branch – background class를 추가하여 사용한 경우
- Suppression branch – base branch와 더불어 filtering module 사용한 경우
- BaS-Net – 두 개의 branch를 동시에 학습시키는 경우 (jointly training)
ablation study로부터 video에서는 실제로 action인 부분과 그렇지 않은 부분을 어떤 식으로 처리해주느냐가 굉장히 중요하다는 것을 느꼈습니다. 또한 중요하게 살펴볼 점은 baseline에 background class만을 단순히 추가한 경우 오히려 성능이 떨어진 것을 볼 수 있습니다.
단순하게 background class만을 추가해주면 모든 video가 background class에 대한 positive sample로 작용하여 T-CAS를 추출했을 때 어떤 video든 background class에 대한 segment-level score가 전반적으로 높게 나오는데, 이렇게 되면 localization 과정에서 굉장히 악영향을 미칠 것으로 예상할 수 있고 이는 수치적으로도 확인할 수 있습니다.
다음은 정성적 결과입니다.
- (a) – video에 action이 sparse하게 존재하는 경우입니다. 또한 frame 내에 사람들이 굉장히 작게 보여 특정 action을 분류하기 어려운 케이스라고 하는데, 이에 대해서도 suppression branch가 어느정도 localization하고 있는 것을 볼 수 있습니다.
- (b) – video 내에 action이 굉장히 빈번한 경우입니다. 계속해서 action과 background가 번갈아가며 존재해 localization하기 어려운 케이스에 해당함에도 불구하고 모든 action instance를 빠짐 없이 잡아내고 있습니다.
- (c) – 분류해내야 하는 background가 시각적으로 action과 굉장히 유사한 경우입니다. 이러한 상황에서는 localization이 굉장히 어려울 수 있는데 BaS-Net은 정확하게 action과 background를 구분해내고 있는 것을 볼 수 있습니다. 저자도 이 경우에 대해 background를 잘 모델링해주었기 때문이라고 이야기하고 있습니다.
action의 시간 구간에 대한 정보 없이 어떻게든 action의 구간을 찾아내야 하는 상황 속에서, background의 처리 방식이 localization 성능에 큰 영향을 준다는 것을 깨닫게 해준 논문입니다.
이후 읽은 논문에서는 또 다른 방식으로 background를 처리하였는데, 계속해서 읽어나가며 다양한 background 처리 방식이나 새로운 관점의 접근법은 어떤 것들이 있는지 살펴보도록 하겠습니다.
리뷰 마치겠습니다.
리뷰 잘 읽었습니다. 논문에도 없는 시각적 자료를 만들어서 리뷰를 작성하는 것이 인상 깊네요.
한가지 질문이 있습니다. L1-normalization을 하는것이 sparsity를 가져가는 것과 무슨 상관관계가 있을까요?