1. Transformer in Computer Vision
이전에 Transformer 글에서 설명했듯이, Computer vision에서도 NLP에서 겪는 문제점과 유사하게 기존의 CNN구조의 모델들은 모두 Long-range dependency의 문제점을 겪고 있었고, attention의 중요성도 알게 되었다. 이러한 것은 기존 CNN구조에서 단순히 receptive field를 늘린다고 해결될 문제가 아니었다.
그래서 아주 단순하게 NLP에서 사용하던 Trasnformer이랑 똑같이, Image의 픽셀을 Token 처럼 사용하고자 했었는데, 기존 attention score을 만들 때 아래 이미지와 같이 토큰*토큰 사이즈의 attention score이 만들어지는데 이미지의 경우 256이라고 하면 연산량이 너무 커진다.
이를 해결하면서 ViT가 등장하였다.
2.ViT
위에서 말했듯이 모든 픽셀에 대하여 attention weigt를 계산하는 것은 매우 비효율적이기 때문에 특정 N개의 픽셀을 모아 token으로 사용하고자 하였다.
이 ViT는 "An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale" 연구에서 등장하였다.
기본 모델구조는 동일한데, Image를 Patch로 나누고, Embedding을 시키고, Transformer의 Encoder에 넣고 각종 task를 처리한다.
2-1. Patching
Patching은 말 그대로 이미지를 패치로 쪼개는 작업이다. (H,W,C)크기의 이미지를 (P, P) 크기의 패치 N개로 나누는 작업을 의미한다.
쉽게 공식을 작성해보면 다음과 같아. N개의 패치로 나눌 때는 (16, H/4, W/4, C)가 되고 특정 크기의 패치로 나눌 때는 (2,2) 패치로 나눈다고 가정하면 (HW/4,2,2, C)가 된다.
예를 들어 위 그림과 같이 224*224 크기의 이미지를 패치 크기 14,16,32로 나눈다고 하면 공식에 따라 (256,14,14,3), (196,16,16,3),(49,32,32,3)이 된다. 이후에 각각의 패치를 flatten 시키게 된다.
위 그림에서는 14*14크기의 패치로 나누게 되면 총 16개의 패치가 나오게 되며 채널을 포함한 각 패치들을 모두 flatten 시키면 제일 우측과 같이 56*56*3 크기가 된다.
2-2. Linear Projection
이것들을 모든 patch에 대하여 수행한다음, 해당 패치들의 임베딩을 진행한다. Linear Projection을 수행하여 D크기의 feature로 변환을 해준다. (이때 D는 768,1024,1280) 즉 기존 NLP에서 단어 임베딩과 동일하게 D차원으로 모두 통일시켜 주는 것이다.
2-3. CLS Token
다음으로 임베딩이 진행된 D차원의 토큰앞에 cls token을 추가해 준다. 이 cls token은 학습 가능하며, 이미지 전체를 대표하는 토큰이다.
2-4. Positional Embedding
이 과정역시 NLP에서와 동일하게, Flatten 된 이미지가 위치 정보를 가질 수 있도록 위치정보를 추가하는 Positional embedding 된 정보를 추가해 준다.
2-5. Transformer Encoder
기존 Transformer과 동일한 방식으로 self attention을 계산하고 multi-head를 적용하는 encoder의 작업을 진행한다.
2-6. MLP Head
Transformer Encoder의 Output을 이제 task에 맞게 적용하는데 해당 연구에서는 Classification 연구를 진행했음에 따라 아까 추가했던 첫번째 CLS토큰을 MLP에 적용하여 분류 task를 수행한다. 해당 MLP Head는 2개의 Hidden layer과 GELU라는 활성화함수로 구성되어 있다.
3. Result
그 결과 ResNet 대비 엄청나게 큰 성능향상을 보여주지는 않았지만, Transformer 모델 구조 특성상 모델의 파라미터와 데이터 셋 크기가 증가해도 포화되지않고 성능향상을 보여줄 수 있으며, CNN구조 대비 아무리 Positional embedding 등을 진행해 줬더라도 이미지의 locality를 잃었음에도 기존 모델들과 유사하거나 높은 성능이 나왔다는 데 의의가 있었다.
또한 연구결과 대규모 데이터셋을 이용하여 사전학습을 진행한후 fine tuning 했을 때가 성능이 좋았다고 한다.
참고 블로그
'ML & DL > Computer vision' 카테고리의 다른 글
Stable diffusion webui Error (0) | 2024.07.29 |
---|---|
Transformer (0) | 2024.02.24 |
Computer vision Metric (0) | 2024.02.23 |
FCN: Fully Convolutional Network (0) | 2024.02.02 |
Semantic segmentation 방식 (0) | 2024.02.02 |