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. 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

3

Kilder

1
  • An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (Dosovitskiy et al., 2020)