https://arxiv.org/abs/2212.03229
현재 Arxiv에만 올라온 논문, 2022년 12월 6일에 공개
Unoffical Implementation
https://github.com/daniel-code/TubeViT
Abstract
- 저자들은 ViT Encoder를 Image, Video Input모두에서 원활하게 작동할 수 있는 효율적인 Video Model로 전환할 수 있는 간단한 접근 방식을 제시
- Input을 Sparsely Sampling함으로써 Model은 Image, Video Input에 대해 Training과 Inference가 가능
- 이 Model은 Scalable이 간편하고, Full Finetuning 없이 PreTrain된 ViT에 쉽게 적응함
Introduction
- ViT는 Visual Representation Learning에서 다재다능하고, Image UnderStanding, Multimodal, Self-Supervised에서 잘 이용됨
- 하지만 Video에서 Adaptations을 어렵고, 계산량이 많음
- ViViT, MTV, TimeSformer에서는 많은 수의 Frame을 처리하도록 설계 - Video Understanding은 Computer Vision의 주요 Task
- 3D CNN으로 Spatiotemporal information을 학습하여 처리 - Image에 대한 메커니즘을 차용하기도 하는데, Kernel을 3D로 부풀려 Pretrain된 CNN의 Weight를 이용(I3D)
- 그러나 Video에 적용되면 이런 Kernel들은 더이상 Image에 적용 불가능 - 또한 대부분은 Previous Work는 Image, Video를 완전히 다른 Input으로 취급하여 Video.또는 Image Input에 대해 독립적인 방법을 제공함
- 이는 두 가지 모두를 처리할 수 있는 Model설계가 어려움
- 동시에 Image와 Video Input은 본질적으로 관련이 있으며 Single Visual Backbone은 Input 중 하나 또는 둘 다를 처리할 수 있어야 함 - 몇몇 접근에서 Video, Image에 대해 동시에 처리하도록 함(Co-Training)
- Perceiver, Flamingo는 같은 Model은 Input을 Resampling하고 Fixed Number Feature로 압축하여 해결
- 그러나 이런 Resampling은 Long Video에는 Cost가 많음
- 대표적으로 Flamingo는 Video은 1FPS로 Sampling된 개별 Frame으로 취급하여 Temporal 정보를 제한
- 낮은 FPS Sampling 및 Frame별 Modeling은 Something-Something과 같이 Short Action을 인식하는데 좋지 않음
- 반대로 높은 Frame에서는 계산이 불가능
- 이러한 Limitation을 극복하고자 TubeViT라는 Simple, Effective Model을 제안
- Image, Video Input에 Standard ViT Model을 원활하게 활용
- 또한 Joint Image and Video Learning을 위한 Lightweight Approach를 소개 - 저자들의 방법은 Video에서 다양한 Size의 3D Space-Time Tube를 Sampling하여 Vision Transformer에서 사용되는 Learnable Token을 생성(그림1)
- Sparse Video Tube를 사용해 Model은 Input중 하나에 쉽게 적용이 가능하며, Training 및 Fine Tuning을 위해 Data Source중 하나 또는 둘다 잘 활용이 가능함
- Sparse VIdeo Tube는 자연스럽에 Original Video Signal과 Image Signal를 처리하는데, 이는 Video의 Action 기타 Sptio Temporal 정보를 이해하는데 중요함
- Video Model은 Train이 비쌈
- Previous Work에서는 Frozen Model을 이용하거나, Video에 Adapting하는 방식을 이용
- 해당 저자들은 이러한 아이디어를 확장하여 Sparse Video Tube를 사용하여 훨씬 더 큰 ViT Model을 Lightweight Training이 있는 Video에 적용
- 따라서 적은 Resources로 강력한 Large Video Model 생성이 가능 - K400,600,700 SSv2에서 SOTA
- 또한 From Scratch 또는 ImageNet-1k 및 Kinetics Dataset에서 Train되고, 매우 큰 Dataset(JFT-300M)에서 Training 한 것보다 성능이 우수함, videoMAE같이 Video를 이용하여 Pretraining한 것보다 성능이 우수함
- 또한 Sparse Video Tube을 이용하여 Image, Video 모두에 대해 Training된 Weight를 잘 공유할 수 있음
- 이는 Kernel을 Inflate하거나 새로운(I3D), New Temporal Specific Layer를 추가는 이전 작업과는 대조적
- Sparse Sampling으로 인해 Token 수가 낮게 유지됨, 이는 FLOP를 줄이고 Accuracy을 향상시키는 데에도 중요하다는 것을 알게됨
저자들의 Contribution - Sparse Video Tube기법을 개발
- 다양한 Size의 3D Space-Time Tube로 Video을 Sparsely하게 Sampling하여 얻음 - ViT 아키텍처를 Video에 쉽게 Adapt 시키는 Universal Visual Backbone
- Joint Image and Video Understanding , Either Input
- Easy-to-Scale Approach For Video Understanding, Already trained Large ViT Model을 사용가능
Related Work
- Video Understanding을 해결하기 위해 많은 연구가 진행됨
- 3D CNN, Video Transformer 하지만 문제점이 많음 - transformers focus on only a few tokens
- Frame은 Redundant Information(중복된 정보)을 가지고 있음
- 따라서 Frame Sampling을 하기 위한 전략을 세움
- 몇몇 연구에서는 Token의 개수를 줄여서 Redundant를 줄이기 위해 노력했지만, 일반적으로 Dense하게 시작하고, 휴리스틱하게 줄이는 방법을 이용함
- 저자들은 초기 Input을 더 Sparse 하게 Sampling하여 효율성을 증가시켰음 - VideoMAE는 Video Pretrianing으로 연구
- Masking이 유익하다는 결과를 얻음
- 그러나 Single Tube Shape를 이용하고, Non-Overlapping Patch이용, Image Video를 Co-Training 이용하지 않음 - MTV, SlowFast Network에서 다양한 View, Stream에서 이점을 발견
- MTV도 비슷하게 다양한 Tube을 이용하지만, Sparse Sampling을 통해 여러개의 작은 View당 Encoder가 아닌 단일 ViT Encoder Model을 사용
- 이는 Image와 접근 방식을 더욱 통합 - 또 다른 Video Understanding의 또 다른 작업은 Pretraining동안 Image Dataset을 활용하는 것
- Image Dataset은 Annotation이 더 잘 달리고, 풍부한 Semantic Information을 제공(Dataset이 많음)
- 한 가지 Approach는 Kernel을 Inflating하는 것
- Image에서 Pretraining -> 그리고 Video로 Training하는 방식을 진행 - Image and Video를 Joint하게 처리하는 방법도 있음
- 이러한 Apporach는 비효율적일 수 있는 두개의 Input을 모두 처리하기 위해 아키텍처를 조정
- Image 입력을 1Frame의 Video로 생각하거나, Input을 먼저 Encoding하기 위해 별도의 Network를 이용 - Previous Work와 다르게 저자들의 방법은 Simple and Straightforward
- 중요한 차이점은 Tube가 Raw Input에 Sparsely하게 적용되고, 서로 다르 모양의 Overlapping Tube, 단일 Shared Backbone을 이용
- 두번째로 중요한 것은 모델이 Image, Video 양식 사이에서 완전히 공유되어, 두 Task모두 성능 향상이 가능하고, Vision작업에 일반적으로 적용가능
Method
Sparse Video Tubes
- 저자들은 Simple And Straightforward Method를 제안, Image와 Video 모두에 원활하게 적용이 가능함
- Image에 대한 Standard ViT의 Tokenization Approach방식인 16x16 Kernel이 있는 2D Conv이용
- Sparseness 가 Video에 효과적이라는 관찰을 기반으로 진행(Token이 많아지면 성능이 나빠짐)
- Video를 Dense하게 Tokenize하는 Prior Work를 따르기 보다는 2D Kernel을 이용하지만, 예를 들면 16번쨰 Frame에 큰 Temporal Stride를 이용
- 따라서 32 x 224 x 224 Video Clip의 경우 6k개의 Token(32 x 14 x 14)가 아닌 392개의 Token이 생성
- 392개의 Token이 생기는 과정 (16, 32 Frame), 14 x 14 x 2 = 392 - 하지만 이런 Sparse Spatial Sampling은 Information을 손실이 발생할 수도 있음
- 예를들어 Quick Or Short Action(매우 작은 Frame에 발생하는 Action 및 크기가 작은 Action) - 그러므로 저자들은 Low Spatial Resolution으로 많은Frame에서 정보를 얻기 위해 16x4x4 Tube같은 다양한 모양의 Sparse Tube를 만듬
- 이러한 Tube는 어떠한 Shape도 가능하고, 이것들의 효과를 실험적으로 증명
- 중요한것은 이러한 Tube들은 Large Stride를 가지고, Sparsely Sampling함
- 또한 Patch가 항상 (0,0,0)에서 시작되지 않도록 Optionally 하게 Start Offset을 추가하여 Tube간에 Overlap을 줄일 수 있음(그림2)
- MTV에서도 이런 접근을 해지만, 여러 Transformer에 의해 Dense하게 처리하므로 연산량을 많음
- 또한 Previous Work와 다르게 (같은)Tube간의 Overlapping도 가능함
- 예를들면 Tube (T x H x W)에 대해 Spatio-Temporal Stride (Ts, Hs, Ws), (x, y, z) offset 적용 가능
- 이런 설계를 통해, 저자들의 접근 바식은 Image and Video의 시각 정보의 원활한 Fusion이 가능하게함(다양한 Patch Embdding방식을 이용, Sparse, etc..) - Sparse Spatial Sampling은 Image 및 Frame Token을 공유 가능
Spase Video Tube는 낮은 수의 Video Specific Token을 생성 - 이를 통해 Image와 Video간에 ViT Model을 잘 공유함
Positional embedding for sparse video tubes
- 저자들의 Approach 중에 핵심적인 측면은 Positional Embedding
- Language Model에서 Relative Positional Embedding은 흔하고 효과적인 접근법인
- 하지만 여기서 두 Token사이의 Relative Position은 최소한의 의미를 가지며, 원본 Video나 Image에서 Patch Tube가 어디에서 왔는지에 대한 실제 Reference를 없음(정말로 상대적인 Position만을 제공함, Bias Map을 이용해)
- ViViT, ViT, TimeSformer에서는 Learnable Positional Embedding을 이용하지만, 각 Patch가 Overlapping되는 경우 어디에서 왔는지 반영하지 않아 모델에게 이런 방식은 어려움
- 대신에 Fixed sine/Cosine Embedding을 이용하기로 함
- 중요한 것은 저자들은 Positional Embedding을 적용할 때 각 Tube의 Stride, Kernel Shape, Offset을 고려
- 이 방식은 Positional Embedding이 해당 Tube의 Spatio-Tmeporal Location을 갖도록 보장함 - (T는 Constant Hyperparameter), (j는 0 ~ d//6(d는 Embedding Dim))
- (t, x, y는 0 ~ T, H, W), zi ∈ R(T×H×W×D):
- 이것들은 Spatio-Temporal Position Embedding을 토큰 Zi의 Feature Dimension에 추가
- Transformer에서 처럼 각 Channel에 대해 다른 Wavelength가 추가됨
- d//6은 6개의 요소가 존재하기 때문에 이용(각 x,y,t에 대한 Sin 및 Cosine값), 이는 Representation의 각 Channel에 대한 Position Value를 생성
- 중요한 것은 zi[t,x,y]는 Tube의 Center를 나타내는데, 모든 Stride와 Offset을 고려하여 Tube의 Center를 나타냄(채널 치수는 표현안함)
- Tokenization Step이후에 모든 Token을 연결하고, Standard Transforemr Model을 적용
- 이런 간단한 구조를 통해 Model은 모든 Input간에 대부분의 Weight를 공유할 수 있고, 이는 좋음!
Sparse Tube Construction
- 저자들은 Visual Tube를 만드는 몇가지 Method를 탐구
- Core Approach는 2개의 Tube로 구성됨
- Image를 Token화 하는데 사용되는 1 x 16 x 16 x d, Video에 추가로 사용되는 8 x 8 x 8 x d Tube 2개로 구성됨
- 이 두개의 Tube는 모두 16 x 16 x 16 Stride를 가지고있고, 강력한 성능을 제공, 몇가지 Variation을 탐구 - Multi-Tube
- 저자들의 Core-Apporach는 다양한 Size의 여러개의 Tube를 추가
- 예를 들어 Temporally Long and Spatial Small Tube를 이용하여 긴 Action을 학습 16 x 4 x 4
- 아니면 Spatial 정보에 집중하는 2 x 16 x 16 Tube를 이용
- 많은 Variation이 있고 실험적으로 이를 탐구(Shape 및 Stride)
- Space-to-Depth
- 또 다른 Core Approach는 Depth to Space에서 영감을 받은 Space to Depth이다
- 만약 Factor가 2일때 Tube의 Channel수를 2배로 줄이는데, 그러면 튜브의 모양이 T x H x W x d/2이 됨
- 그 뒤에 두개의 Token을 Channel Axis을 따라 병합함 - Interpolated Kernels
- 이 Setting을 위해 각 Tube에 대해 Unique Kernel을 갖는 대신에 모양이 8 x 8 x 8인 1개의 3D Kernel을 학습
- 그런 다음에 Tri-Linear interpolation으로 Kernel을 Tube 구성에 따라 4 x 16 x 16, 32 x 4 x 4 등 다양한 Size로 Reshape을 진행
- 8 x 8 x 8의 Single Kernel을 이용해서 다양한 Size의 Kernel을 생성 가능
- 몇가지 장점이 존재하는데,
1) Video Stream에서만 사용되는 Learnable Parameter를 줄일 수 있음
2) Kernel을 좀더 Flexible하게 이용이 가능함
- 예를 들면 더 긴 Video를 처리하기 위해 길게 만들거나(Temporal 축으로 길게),
- (작은 Object를 찾기 위해 Spatial을 크게 만들수도 있음 ??) - TubeViT의 접근법은 위에서 언급한 Multi-Tube와 Space-To-Depth의 조합으로 구성되고, Setting은 Supplemental 에서 제공, Interpolated Kernel을 Ablation에서 실험진행
Image and Video Joint Training
- 위에서 설명한 것과 같이, 저자들의 접근 방식은 Image, Video 두 Input모두 원활하게 adapt함
- Image+Video Joint Input은 드물지만, 이 둘을 함께 사용하는 능력은 Training시에 중요하다(Many Dataset Valuable Annotations, ImageNet, Kinetics)
- Jointly Training은 저자들의 방식이 매우 쉬움
- Image는 2D Kernel에 의해 Token이 되고, Video는 2D Patch(Large Temporal Stride), Sparse Tube에 의해 Token이됨
- 그 뒤에 Standard ViT에 전달되고, 두 경우 모두 Position Embedding이 제공됨
- 이 Position Embedding Apporah는 Joint-Training이 효과적이기 위해 필요
- 이를 Section4의 Joint Training에서 입증
Image-To-Video Scaling Up of Models
- 또한 Model은 더 효율적으로 Scaling Up하는 방법을 제안함
- Training Large ViT Model은 연산량이 너무 비쌈, 특히 Video의 경우에는 더 문제임
- 저자들의 Model은 거의 모든 구성요소가 Image와 Video 모두에서 공유되기 때문에, 저자들은 Heavy Fine Tuning없이 큰 Model을 활용하는 방법을 탐구
- 첫번째
- 저자들은 Jointly Image and Video에 대해 더 작은 Model을 공동으로 Training을 진행
- 이것은 Tube에 대한 Weight Set을 제공
- 그런 다음 Large-Pre-Trained Image ViT를 가져오고, Tube를 더 추가함( 그림에서 보면 2D Patch LargeModel, Small Model에서 학습시킨 Tube Patch들을 Large Model에 적응시킴)
- 이런 Tube들은 Small Model과 같은 Kernel Weight를 사용하여 추가적인 Training을 피할 수 있음
- 일반적으로 큰 ViT는 더 큰 Embedding Dimension을 이용하므로, 다시 Space-To-Depth Transform을 사용하여 새로운 Weight없이 적절한 Channel을 가진 Token을 생성 - 두번째
- Network에서 특정 Point를 Pick하고, 그 이전 Layer를 모두 Freeze시킴
- 예를 들자면 ViT-H의 32개의 Layer중에 26번째를 Point로 잡으면 아래와 같이 Network에 Gate Connection을추가
- s는 Network가 ViT Model의 Frozen Layer이고(s = 26), z0은 Tube의 Raw Input Token
- 알파는 Learned Gating Parameter로, 0으로 초기화
- 학습 초기에는 이 Gate는 Representation에 영향을 미치지 않으므로, ViT는 변경이 되지 않지만, 해당 Point에서는 Raw Tube를 통합하는 방법을 배울수 있고, Later Weight를 Refine가능함
Experiment
- Kinetics 400, Kinetics 600, Kinetics 700,and SomethingSomething V2
- main results are trained jointly on ImageNet-1k (of 1.2M images) and the video data
- 90M Base (B), 311M Large (L). A 635M Huge (H)
- ‘created’ with Image-to-Video scaling.
Main Result
- 4개의 Tube Configuration을 이용, Input 32x224x224
- (8x8x8, stride=(16,32,32))
- (16x4x4, stride=(6,32,32), offset=(4,8,8))
- (4x12x12, stride=(16,32,32), offset=(0,16,16))
- (1x16x16, stride=(32,16,16)) - 총 559개의 Token만이 생기고, 많은 Tube Configuration을 Test, Space-to-Depth도 이용, Create는 Image-To-Video Scaling Up기법을 이용한 경우, 연산량을 아끼고 성능을 개선함
- K400, K600, K700, SSv2에서 모두 SOTA에 달성
- 의미있는것은 Large Pretraining Data를 사용한 Model보다 좋은 결과를 얻음(CoCa 1.8B, JFT, MTV-H)
- SSv2는 Dynamic Activities이지만 저자들의 접근법이 잘 맞아 SOTA에 달성
- Joint Image+Video Training
- Kinetics는 Spatial Information이 중요한 데이터셋
- K-600에서 진행한 결과 ImageNet + Kinetics Jointly가 가장 좋은성능이 나옴 - 저자들은 또한 TimeSformer Method Dense Patch, inflated 3D Kernel(ViViT)에서 이용된것을 Test
- 두 경우 모두 제안된 접근된 제안방식이 모두 효과적 - 또한 저자들은 Pretraining시에 Small Model을 이용하여 연산량이 적은 것이다.
- Sainty Check로 ImageNet에서 성능을 확인했는데, 저자들의 ViT-B 모델이 좋은 성능을보임(일반적으로 Pretraining한 결과보다, 물론 튜닝도 안하고, Data Augmentation, Learning Schedules 조정안함)
Scaling Video Training With Sparse Video Tube
- Table6에서 저자들은 증명했는데, Small TubeViT Model을 이용해서 Large-Scale Image Only Pretrain 모델을 어떻게 적용할 수 있는지 보여준다
- 저자들은 이미 Pre-Train된 ViT-H를 활용하는것으로 시작
- TubeViT-B에서 Learned Tube를 가져와 ViT-H Image Tokenizer와 함께 사용해 이전과 동일한 Video Token Set을 생성
- 그런 다음에 이것들은 ViT-H의 Input으로 사용되고, Latter Part만 Video Data에 대해 Fine Tuning을 진행
- 이것은 Model을 Full Finetuining하는 것이 아니므로 계산량이 저렴하고, 거대한 ViT Model을 확장하고 활용할 수 있는 효과적인 방법
- Gate또한 훌륭하다는것을 확인, Update가중치가 줄어들어 Training Time이 43% 감소 (튜브정보를 넣어줘서 Encoder를 통과하면서 바뀐데이터에 Tube정보를 직방으로 넣어줌),ViT is unchanged. However, it can learn to incorporate the raw tubes at this point and further refine the later weights.
- Even pretraining of handful of layers can achieve performance approaching the full model training
Detrimental Effects of Too Many Tokens
- 다음으로 Figure4와 같이 Model에 사용된 Token수의 효과를 연구
- 이 결과가 저자들의 접근방식이 왜 잘 작동하는지에 대한 또 다른 핵심
- Token의 수가 너무 많으면 성능이 떨어짐
- 예를 들어 Self-Attention이 더 긴 Sequence를 학습하기 위해 고군분투하거나, 더 긴 Sequence를 학습하기에 충분한 데이터가 없거나, Model이 더 긴 Sequence에 Overfitting할수도 있기 때문이다.
- 이 결과는 현재 Dataset의 경우 Sparse Sampling이 Video를 처리하는데 효과적이고 효율적인 방법임을 나타냄
- 또한, 길고 조밀하게 샘플링된 시퀀스를 사용하는 기존의 것이 이것에 의해 영향을 받을 수 있으며, 아마도 인수 분해된 주의 모듈이 필요한 또 다른 이유일 것이다.??
Main Ablations
- (a) Position Embedding의 효과를 연구
- Fixed Cosine Embedding이 훨씬 우수
- 직관적으로보면 Token을 Sparsely Sampling, Overlapping Token을 이용하므로 해당 방법이 가장 Token의 위치를 잘 Capture - (b) Tube의 개수에 따른 성능변화를 측정
- 이전의 Multi View와 일치하는 이 발견은 다양한 Tube를 가지는것이 Video Understanding에서 우수 - (c) Depth-to-Space Version을 연구
- 다시 - (d) Model이 Training된 것보다 더 많은 Patch를 이용하여 Eval을 진행
- 이를 위해 Kernel의 Stride를 줄임
- 처음에는 결과가 개선되지만, 2배 증가한 후에는 Eval Data가 Training Data와 너무 달라 성능이 저하됨 - (e) 저자들은 Interpolated된 Single kernel의 Ablity를 연구
- 각 Tube마다 하나씩 N개의 3D Convolution을 갖는 대신에 1개의 8x8x8D Kernel을 이용하고, Interpolation을 진행
- 놀랍게도 이것이 Network에서 Learnable Parameter를 줄이고 잘 동작한다는 것을 파악 - (f) Multi-Crop Evaluation을 측정
- 4 × 3 performs nearly the same as the 10 × 10 setting 거의 비슷
- 우리는 Single Crop이라도 강력한 성능을 제공한다는 것을 발견, Standard 4×3은 10×10 Setting과 거의 동일한 성능을 발휘하여 Sparse Samplie이 상당히 Suitable하고 추가 정보가 유익하지 않음
- (c) Depth-to-Space Version을 연구
- 다시 - (d) Model이 Training된 것보다 더 많은 Patch를 이용하여 Eval을 진행
- 이를 위해 Kernel의 Stride를 줄임
- 처음에는 결과가 개선되지만, 2배 증가한 후에는 Eval Data가 Training Data와 너무 달라 성능이 저하됨
Conclusion
- 저자들은 Video Recognition을 위한 Sparse Video Tube를 제안
- Sparse Video Tube를 사용하면 ViT Encoder를 효율적인 Video Model로 전환 가능
- 접근 방식은 간단하고, Image와 Video Data와의 원활한 Joint Training을 가능하게 하며 여러 Dataset에 거쳐 성능은 개선
- 또한 제안된 방법으로 Video Model의 좋은 Scailing기법을 제안
- Joint Training, Token Reduced, Shared Image Video Weight에 대한 여러 실험으로 SOTA달성
Implementation Detail
- Charades같이 Long Video에만 128 Frame을 이용
- Large ViT Model학습시에 불안정한것을 확인
- Weight Decay Value, LR를 줄임, 아니면 Accuracy가 0으로 가거나, Loss가 Flat됨 - Charades나 SSv2에서는 (작은데이터)에서는 DataAugmentation이나 Dropout, Label Smoothing을 적용
- 모든 Data에는 RandAugment적용
Joint ImageNet and Kinetics Training
- ImageNet, Kinetics을 공동으로 학습시에 Class 예측을 출력하기 위해 별도의 FC-Layer를 이용
- ImageNet은 1000, Kinetics는 600개의 Class를 이용
- 그런 다음에 관련 Head에 대한 Loss를 계산하고 Backpropagation을 진행
- Charades and SSv2는 Kinetics-600+ImageNet pretrained model and finetune
Additional Experiments on Charades
- Charades Video는 평균 30초, 또한 Multi Label이므로 다른 설정을 이용함
- 첫째, Multi Tube방식이 이전 작업만큼 성능이 안좋음
- Charades는 Object관련 동작이 많고, Temporal Information이 매우 많음 -> 더긴 Video를 포함하기 위해 데이터에 더 적합하도록 Model을 수정
- Interpolation으로 Tube모양을 늘림• (1 × 16 × 16) • (16 × 16 × 16) • (32 × 8 × 8) • (4 × 32 × 32) - 두가지 중요한 요소를 주목
Ablations on Tube Shapes