CvT: Introducing Convolutions to Vision Trnasformers
Haiping Wu, Bin Xiao, Noel Codella, Mencgen Liu, Xiyang Dai Lu, Yuan Lei Zhang, arXiv 2021
PDF, Vision Transformer By SeonghoonYu August 8th, 2021
Summary
CvT는 기존 CNN 구조에서 활용하는 계증 구조(hierarchical architecture)를 ViT에 적용한 논문입니다. 계층 구조를 형성할 수 있다면 low-layer에는 edge와 같은 low-level feature를 학습하고 높은 layer에서는 high-level feature을 학습할 것입니다. Vision Transformer에 계층적인 CNN의 성질을 추가하기 위하여 (1) Convolutional Token Embedding, (2) Convolutional Projection for Attention을 ViT에 도입합니다.
ViT에 CNN 연산과 계층 구조를 활용하여 엄청난 성능을 보여줍니다.
CvT의 특이사항으로는 마지막 stage에 class token을 추가하여 이 class token에 MLP head를 적용해 prediction을 합니다. 또한 positional embedding을 제거했습니다.
(1) Convolutional Token Embedding
Convolutional Token Embedding을 한줄로 요약하면 feature map에 stride 2이상의 conv 연산을 수행하여 down sample을 수행한 후 flaten을 합니다.
down sampling을 수행하므로 feature map의 크기가 작아져 token의 수를 감소하고 channel 수를 키워 token의 길이를 증가합니다. CNN 연산을 수행한 후에 flatten하여 Convolutional Projection for Attention으로 전달합니다.
여기서 수행하는 down sampling 연산 덕분에 계층적인 구조를 활용할 수 있습니다.
(2) Convolutional Projection for Attention
입력값에 FC layer를 수행하여 Q,K,V로 변환하는 과정에서 FC layer를 Depth-wise Conv 연산으로 대체합니다.
위 그림에서 (c)를 보면 Q에는 stride=1, K와 V에는 stride=2를 사용하는데 이는 연산량 감소를 위한 목적입니다.
Experiment
Positional Embedding 유무
Conv projection에서 stride
What I like about the paper
- Apply Conv layer to Vit in order to utilize hierarcher architection in ViT
my github about what i read