ViT
forkortelse for Vision Transformer
Vision Transformer (ViT) er en neural netværksarkitektur, der anvender transformer-mekanismen direkte på billeder opdelt i patches.
Kort fortalt
ViT er en model, der behandler billeder som sekvenser af brikker (patches) og bruger transformerens opmærksomhedsmekanisme til at klassificere dem.
- Kategori
- arkitektur
- Niveau
- øvet
Betydninger
1- 1
En transformer-model designet til computer vision, der opdeler et billede i faste størrelser af patches, lineariserer dem og behandler dem som en sekvens af tokens gennem en standard transformer-encoder.
Hvornår bruges det
ViT bruges primært til billedklassificering og andre computer vision-opgaver, ofte som et alternativ til convolutional neural networks (CNN). Det anvendes især når store datasæt er tilgængelige, da ViT kræver meget data for at opnå konkurrencedygtige resultater.
Kodeeksempel
import torch
import torch.nn as nn
class ViT(nn.Module):
def __init__(self, image_size=224, patch_size=16, num_classes=1000, dim=768, depth=12, heads=12):
super().__init__()
self.patch_size = patch_size
num_patches = (image_size // patch_size) ** 2
self.patch_embed = nn.Conv2d(3, dim, kernel_size=patch_size, stride=patch_size)
self.pos_embed = nn.Parameter(torch.randn(1, num_patches + 1, dim))
self.cls_token = nn.Parameter(torch.randn(1, 1, dim))
self.transformer = nn.TransformerEncoder(nn.TransformerEncoderLayer(dim, heads), depth)
self.head = nn.Linear(dim, num_classes)
def forward(self, x):
p = self.patch_embed(x).flatten(2).transpose(1, 2)
b, n, _ = p.shape
cls = self.cls_token.expand(b, -1, -1)
x = torch.cat([cls, p], dim=1)
x = x + self.pos_embed
x = self.transformer(x)
x = x[:, 0]
return self.head(x)En forenklet PyTorch-implementering af ViT-modellen med patch embedding, positionsindkodning og transformer-encoder.
Oprindelse
Termen 'ViT' er en forkortelse for 'Vision Transformer', introduceret af Dosovitskiy et al. i 2020 i papiret 'An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale'.
Kilder
1- An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale