Deep Learning

[Paper] CvT: Introducing Convolutions to Vision Transformers

ju_young 2022. 11. 8. 18:45
728x90

Introduction

많은 데이터에서 ViT의 성공에도 불구하고 성능은 여전히 비슷한 양의 데이터, 비슷한 크기의 CNN과 비슷하다. 아마도 그 이유 중 하나로 CNN 구조에서 어떤 특성들이 ViT에 부족한 것이다. 예를 들어 이미지는 인접한 픽셀들끼리 높은 관계를 가지는 것과 같은 2D local structure를 가진다. CNN 구조는 local receptive fields, shared weights, spatial subsampling(max pooling, average pooling 같은 것들을 말함), invariance 등과 같은 것들로 local structure를 잡아낼 수 있다. 또한 convolutional kernel의 계층 구조는 다양한 level의 복잡도에서 local spatial context를 고려하는 visual pattern을 학습한다.

 

본 논문에서는 강건함과 성능을 향상시키기위해 ViT 구조에 전략적으로 convolution을 추가했다는 것을 강조한다. 동시에 연산량과 메모리 효율을 유지했다고 한다. 앞서 말한 내용을 검증하기위해 새로운 architecture, Convolutional vision Transformer (CvT) 을 제안한다.

 

CvT는 convolution을 사용하기위해 ViT의 두가지 핵심 부분을 설계했다. 첫 번째, multiple stages로 transformer를 나누어 계층적인 transformer 구조를 만들었다. 각 stage는 convolutional token embedding이 있는데 이것은 token을 2D reshape하고 overlapping convolution 연산을 수행한다. (layer nomalization도 한다.)  또한 이것은 local 정보를 잡아낼 뿐만아니라 점차적으로 sequence length를 감소시키고 token feature의 차원을 증가시켜 풍부한 표현력(?)을 가질 수 있게 한다. 두 번째, 모든 self-attention block의 linear projection은 convolutional projection으로 대체하고 sxs depth-wise separable convolution 연산을 적용했다. 이것은 local spatial context를 잡아내고 attention mechanism에서 모호한 의미를 줄여준다. 또한 convolution의 stride를 사용해서 연산 복잡도를 다룰 수 있다.

 

Convolutional vision Transformer

overall pipeline

1. Convolutional Token Embedding

  • 이전 stage의 ouput token map을 다음 stage에 입력
  • 입력된 token map은 convolution 연산을 수행
  • convolution 수행 후 flatten과 layer nomalization 수행

Convolutional Token Embedding layer는 token feature 차원과 각 stage에서의 token 개수를 적응시켜준다. 이런 식으로 각 stage에서 token sequence length를 점차 감소시키고 반면에 token feature 차원을 증가시킨다. 이것은 토큰이 더 복잡한 visual pattern을 표현할 수 있는 능력을 가질 수 있게 한다.

 

2. Convolutional Projection for Attention

Convolutional Projection layer의 목적은 local spatial context를 모델링하고 K(key)와 V(value) 행렬의 undersampling(pooling 같은 것들)을 허용함으로써 효율적인 이점을 얻기 위함이다.

 

위 그림의 (b)가 본 논문에서 제안한 Convolutional Projection이고 수식으로 나타내면 다음과 같다.

728x90