본문 바로가기

Research

Vision Transformer 간단설명 / 링크 모음

1. 링크 모음

[1] colab.research.google.com/github/hirotomusiker/schwert_colab_data_storage/blob/master/notebook/Vision_Transformer_Tutorial.ipynb#scrollTo=fZAPoK8jBtaD

[2] ichi.pro/ko/bijeon-teulaenseupomeo-ihae-mich-maegae-byeonsu-gyesan-167719792195827

[3] Vision Transformers for Remote Sensing Image Classification, 2021, remotesensing-13-00516-v3.pdf

[4] 나같은 초심자가 보기엔 비추이지만...혹시 모르니.  medium.com/platfarm/%EC%96%B4%ED%85%90%EC%85%98-%EB%A9%94%EC%BB%A4%EB%8B%88%EC%A6%98%EA%B3%BC-transfomer-self-attention-842498fd3225

[5] 일단..코드적 이해를 도와주는 유튜브. 설명보단..보여주는 코드가 유익

www.youtube.com/watch?v=i2_zJ0ANrw0 

[6]  towardsdatascience.com/transformers-in-computer-vision-farewell-convolutions-f083da6ef8ab

[7] Self attention 영상 자세한 설명 www.youtube.com/watch?v=yGTUuEx3GkA

[8] Self attention다른 좋은 설명 www.youtube.com/watch?v=-9vVhYEXeyQ

 


[9] https://hoya012.github.io/blog/Vision-Transformer-1/
[10] https://eehoeskrap.tistory.com/486
[11] https://velog.io/@yourmean/Paper-Review-An-Image-is-Worth-16x16-Words-Transformers-for-Image-Recognition-at-Scale
[12] https://velog.io/@woojunepark/Vision-Transformers
[13] http://dmqm.korea.ac.kr/activity/seminar/316

Code
[1] https://github.com/rishikksh20/convolution-vision-[2] transformers/blob/be17d42eef8d35b6d1075b1c1ec18f2ed41f6150/module.py#L59
[3]

 



2. 간단 설명

 

 3가지 주요 구성 요소가 있음

 (1) Patch embedding

 (2) Stack형 Transformer Encoder based Feature Extraction

 (3) Classification Head (여기선 다루지 않는다)

 

전체적인 구조는 아래와 같음. Linear Embedding 은 그림에 나오지 않아 별도 설명이 필요하지만, Attention module은 사실 이게 전부라고 보면 됨.

 

논문 Vision Transformers for Remote Sensing Image Classification 에서 발췌

 

 

 

 

(1) 1단계: Patch Embedding

Patch embedding은 먼저 이미지를 쪼개서 flatten 시킴. 즉 일단 격자 느낌으로 선형 분할한 뒤에 각 영역을 쭉 펼쳐서 1차원 vector로 만듦. 

 

 

출처: https://ichi.pro/ko/bijeon-teulaenseupomeo-ihae-mich-maegae-byeonsu-gyesan-167719792195827

 

 

(2) 2단계: Transformer Encoder

출처: https://ichi.pro/ko/bijeon-teulaenseupomeo-ihae-mich-maegae-byeonsu-gyesan-167719792195827

 

내부를 단계별로 보면.. Layer normalization을 우선 거치고 Multi-head attention을 거친다. 

그 외 Skip connection과 다시 Normalization 그리고 MLP는 문제없어 보인다.

 

다른 그림도 있다만.. 코드와 같이 보는 것이 결국 좋은 듯. [Colab에서 코드로 이해]

 

 

 

(3) MLP Head (classification head)

Task에 맞게 decoder 사용.. 

Pre-training 이 또 중요한 요소이긴 하지만.. 현재는 고려하지 않는다...