요약본을 작성하는 것 보다 , 다시볼때 최대한 많은 정보를 읽기 위해서 조금 디테일한 부분까지 계속해서 다 해석하고 재조립해서 작성하고 있는데, 본 논문은 내용이 너무 길어 읽기 조금 피곤할 수 있습니다...
Summary
NLP 뿐만 아니라 Vision 분야에서도 사용되었던 Transformer 를 video에 적용시키기 위해서 방법을 제시한다
Abstract
video classification 을 위해서 pure-transformer model 인 Video vision Transformer 를 본 논문에서 제시한다.
본 논문의 모델은 spatio-temporal token 을 input video로 extract 한 다음 transformer layers 를 통해 encoding 한다.
비디오의 Long-sequences 를 처리하기 위해 Input 의 spatial & temporal dimension 을 factorising ( (인수) 분해 )하는 방법을 사용합니다. 기존 transformer-based models 들은 많은 training dataset 이 있어야 하는 단점이 존재하지만, 본 논문에서는 regularise 를 model 의 training 하는 동안 사용하면서 pre-train 된 모델들을 사용함으로써 적은 dataset 만 가지고도 좋은 성능을 낼 수 있게 하였습니다.
1. Introduction
sequence-to-sequence model 에서 Transformer 모델이 multi-head self-attention 을 바탕으로 지금까지 좋은 성능을 주는데, 이는 transformer 가 long-range dependencies 를 효율적으로 처리할 수 있게 합니다.
NLP에서 attention based model 의 성공을 computer vision 으로 가지고 오기위한 많은 시도들이 있었는데,
Non-local network 와 같은 시도가 있었지만 ( 이전 까지는 CNN base 의 att 사용) pure 하게 transformer 만 사용해서 모델을 구성한 VIT(Vision Transformer) 가 처음으로 image classification 에서 사용되었습니다.
( Non-local network에 대한 더 자세한 정보는 https://ksh0416.tistory.com/81)
이런 transformer base model 은 inductive biases 가 부족하기 때문에 large scale 를 처리하기 위해서는 많은 데이터가 필요하다.
이런 Vit 에 영감을 받을 뿐만아니라 직관적으로 video 자체가 long-range contextual relationship 을 가지고 있기 때문에 , 본 논문에서는 transformer base model 로 video classification을 처리하려고 하였습니다.
현재 video 처리모델로는 아래와 같이 존재합니다.
- 3D conv : Inflated 3D (Kinetics - https://ksh0416.tistory.com/80 ) / 3D conv (https://ksh0416.tistory.com/79)
- extention of Image Classification
- self-attention : Non-local network ( https://ksh0416.tistory.com/81 )
그래서 본 논문에서는 pure-transformer 을 사용해서 video classification 을 처리하려고 하였습니다.
그래서 본 논문에서는 다음과 같은 방법을 통해 모델을 제시합니다.
- input video 에서 추출한 sequence of spatio-temporal token 을 self-attention 으로 처리합니다.
- 많은 양의 spatial-temporal token 을 처리하기 위해 4개의 factorising 방법을 통해 spatial & temporal dimension 을 처리
- smaller dataset 에서도 효과적으로 작동하기 위해서 모델을 reguliarise 하고 pretrained image model 을 사용합니다.
- CNN 과 다르게 transformer base 는 연구가 덜 되었기 떄문에 tokenisation strategies, model architecture , regularisation methods 들을 통해 가장 최선의 방법을 제공합니다.
(Inductive biases에 대한 추가 설명)
Inductive biases
<In Vit paper>
transformer는 CNN의 고유한 Inductive biases 가 부족하므로 충분하지 못한 양의 데이터로 학습할 때 일반화가 잘 되지 않는다.
<So, what is inductive bias?>
mechine learning problem 을 더 잘 풀기 위해서 사전 정보를 통해 추가된 가정을 inductive bias 라고 한다.
ex) CNN의 inductive bias 는 local한 영역에서 sptial 정보를 뽑아내는 것이다.
RNN에서는 sequence data가 처리 되는걸 가정으로 모델이 만들어졌다.
이처럼 처리되는 방향을 어느정도 가정하고 만들어진 것을 inductvie bias 라고한다.
<inductive - data & robust >
inductive biases 가 높으면 작은 데이터셋으로 높은 성능을 낼 수 있다.
단, inductive biases가 높으면 robust 하지않게 된다.
어찌생각해보면 당연한게 기본가정을 가지고 모델을 구성했다는 의미가 곧, 입력 데이터의 종류드링 비슷하다는 의미이기 때문에 더 robust 하기 힘들다.
<Transformer>
Transformer 는 inductive biases 가 약하다. 이말은 즉, 학습시키기에는 많은 양의 데이터가 필요하지만 NLP,Vision 분야에서 Robust 하게 사용 될 수 있다는 것이다.
2. Related Work
3. Video Vision Transformers
3.1 Overview of Vision Transformer (ViT)
ViT 는 N개의 non-overlapping image patches 를 extract 하여, linear projection 하고 rasterise 해서 1D token으로 만들어준다. ( 위쪽 그림의 아래 부분을 보면 알 수 있다) 그리고 이 토큰 ( x ) 를 Embedding (E) 에 넣어준 뒤 classification 을 하기 위해서 cls token 을 앞쪽에 추가해 주고 img 의 위치정보를 유지하기 위해서 positional embedding ( p ) 한다.
( cf. transformer 는 permutation invariant 이기 때문에 positional encoding 해줘야한다 --> 아마 permutation invariant 개념을 PointNet 하면서 배운 것 같은데 ViT 도 이런 이유로 poisitonal embedding 한다.
+ vit 가 inductive biases 가 낮다는게 여기서 또 한번 나타나는 것 같다.)
zcls
z=[zcls,Ex1,Ex2,...,E)xN]+p,xi∈Rh×w,zi∈Rd,p∈RN×d
Embedding 된 token 들을 transformer layer 로 들어가게 된다.
각각의 layer 들은 Multi-headed self-Att , layer normalisation(LN) , MLP block 이 존재한다. ( 위 그림의 오른쪽 block 을 보면 된다. ) - 수식은 아래와 같다.
마지막으로 Transformer encoder를 거쳐 나오는 [CLS] 토큰의 값을 MLP Head에 넣어서 Class를 예측합니다.
-----------
아래부터 다 날라갔다........
3시간이 넘게 작성했는데.. 똑같이 쓰는건 정말 무리라 간략하게 쓰고 넘어갈까한다......
3.2 Embedding video clips
input video -> sequence of tokens -> add positional embedding and reshape -> input transformer
uniform frame sampling
input video를 n_t trame 으로 동일하게 나누고 2D frame 으로 embedding 해준 뒤 token 을 concat 하는방식을 사용했다.
Tubelet embedding
non-overlapping 하게 input volume 으로 부터 spatio-temporal tube 를 추출하고 d 차원으로 linear projection (R^d) 한다.
이 방식은 ViT embedding 방식을 3d 로 확장시킨 방법으로 볼 수 있다.
t :temporal / h : heitght / w : width / 각각 차원에서 extract
작은 tubelet 을 사용할 경우에 input token 이 많아지면서 연산량의 증가로 이어집니다.
이 방법은 tokens 하면서 spatial-temporal 한 정보를 fusion 하는 반면
uniform frame sampling 에서는 transformer 에서 temporal 한 정보를 fusion 해줍니다.
3.3 Transformer Models for Video
본 논문에서 총 4가지의 multiple transformer base architectures 를 제시한다.
Model 1 : spatio-temporal attention
video 로 extract 한 all spatio-temporal tokens 을 transformer encoder 에 input 으로 사용한다.
CNN 에서는 Layer 를 거치면서 receptive field 가 linear 하게 증가하는 것에 반해 , transformer layer 에서는 spatio-temporal token 이 pair-wise interaction 하기 떄문에 layer 들을 더 지나도 long-range interaction 이 잘 작동한다.
하지만, 모두 pair wise 하게 interaction 하기 때문에 Multi-Head Self Attention(MSA) 는 token 의 개수에따라서 quadratic complexity ( 시간복잡도 증가/ 연산량 증가) 한다는 문제가있다.
따라서 더 효율적인 모델을 본 논문에서 더 제시한다.
Model 2:Factorised encoder
Factorised encoder 모델은 두가지 transformer encoder 로 나누어져있다.
첫번재는 spatial encoder 로 같은 temporal index 로 부터 추출된 token 간의 interaction 을 modeling 한다.
temporal index 는 d 차원으로 L_s layer 이후 얻거나 spatial encoder z^(L_s)의 Output token 으로부터 global average pooling 으로도 구할 수 있다.
각 temporal index 별로 통과한 값을 concat 하여 temporal encoder 로 넣는다. temporal encoder 는 L_t 개의
Transformer 로 구성되어 있으며, 다른 temporal indices 로 부터 나온 tokens 간의 interaction 을 modeling 한다.
최종적으로 나온 cls 토큰을 classify 한다.
(CNN base 에 대한 late fusion 의 조금 더 자세한 설명은 : https://ksh0416.tistory.com/77 참고 )
Model 3: Factorised self-attention
Model 1 과 transformer layers 수가 같다. 하지만 내부 transformer block 구조가 다른데 , multi-head att 을 모든 token 에 적용하지 않았다. 동일한 temporal index 로 부터 추출한 (spatial self-att block ) 을 self-att spatially 하게 계산한 뒤 동일한 spatial index 로 추출한 token 을 마찬가지로 temporal self-att block 에 input으로 넣는다.
계산하기 위해서 reshape 해준다. 또한 CLS 토큰을 공간적 -> 시간적 으로 변환할때 reshape 하는 과정에서 모호성을 제거하기 위해서 model 3 에서는 CLS 토큰을 사용하지 않았다고 합니다.
사실 여기서 왜이렇게 reshape 해야하는지 코드까지 뜯어서 설명했던게 다 날라가서 ....
다시한번더 지쳐서 설명하기는 어렵고.. 그냥 reshape 해야 계산이 편리하다 이정도만 알고 넘어가도 괜찮다..
Model 4: Factorised dot-product attention
spatial & temporal 각각 다른 head 를 사용하여 attention weight를 계산한다.
동일한 spatial-temporal index 를 가진 token 에 대해서만 집중하도록 key & value 를 query 에 맞춰 수정한다.
따라서 spatial : k_s,v_s 는 height,width dimension 에 대해서만 처리해주었고,
temporal : k_t,v_t 는 time 축에 대해서 처리해주었습다.
또 각 query 에 대해서만 attetion 을 변경하였기 때문에 각 head 의 output은 동일한 output 을 가집니다.
두 output 을 concat 하고 linear projection 해준다.
3.4. Initialisation by leveraging pretrained models
ViT 역시 inductive biases 가 부족하기 때문에 large-scale dataset 을 가지고 train 했을때만 효과적인 성능을 보여주었다.
하지만 많은양의 kinetics video dataset 에도 불구하고 img classficaition 과 비교해서 적은 labelled example 를 가지고 있기 때문에 scratch 로 trainig 하는 방법은 매우 어렵다.
따라서 본 논문에서는 효율적으로 train 하기 위해서 image classification 에서 pretrained model 들을 사용하고자 하였다.
Positional embeddings
vit에서도 poisitional embedding 을 통해서 input token 의 position 을 인식하도록 도와줍니다. 마찬가지로 본 논문의 모델에서도 poistional embedding 을 사용하는데 vit 와 다른점은 차원입니다.
이처럼 시간축 (n_t) 만큼 temporally 하게 반복하여서 poision embedding 합니다.
Embedding weights, E
3.2 에서 "tubelet embedding" 을 사용할때, embedding filter E 는 3D tensor 인데 반해 vit는 2차원 tensor 입니다.
video classification 을 위해서 2D flter 로 부터 3D convoultion filter 로 "inflate" 해서 embedding wegithts 를 사용합니다.
차원이 다르기 때문에 각 시간의 이미지 embedding weights 를 평균 낸 방법을 사용했습니다.
본 논문에서는 "central frame initialisation" 이라는 방법도 사용하였는데, 이는 가운데 포지션 [t/2] 부분을 제외한 나머지 부분을 0으로 세팅합니다.
이 방법을 사용하면 3D conv filter 도 "Unifrom frame sampling" 과 유사하게 작동하면서도 temporal 한 정보 역시 학습이 가능하다고 합니다.
Transformer weights for Model 3
Model 3 에서는 ViT 와 다르게 transformer block 에 두개의 multi-gead self attention(MSA) modules 이 존재합니다.
이 경우에는 spatial 같은 경우는 ViT 와 동일하게 initialise 하고 temporal 의 경우에는 0으로 설정해주었다고 합니다.
(여기 까지만 읽고 대부분 initailise 할때는 0이 아니라 normalize distribution 처럼 설정하지 않나 하는 의문이 들었는데)
이렇게 0으로 설정함으로써 residual connection 처럼 역할을 하도록 했다고 합니다.
( cf. Non-local network 에서도 같은 방법을 사용했었는데, 본 논문에서 이런식으로 temporal 한 정보에다가 residual connection 을 쓴다는게 직관적으로는 이해가 잘 가지 않는데, 동영상 자체가 temporal 한 영향이 적다면( 만약에 동영상임에도 불구하고 아예 움직이지 않는 이미지와 같은 경우를 가정해보면..) temporal 한 정보가 필요없기 때문에 skip connection 이 있어도 괜찮겠다 하는 생각이 들었다. )
4. Empirical evaluation
5. conclusion
느낀점
앞에서도 말했는데.. 거의다 작성하고 날려먹은 부분이 너무 많아서 ablation study 는 도저히 작성할 엄두가 안나기도 하고 논문자체가 좀 길어가지고 여기까지만 작성하려고 한다. 날려먹었을때 진짜 소리지를뻔했다..
일단 코드자체도 model 2만 존재하고 3,4 는 존재하지 않는 것 같다.
ViT 를 붙여서 vision transformer 를 사용하는 아이디어는 뭔가 나도 한번 상상해볼법한 아이디어여서 ViT 읽으면서 비슷비슷한 방법을 추상적으로나마 예측해보았는데 , 비슷한 구조들이 있어서 좀 더 재밌게 읽었던 것 같다.
Q1. 중간에 계속해서 차원을 reshape 하는 부분이 있는데 (model 3) 에서 , 이 이유를 아직도 잘 모르겠다.
디멘션이 높아도 계산할때 임의로 찾아가지고 계산해주면 되는거 아닌가 생각이 드는데, 차원 reshape 하거나 뭔가 변형이 필요하면 머리가 좀 아프다고 할까 .. 아마도 사람이 3차원이상의 dimension 을 머리속에 상상하는 것 자체가 힘들다보니까 그런 것 같기도하고 이런 부분에 대해서 좀 더 숙달하거나 , 혹은 이런 dimension 에 관한 것들은 그냥 수식그대로 받아드려야 하는 부분인 것 같기도하다.