patch-embedding
En teknik i vision transformers hvor et billede opdeles i flade udsnit (patches), og hvert udsnit omdannes til en vektor (embedding) via en lineær projektion.
Kort fortalt
Patch-embedding er en måde at konvertere et billede til en sekvens af vektorer, så det kan behandles af en transformer, ligesom man behandler ord i en sætning.
- Kategori
- teknik
- Niveau
- øvet
Betydninger
1- 1
Processen med at opdele et billede i et gitter af patches og projicere hver patches fladgjorte pixels til en vektor i et embeddings-rum ved hjælp af et lineært lag.
- I Vision Transformer modellen opdeles inputbilledet i patches, og hvert patch omdannes til en embedding gennem en lineær projektion.
- Patch-embedding-laget er et centralt element i ViT, der muliggør at transformers kan anvendes direkte på billeder.
Hvornår bruges det
Patch-embedding anvendes primært i Vision Transformer (ViT) modeller til klassifikation og andre computer vision opgaver. Først opdeles billedet i et gitter af f.eks. 16x16 pixels patches, som flades ud og projiceres til en fast embeddings-dimension. Der tilføjes ofte en positions-embedding for at bevare rumlig information.
Formel
e = W · flatten(patch) + b, where patch has shape (P, P, C), flatten becomes vector of length P²·C, W is a matrix of shape (D, P²·C), and e is a vector of dimension D.Kodeeksempel
import torch.nn as nn
patch_dim = patch_size * patch_size * channels
embed_dim = 768
self.proj = nn.Linear(patch_dim, embed_dim)
# x shape: (batch, num_patches, patch_dim)
x = self.proj(x)Eksempel på et patch-embedding-lag i PyTorch, der projicerer hvert patch til et embeddings-rum.
Oprindelse
Termen stammer fra vision transformers, især artiklen 'An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale' (Dosovitskiy et al., 2020), hvor billedet behandles som en sekvens af patches, analogt til ord i NLP.
Afledte ord
3Kilder
1- An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (Dosovitskiy et al., 2020)