From d65a742efea31e7ed3675281ae6fedc8ef5e290a Mon Sep 17 00:00:00 2001 From: Phil Wang Date: Thu, 31 Mar 2022 14:30:23 -0700 Subject: [PATCH] intent to build (#210) complete SepViT, from bytedance AI labs --- README.md | 42 +++++- images/sep-vit.png | Bin 0 -> 145008 bytes setup.py | 2 +- vit_pytorch/sep_vit.py | 296 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 337 insertions(+), 3 deletions(-) create mode 100644 images/sep-vit.png create mode 100644 vit_pytorch/sep_vit.py diff --git a/README.md b/README.md index 3be2dc0..ea188a1 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ - [CrossFormer](#crossformer) - [RegionViT](#regionvit) - [ScalableViT](#scalablevit) +- [SepViT](#sepvit) - [NesT](#nest) - [MobileViT](#mobilevit) - [Masked Autoencoder](#masked-autoencoder) @@ -559,13 +560,42 @@ model = ScalableViT( reduction_factor = (8, 4, 2, 1), # downsampling of the key / values in SSA. in the paper, this was represented as (reduction_factor ** -2) window_size = (64, 32, None, None), # window size of the IWSA at each stage. None means no windowing needed dropout = 0.1, # attention and feedforward dropout -).cuda() +) -img = torch.randn(1, 3, 256, 256).cuda() +img = torch.randn(1, 3, 256, 256) preds = model(img) # (1, 1000) ``` +## SepViT + + + +Another Bytedance AI paper, it proposes a depthwise-pointwise self-attention layer that seems largely inspired by mobilenet's depthwise-separable convolution. The most interesting aspect is the reuse of the feature map from the depthwise self-attention stage as the values for the pointwise self-attention, as shown in the diagram above. + +I have decided to include only the version of `SepViT` with this specific self-attention layer, as the grouped attention layers are not remarkable nor novel, and the authors were not clear on how they treated the window tokens for the group self-attention layer. Besides, it seems like with `DSSA` layer alone, they were able to beat Swin. + +ex. SepViT-Lite + +```python +import torch +from vit_pytorch.sep_vit import SepViT + +v = SepViT( + num_classes = 1000, + dim = 32, # dimensions of first stage, which doubles every stage (32, 64, 128, 256) for SepViT-Lite + dim_head = 32, # attention head dimension + heads = (1, 2, 4, 8), # number of heads per stage + depth = (1, 2, 6, 2), # number of transformer blocks per stage + window_size = 7, # window size of DSS Attention block + dropout = 0.1 # dropout +) + +img = torch.randn(1, 3, 224, 224) + +preds = v(img) # (1, 1000) +``` + ## NesT @@ -1506,6 +1536,14 @@ Coming from computer vision and new to transformers? Here are some resources tha } ``` +```bibtex +@inproceedings{Li2022SepViTSV, + title = {SepViT: Separable Vision Transformer}, + author = {Wei Li and Xing Wang and Xin Xia and Jie Wu and Xuefeng Xiao and Minghang Zheng and Shiping Wen}, + year = {2022} +} +``` + ```bibtex @misc{vaswani2017attention, title = {Attention Is All You Need}, diff --git a/images/sep-vit.png b/images/sep-vit.png new file mode 100644 index 0000000000000000000000000000000000000000..eaff45d258cdaaabf75bf4b7b587d8e45b0596e2 GIT binary patch literal 145008 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

tO8Lh`&+o29Cq#6r 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 TL3uW}ZayV>b-8jG)8PLAKmZUh literal 0 HcmV?d00001 diff --git a/setup.py b/setup.py index 5b7e043..c18cac1 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ from setuptools import setup, find_packages setup( name = 'vit-pytorch', packages = find_packages(exclude=['examples']), - version = '0.31.1', + version = '0.32.0', license='MIT', description = 'Vision Transformer (ViT) - Pytorch', author = 'Phil Wang', diff --git a/vit_pytorch/sep_vit.py b/vit_pytorch/sep_vit.py new file mode 100644 index 0000000..69e5fc1 --- /dev/null +++ b/vit_pytorch/sep_vit.py @@ -0,0 +1,296 @@ +from functools import partial + +import torch +from torch import nn, einsum + +from einops import rearrange, repeat +from einops.layers.torch import Rearrange, Reduce + +# helpers + +def cast_tuple(val, length = 1): + return val if isinstance(val, tuple) else ((val,) * length) + +# helper classes + +class ChanLayerNorm(nn.Module): + def __init__(self, dim, eps = 1e-5): + super().__init__() + self.eps = eps + self.g = nn.Parameter(torch.ones(1, dim, 1, 1)) + self.b = nn.Parameter(torch.zeros(1, dim, 1, 1)) + + def forward(self, x): + var = torch.var(x, dim = 1, unbiased = False, keepdim = True) + mean = torch.mean(x, dim = 1, keepdim = True) + return (x - mean) / (var + self.eps).sqrt() * self.g + self.b + +class PreNorm(nn.Module): + def __init__(self, dim, fn): + super().__init__() + self.norm = ChanLayerNorm(dim) + self.fn = fn + + def forward(self, x): + return self.fn(self.norm(x)) + +class OverlappingPatchEmbed(nn.Module): + def __init__(self, dim_in, dim_out, stride = 2): + super().__init__() + kernel_size = stride * 2 - 1 + padding = kernel_size // 2 + self.conv = nn.Conv2d(dim_in, dim_out, kernel_size, stride = stride, padding = padding) + + def forward(self, x): + return self.conv(x) + +class PEG(nn.Module): + def __init__(self, dim, kernel_size = 3): + super().__init__() + self.proj = nn.Conv2d(dim, dim, kernel_size = kernel_size, padding = kernel_size // 2, groups = dim, stride = 1) + + def forward(self, x): + return self.proj(x) + x + +# feedforward + +class FeedForward(nn.Module): + def __init__(self, dim, mult = 4, dropout = 0.): + super().__init__() + inner_dim = int(dim * mult) + self.net = nn.Sequential( + nn.Conv2d(dim, inner_dim, 1), + nn.GELU(), + nn.Dropout(dropout), + nn.Conv2d(inner_dim, dim, 1), + nn.Dropout(dropout) + ) + def forward(self, x): + return self.net(x) + +# attention + +class DSSA(nn.Module): + def __init__( + self, + dim, + heads = 8, + dim_head = 32, + dropout = 0., + window_size = 7 + ): + super().__init__() + self.heads = heads + self.scale = dim_head ** -0.5 + self.window_size = window_size + inner_dim = dim_head * heads + + self.attend = nn.Sequential( + nn.Softmax(dim = -1), + nn.Dropout(dropout) + ) + + self.to_qkv = nn.Conv1d(dim, inner_dim * 3, 1, bias = False) + + # window tokens + + self.window_tokens = nn.Parameter(torch.randn(dim)) + + # prenorm and non-linearity for window tokens + # then projection to queries and keys for window tokens + + self.window_tokens_to_qk = nn.Sequential( + nn.LayerNorm(dim_head), + nn.GELU(), + Rearrange('b h n c -> b (h c) n'), + nn.Conv1d(inner_dim, inner_dim * 2, 1, groups = heads), + Rearrange('b (h c) n -> b h n c', h = heads), + ) + + # window attention + + self.window_attend = nn.Sequential( + nn.Softmax(dim = -1), + nn.Dropout(dropout) + ) + + self.to_out = nn.Sequential( + nn.Conv2d(inner_dim, dim, 1), + nn.Dropout(dropout) + ) + + def forward(self, x): + """ + einstein notation + + b - batch + c - channels + w1 - window size (height) + w2 - also window size (width) + i - sequence dimension (source) + j - sequence dimension (target dimension to be reduced) + h - heads + x - height of feature map divided by window size + y - width of feature map divided by window size + """ + + batch, height, width, heads, wsz = x.shape[0], *x.shape[-2:], self.heads, self.window_size + assert (height % wsz) == 0 and (width % wsz) == 0, f'height {height} and width {width} must be divisible by window size {wsz}' + num_windows = (height // wsz) * (width // wsz) + + # fold in windows for "depthwise" attention - not sure why it is named depthwise when it is just "windowed" attention + + x = rearrange(x, 'b c (h w1) (w w2) -> (b h w) c (w1 w2)', w1 = wsz, w2 = wsz) + + # add windowing tokens + + w = repeat(self.window_tokens, 'c -> b c 1', b = x.shape[0]) + x = torch.cat((w, x), dim = -1) + + # project for queries, keys, value + + q, k, v = self.to_qkv(x).chunk(3, dim = 1) + + # split out heads + + q, k, v = map(lambda t: rearrange(t, 'b (h d) ... -> b h (...) d', h = heads), (q, k, v)) + + # scale + + q = q * self.scale + + # similarity + + dots = einsum('b h i d, b h j d -> b h i j', q, k) + + # attention + + attn = self.attend(dots) + + # aggregate values + + out = torch.matmul(attn, v) + + # split out windowed tokens + + window_tokens, windowed_fmaps = out[:, :, 0], out[:, :, 1:] + + # early return if there is only 1 window + + if num_windows == 1: + fmap = rearrange(windowed_fmaps, '(b x y) h (w1 w2) d -> b (h d) (x w1) (y w2)', x = height // wsz, y = width // wsz, w1 = wsz, w2 = wsz) + return self.to_out(fmap) + + # carry out the pointwise attention, the main novelty in the paper + + window_tokens = rearrange(window_tokens, '(b x y) h d -> b h (x y) d', x = height // wsz, y = width // wsz) + windowed_fmaps = rearrange(windowed_fmaps, '(b x y) h n d -> b h (x y) n d', x = height // wsz, y = width // wsz) + + # windowed queries and keys (preceded by prenorm activation) + + w_q, w_k = self.window_tokens_to_qk(window_tokens).chunk(2, dim = -1) + + # scale + + w_q = w_q * self.scale + + # similarities + + w_dots = einsum('b h i d, b h j d -> b h i j', w_q, w_k) + + w_attn = self.window_attend(w_dots) + + # aggregate the feature maps from the "depthwise" attention step (the most interesting part of the paper, one i haven't seen before) + + aggregated_windowed_fmap = einsum('b h i j, b h j w d -> b h i w d', w_attn, windowed_fmaps) + + # fold back the windows and then combine heads for aggregation + + fmap = rearrange(aggregated_windowed_fmap, 'b h (x y) (w1 w2) d -> b (h d) (x w1) (y w2)', x = height // wsz, y = width // wsz, w1 = wsz, w2 = wsz) + return self.to_out(fmap) + +class Transformer(nn.Module): + def __init__( + self, + dim, + depth, + dim_head = 32, + heads = 8, + ff_mult = 4, + dropout = 0., + norm_output = True + ): + super().__init__() + self.layers = nn.ModuleList([]) + + for ind in range(depth): + self.layers.append(nn.ModuleList([ + PreNorm(dim, DSSA(dim, heads = heads, dim_head = dim_head, dropout = dropout)), + PreNorm(dim, FeedForward(dim, mult = ff_mult, dropout = dropout)), + ])) + + self.norm = ChanLayerNorm(dim) if norm_output else nn.Identity() + + def forward(self, x): + for attn, ff in self.layers: + x = attn(x) + x + x = ff(x) + x + + return self.norm(x) + +class SepViT(nn.Module): + def __init__( + self, + *, + num_classes, + dim, + depth, + heads, + window_size = 7, + dim_head = 32, + ff_mult = 4, + channels = 3, + dropout = 0. + ): + super().__init__() + self.to_patches = nn.Conv2d(channels, dim, 7, stride = 4, padding = 3) + + assert isinstance(depth, tuple), 'depth needs to be tuple if integers indicating number of transformer blocks at that stage' + + num_stages = len(depth) + + dims = tuple(map(lambda i: (2 ** i) * dim, range(num_stages))) + dims = (channels, *dims) + dim_pairs = tuple(zip(dims[:-1], dims[1:])) + + strides = (4, *((2,) * (num_stages - 1))) + + hyperparams_per_stage = [heads, window_size] + hyperparams_per_stage = list(map(partial(cast_tuple, length = num_stages), hyperparams_per_stage)) + assert all(tuple(map(lambda arr: len(arr) == num_stages, hyperparams_per_stage))) + + self.layers = nn.ModuleList([]) + + for ind, ((layer_dim_in, layer_dim), layer_depth, layer_stride, layer_heads, layer_window_size) in enumerate(zip(dim_pairs, depth, strides, *hyperparams_per_stage)): + is_last = ind == (num_stages - 1) + + self.layers.append(nn.ModuleList([ + OverlappingPatchEmbed(layer_dim_in, layer_dim, stride = layer_stride), + PEG(layer_dim), + Transformer(dim = layer_dim, depth = layer_depth, heads = layer_heads, ff_mult = ff_mult, dropout = dropout, norm_output = not is_last), + ])) + + self.mlp_head = nn.Sequential( + Reduce('b d h w -> b d', 'mean'), + nn.LayerNorm(dims[-1]), + nn.Linear(dims[-1], num_classes) + ) + + def forward(self, x): + + for ope, peg, transformer in self.layers: + x = ope(x) + x = peg(x) + x = transformer(x) + + return self.mlp_head(x)