안녕하세요 오늘은 CVPR 2022에서 발표된 Recurring the Transformer for Video Action Recognition 논문을 소개하고 구조를 설명하도록 하겠습니다. 이 논문은 Action Classification에서 우수한 성능을 거두면서도 메모리를 적게 먹는 장점을 가졌다고 합니다.
Abstract
Video Understanding 분야에서 기존에 많이 쓰이던 3D Convolution이나 Transformer-based 방법은 비디오를 clip-wise manner로 이해했습니다 (clip-wise는 비디오의 모든 프레임을 통째로 이해하려고 했다는 의미). 이 방법의 문제는
- GPU 메모리를 많이 먹고
- 고정된 길이의 입력만을 다룸
그래서 이 논문에서는 Recurrent Vision Transformer(RViT)를 제안했습니다. RNN, LSTM으로 익숙한 구조가 오랜만에 나오네요.
RViT 내에서 attention gate를 이용해서 시간적으로 인접한 프레임 간의 interaction을 유도했다고 합니다.
결론적으로는 메모리도 아끼면서 높은 성능을 거뒀다고 하니 논문을 살펴보도록 하겠습니다.
Method
Recurrent-Based Transformer
아래에서 설명할 각 RViT unit에는 attention gate가 있습니다. 이것은 spatial/temporal features간의 관계를 추론하고 현재 프레임의 시계열 정보(temporal information)을 다음 프레임으로 넘겨주는 역할을 합니다. 하나하나 뜯어봅시다.
Patch Embedding of Frames
위의 RViT Framework를 보면 각 RViT Unit에 \(x^{(t)}\)가 들어가는 것을 알 수 있습니다. 이게 프레임일텐데 그냥 RGB 이미지를 넣는건지, 따로 Embedding을 뽑아서 넣는건지 알아야 합니다. 여기서는 이미지를 겹치지 않게 \(P \times P\)개의 패치로 나눕니다 (각 패치의 사이즈는 프레임을 가로세로 각각 \(P\)로 나눈게 됩니다.
그 후 각각의 패치를 Convolution Layer(이미지 데이터셋으로 pretrained 된 모델을 쓸 것 같습니다)에 넣어 얻게 되는 feature에 이것과 같은 차원의 Postional Encoding Vector를 더해 \(x^{(t)}\)를 얻습니다.
$$ x^{(t)} = \ell\left ( x_{p}^{(t)} \right ) + Pos_{p} $$
Attention Gate
어찌보면 이 논문의 핵심인 Attention Gate는 attented vector \(a^{(t)}\)를 만드는 것이 가장 중요하다고 할 수 있습니다.
$$ a^{(t)} = \left ( \sigma \left (Q^{(t)} \right ) + 1 \right )\left ( \sigma \left (K^{(t)} \right )^{T} + 1 \right ) V^{(t)} $$
Figure 2의 (a)를 보시면 Attention Gate가 어디있는지 확인할 수 있으며 (b)를 보면 어떻게 생겼는지 파악할 수 있는데, 이는 이전 프레임까지의 정보를 담은 \(h^{(t-1)}\)과 현재 프레임 \(x^{(t)}\)를 합쳐 각 패치 간의 관계를 추론하는 역할을 합니다.
이런 기법은 임의의 시간 \(t\)에서의 \(h^{(t)}\)에 기존까지의 내용이 잘 담기기를 바라는 것으로 해석할 수 있습니다. 물론 \(h^{(t)} \in \mathbb{R}^{P^{2}\times D}\)의 사이즈를 가지기 때문에, 각 패치에 담기는 의미가 모호하기는 하지만 그냥 넘어가도록 하겠습니다.
참고로 Multi-Head Attention을 도입하여 파라미터의 수를 줄이고 서로 다른 mode를 추출하도록 설계했습니다.
RViT Unit
제안하는 구조는 결국 RViT를 단일 또는 여러층으로 쌓아 만드는 것이 전부인데, 각 RViT Unit에서는 \(h^{(t-1)}\), \(x^{(t)}\)를 입력으로 받아 \(O^{(t)}\)를 리턴하게 됩니다. 그 과정은 그림만 봐도 그리 어렵지 않게 이해할 수 있으며, 논문에는 그 구조를 수식과 함께 흐름대로 설명하고 있습니다.
[class] Token
ViT 및 기타 Transformer 구조를 잘 아시는 분이라면 [CLS] 토큰을 사용해 classification을 하는 것에 익숙하실 겁니다. 이 구조에서는 \(h^{(t-1})\)에 \(T_{t} \in \mathbb{R}^{D}\)를 temporal, \(x^{(t})\)에 \(T_{s} \in \mathbb{R}^{D}\)를 spatial token으로 붙여 학습합니다.
살펴볼 점은 결국 어떤 정보를 활용하여 분류하는가인데, 아래의 식을 보면
$$ result = W_{class}\left ( Concat \left( T_{t_{0}^{(t)}}, \cdots, T_{t_{n}^{(t)}}, T_{s_{n}^{(t)}} \right ) \right ) $$
temporal 정보는 처음부터 다 긁어모으고, spatial 정보는 마지막 프레임만 사용하는 것을 알 수 있습니다.
제 생각으로는 굳이 두 정보 간의 차별을 둬야했나 생각이 듭니다. temporal도 똑같이 마지막 프레임만 하던가 아니면 spatial 정보도 모두 넣던가 했다면 어땠을까 궁금합니다.
Experiments
실험은 Kinetics-400, Something-Something V2(SSv2), Jester, Charades 데이터셋에 대해 수행했습니다. 구체적인 내용은 논문에서 확인할 수 있고, 결과로 넘어가면
SOTA 모델 대비 GPU 메모리 사용량에서 이점을 가져가며 더 높은 성능을 보였다고 합니다. 보통은 모델 사이즈(파라미터 수)를 두고 벤치마크를 진행하는데, 이 논문에서는 메모리를 언급한 것이 눈에 띕니다. 이것은 아무래도 3차원 비디오를 입력으로 넣지 않고 개별 프레임을 사용했기 때문에 가질 수 있는 이점으로 생각됩니다.
모델 이름 옆에 64x3x3 같은 숫자에 대한 해석이 필요합니다. 이를 A, B, C라고 하면
- 비디오 프레임 전체에 걸쳐 일정한 사이즈로 리사이즈를 하고 또 그것보다는 작은 일정한 사이즈로 crop 합니다. 이때 crop은 서로 다른 B개의 위치에서 진행하고, 따라서 서로 다른 3개의 spatial crop이 만들어지게 됩니다.
- 비디오를 C개의 클립으로 나눕니다. 각 클립은 원본 비디오를 균등한 길이로 자른 클립이 됩니다.
- 각 비디오 클립에서 A개 프레임을 추출합니다.
- 각 비디오 클립에 대해 마지막 \(\frac{1}{3}\)개 프레임으로부터 결과를 뽑고 그 중 가장 높은 점수를 가지는 것을 prediction으로 취급합니다.
이 방법은 학습이 아닌 평가에만 적용하고, 64x3x3 과 같은 평가 방법은 모든 논문에서 일관되게 쓰는 규칙은 아닙니다. 제 생각에는 비디오는 전처리 방법이 이미지에 비해 다양할 수 있기 때문에 잘 연구한다면 평가 방법에서도 강점을 가져갈 수 있을 것 같습니다.
아까 [class] 토큰 섹션에서 분류를 위한 토큰 활용에 대한 언급을 했었는데, 역시나 차이가 존재합니다. 그것도 꽤 큰 폭으로 존재하는군요.
Spatial, Temporal 모두 활용하는게 가장 성능이 좋았으며 추후에 spatial token에 대해서도 마지막 시퀀스가 아닌 모든 시퀀스를 활용한 결과가 있으면 좋겠습니다.
마지막으로 순차적 프레임 입력에 따라 변화하는 attention 위치를 보여주는 그림입니다. 아주 잘 보이지는 않지만 어느정도 행동을 구별하는데 중요하게 여겨지는 부분에 대해 activated 되는 것 같습니다.
Conclusion
오늘은 CVPR 2022에서 발표된 'Recurring the Transformer for Video Action Recognition' 논문에 대해 살펴봤습니다. 이 논문은
- 비디오 이해를 위한 End-to-end Recurrent Vision-Transformer를 제안했고
- 사용하는 GPU 메모리를 획기적으로 줄였으며
- Attention Gate를 활용하여 이전 프레임까지의 내용과 현재 프레임 간의 interaction을 유도하고
- 여러 데이터셋에 대해 우수한 성능을 거두었습니다.
'기술 이야기 > 논문 리뷰' 카테고리의 다른 글
[논문 리뷰] VideoMAE - Masked Autoencoders are Date-Efficient Learners for Self-supervised Video Pre-Training (0) | 2023.04.18 |
---|---|
[논문 리뷰] Consistency Models 리뷰 (4) | 2023.04.13 |
[논문 리뷰] Segment Anything 설명 (코드 살짝 포함) (4) | 2023.04.09 |
[논문 리뷰] Graph Convolutional Network (GCN) (0) | 2023.03.30 |
[논문 리뷰] Mixed Precision Training (MP, AMP) (0) | 2023.03.29 |
댓글