From df656fe7c780cd0595bce6591bea17318608f8eb Mon Sep 17 00:00:00 2001 From: Phil Wang Date: Thu, 31 Mar 2022 09:51:12 -0700 Subject: [PATCH] complete learnable memory ViT, for efficient fine-tuning and potentially plays into continual learning --- README.md | 64 +++++++++ images/learnable-memory-vit.png | Bin 0 -> 111031 bytes setup.py | 2 +- vit_pytorch/learnable_memory_vit.py | 216 ++++++++++++++++++++++++++++ vit_pytorch/vit.py | 2 +- 5 files changed, 282 insertions(+), 2 deletions(-) create mode 100644 images/learnable-memory-vit.png create mode 100644 vit_pytorch/learnable_memory_vit.py diff --git a/README.md b/README.md index d4cfdf6..3be2dc0 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ - [Patch Merger](#patch-merger) - [Vision Transformer for Small Datasets](#vision-transformer-for-small-datasets) - [Parallel ViT](#parallel-vit) +- [Learnable Memory ViT](#learnable-memory-vit) - [Dino](#dino) - [Accessing Attention](#accessing-attention) - [Research Ideas](#research-ideas) @@ -903,6 +904,61 @@ img = torch.randn(4, 3, 256, 256) preds = v(img) # (4, 1000) ``` +## Learnable Memory ViT + + + +This paper shows that adding learnable memory tokens at each layer of a vision transformer can greatly enhance fine-tuning results (in addition to learnable task specific CLS token and adapter head). + +You can use this with a specially modified `ViT` as follows + +```python +import torch +from vit_pytorch.learnable_memory_vit import ViT, Adapter + +# normal base ViT + +v = ViT( + image_size = 256, + patch_size = 16, + num_classes = 1000, + dim = 1024, + depth = 6, + heads = 8, + mlp_dim = 2048, + dropout = 0.1, + emb_dropout = 0.1 +) + +img = torch.randn(4, 3, 256, 256) +logits = v(img) # (4, 1000) + +# do your usual training with ViT +# ... + + +# then, to finetune, just pass the ViT into the Adapter class +# you can do this for multiple Adapters, as shown below + +adapter1 = Adapter( + vit = v, + num_classes = 2, # number of output classes for this specific task + num_memories_per_layer = 5 # number of learnable memories per layer, 10 was sufficient in paper +) + +logits1 = adapter1(img) # (4, 2) - predict 2 classes off frozen ViT backbone with learnable memories and task specific head + +# yet another task to finetune on, this time with 4 classes + +adapter2 = Adapter( + vit = v, + num_classes = 4, + num_memories_per_layer = 10 +) + +logits2 = adapter2(img) # (4, 4) - predict 4 classes off frozen ViT backbone with learnable memories and task specific head + +``` ## Dino @@ -1442,6 +1498,14 @@ Coming from computer vision and new to transformers? Here are some resources tha } ``` +```bibtex +@inproceedings{Sandler2022FinetuningIT, + title = {Fine-tuning Image Transformers using Learnable Memory}, + author = {Mark Sandler and Andrey Zhmoginov and Max Vladymyrov and Andrew Jackson}, + year = {2022} +} +``` + ```bibtex @misc{vaswani2017attention, title = {Attention Is All You Need}, diff --git a/images/learnable-memory-vit.png b/images/learnable-memory-vit.png new file mode 100644 index 0000000000000000000000000000000000000000..e26ffcd875b7239d78b978366cff426ef40f0927 GIT binary patch literal 111031 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�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
8$?5MKGEl<} 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 literal 0 HcmV?d00001 diff --git a/setup.py b/setup.py index 7b05251..52933b2 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name = 'vit-pytorch', packages = find_packages(exclude=['examples']), - version = '0.30.0', + version = '0.31.0', license='MIT', description = 'Vision Transformer (ViT) - Pytorch', author = 'Phil Wang', diff --git a/vit_pytorch/learnable_memory_vit.py b/vit_pytorch/learnable_memory_vit.py new file mode 100644 index 0000000..7764052 --- /dev/null +++ b/vit_pytorch/learnable_memory_vit.py @@ -0,0 +1,216 @@ +import torch +from torch import nn +import torch.nn.functional as F + +from einops import rearrange, repeat +from einops.layers.torch import Rearrange + +# helpers + +def exists(val): + return val is not None + +def pair(t): + return t if isinstance(t, tuple) else (t, t) + +# controlling freezing of layers + +def set_module_requires_grad_(module, requires_grad): + for param in module.parameters(): + param.requires_grad = requires_grad + +def freeze_all_layers_(module): + set_module_requires_grad_(module, False) + +def unfreeze_all_layers_(module): + set_module_requires_grad_(module, True) + +# classes + +class FeedForward(nn.Module): + def __init__(self, dim, hidden_dim, dropout = 0.): + super().__init__() + self.net = nn.Sequential( + nn.LayerNorm(dim), + nn.Linear(dim, hidden_dim), + nn.GELU(), + nn.Dropout(dropout), + nn.Linear(hidden_dim, dim), + nn.Dropout(dropout) + ) + def forward(self, x): + return self.net(x) + +class Attention(nn.Module): + def __init__(self, dim, heads = 8, dim_head = 64, dropout = 0.): + super().__init__() + inner_dim = dim_head * heads + + self.heads = heads + self.scale = dim_head ** -0.5 + self.norm = nn.LayerNorm(dim) + + self.attend = nn.Softmax(dim = -1) + self.dropout = nn.Dropout(dropout) + + self.to_q = nn.Linear(dim, inner_dim, bias = False) + self.to_kv = nn.Linear(dim, inner_dim * 2, bias = False) + + self.to_out = nn.Sequential( + nn.Linear(inner_dim, dim), + nn.Dropout(dropout) + ) + + def forward(self, x, attn_mask = None, memories = None): + x = self.norm(x) + + x_kv = x # input for key / values projection + + if exists(memories): + # add memories to key / values if it is passed in + memories = repeat(memories, 'n d -> b n d', b = x.shape[0]) if memories.ndim == 2 else memories + x_kv = torch.cat((x_kv, memories), dim = 1) + + qkv = (self.to_q(x), *self.to_kv(x_kv).chunk(2, dim = -1)) + q, k, v = map(lambda t: rearrange(t, 'b n (h d) -> b h n d', h = self.heads), qkv) + + dots = torch.matmul(q, k.transpose(-1, -2)) * self.scale + + if exists(attn_mask): + dots = dots.masked_fill(~attn_mask, -torch.finfo(dots.dtype).max) + + attn = self.attend(dots) + attn = self.dropout(attn) + + out = torch.matmul(attn, v) + out = rearrange(out, 'b h n d -> b n (h d)') + return self.to_out(out) + +class Transformer(nn.Module): + def __init__(self, dim, depth, heads, dim_head, mlp_dim, dropout = 0.): + super().__init__() + self.layers = nn.ModuleList([]) + for _ in range(depth): + self.layers.append(nn.ModuleList([ + Attention(dim, heads = heads, dim_head = dim_head, dropout = dropout), + FeedForward(dim, mlp_dim, dropout = dropout) + ])) + + def forward(self, x, attn_mask = None, memories = None): + for ind, (attn, ff) in enumerate(self.layers): + layer_memories = memories[ind] if exists(memories) else None + + x = attn(x, attn_mask = attn_mask, memories = layer_memories) + x + x = ff(x) + x + return x + +class ViT(nn.Module): + def __init__(self, *, image_size, patch_size, num_classes, dim, depth, heads, mlp_dim, pool = 'cls', channels = 3, dim_head = 64, dropout = 0., emb_dropout = 0.): + super().__init__() + image_height, image_width = pair(image_size) + patch_height, patch_width = pair(patch_size) + + assert image_height % patch_height == 0 and image_width % patch_width == 0, 'Image dimensions must be divisible by the patch size.' + + num_patches = (image_height // patch_height) * (image_width // patch_width) + patch_dim = channels * patch_height * patch_width + assert pool in {'cls', 'mean'}, 'pool type must be either cls (cls token) or mean (mean pooling)' + + self.to_patch_embedding = nn.Sequential( + Rearrange('b c (h p1) (w p2) -> b (h w) (p1 p2 c)', p1 = patch_height, p2 = patch_width), + nn.Linear(patch_dim, dim), + ) + + self.pos_embedding = nn.Parameter(torch.randn(1, num_patches + 1, dim)) + self.cls_token = nn.Parameter(torch.randn(1, 1, dim)) + self.dropout = nn.Dropout(emb_dropout) + + self.transformer = Transformer(dim, depth, heads, dim_head, mlp_dim, dropout) + + self.mlp_head = nn.Sequential( + nn.LayerNorm(dim), + nn.Linear(dim, num_classes) + ) + + def img_to_tokens(self, img): + x = self.to_patch_embedding(img) + + cls_tokens = repeat(self.cls_token, '1 n d -> b n d', b = x.shape[0]) + x = torch.cat((cls_tokens, x), dim = 1) + + x += self.pos_embedding + x = self.dropout(x) + return x + + def forward(self, img): + x = self.img_to_tokens(img) + + x = self.transformer(x) + + cls_tokens = x[:, 0] + return self.mlp_head(cls_tokens) + +# adapter with learnable memories per layer, memory CLS token, and learnable adapter head + +class Adapter(nn.Module): + def __init__( + self, + *, + vit, + num_memories_per_layer = 10, + num_classes = 2, + ): + super().__init__() + assert isinstance(vit, ViT) + + # extract some model variables needed + + dim = vit.cls_token.shape[-1] + layers = len(vit.transformer.layers) + num_patches = vit.pos_embedding.shape[-2] + + self.vit = vit + + # freeze ViT backbone - only memories will be finetuned + + freeze_all_layers_(vit) + + # learnable parameters + + self.memory_cls_token = nn.Parameter(torch.randn(dim)) + self.memories_per_layer = nn.Parameter(torch.randn(layers, num_memories_per_layer, dim)) + + self.mlp_head = nn.Sequential( + nn.LayerNorm(dim), + nn.Linear(dim, num_classes) + ) + + # specialized attention mask to preserve the output of the original ViT + # it allows the memory CLS token to attend to all other tokens (and the learnable memory layer tokens), but not vice versa + + attn_mask = torch.ones((num_patches, num_patches), dtype = torch.bool) + attn_mask = F.pad(attn_mask, (1, num_memories_per_layer), value = False) # main tokens cannot attend to learnable memories per layer + attn_mask = F.pad(attn_mask, (0, 0, 1, 0), value = True) # memory CLS token can attend to everything + self.register_buffer('attn_mask', attn_mask) + + def forward(self, img): + b = img.shape[0] + + tokens = self.vit.img_to_tokens(img) + + # add task specific memory tokens + + memory_cls_tokens = repeat(self.memory_cls_token, 'd -> b 1 d', b = b) + tokens = torch.cat((memory_cls_tokens, tokens), dim = 1) + + # pass memories along with image tokens through transformer for attending + + out = self.vit.transformer(tokens, memories = self.memories_per_layer, attn_mask = self.attn_mask) + + # extract memory CLS tokens + + memory_cls_tokens = out[:, 0] + + # pass through task specific adapter head + + return self.mlp_head(memory_cls_tokens) diff --git a/vit_pytorch/vit.py b/vit_pytorch/vit.py index 8dc01a2..5d194ea 100644 --- a/vit_pytorch/vit.py +++ b/vit_pytorch/vit.py @@ -114,7 +114,7 @@ def forward(self, img): x = self.to_patch_embedding(img) b, n, _ = x.shape - cls_tokens = repeat(self.cls_token, '() n d -> b n d', b = b) + cls_tokens = repeat(self.cls_token, '1 n d -> b n d', b = b) x = torch.cat((cls_tokens, x), dim=1) x += self.pos_embedding[:, :(n + 1)] x = self.dropout(x)