DL Basic) 필수 & 선택과제

한량·2021년 8월 10일
0
post-custom-banner

필수과제1) ViT: Vision Transformer

  • NLP에서 쓰이는 transformer를 CV에 적용

  • NLP에서는 connection이 먼(문장 상에서 거리가 먼) node들의 정보도 가져오고 싶어서 attention을 이용했다
  • image는 각 픽셀을 node로 볼 수 있다
    하지만 모든 픽셀과의 관계(attention)을 보는 것은 비효율적
  • 그래서 sub-patch를 적용
  • patch는 einops 라이브러리를 활용
    (torch.view보다 훨씬 간편해서 적극 추천)

Patch Embedding

  • According to the paper, "To handle 2D images, reshape the image xR[H×W×C]x \in R^{[H \times W \times C]} into a sequence of flattened 2D patches xpR[N×P2C]x_p \in R^{[N \times P^2 * C]} where (H,W)(H,W) is the resolution of the original image, CC is the number of channels, (P,P)(P, P) is the resolution of each image patch, and N=H×W/P2N = H \times W/P^2 is the resulting number of patches, which also serves as the effective input sequence length for the Transformer. The Transformer uses constant latent vector size DD through all of its layers, so we
    flatten the patches and map to DD dimensions with a trainable linear projection."

  • H,WH, W: input image의 resolution(height, width)
  • CC: input image의 channel
  • NN: pathch의 갯수
  • PP: patch의 한 변의 길이
  • DD: embedding vector의 dimension

Encoder

MHA, Multi-head Attention

Linear Projection

  • Patch+Position embedding 된 벡터를 linear projection해서 embedding size로 맞춰줌

Multi head

  • embedding vector와 크기가 같은 QKV를 head_num으로 나눠줌

SDPA, Scalde Dot-Product Attention

  • 위 계산을 통해 MHA의 output이 나옴
profile
놀고 먹으면서 개발하기
post-custom-banner

0개의 댓글