← Open Source
The-AI-Summer

self-attention-cv

Implementation of various self-attention mechanisms focused on computer vision. Ongoing repository.

Model DevelopmentArchitecturePython
Open on GitHub
Momentum
+0stars in 24 hours0.0%
1.21k
Stars
152
Forks
+-1
This week
2
Contributors
Created 2021-01-31 · Updated 2026-10-15 · #11116 today
Top developers
black0017SergiosKar

The-AI-Summer/self-attention-cv is ranked 11,116 with 1,214 stars.

Same-category comparison

The-AI-Summer/self-attention-cv is ranked 11,116 among these 8 peers; pdebench/PDEBench is ranked 11,118.

Same-category comparison
NameRankMetrics
Shikhargupta/Spiking-Neural-Network11,107
Language:
Python
Stars:
1,217
Forks:
298
Description:
Pure python implementation of SNN.
awslabs/sockeye11,110
Language:
Python
Stars:
1,216
Forks:
319
Description:
Sequence-to-sequence framework with a focus on Neural Machine Translation based on PyTorch.
hasktorch/hasktorch11,111
Language:
Haskell
Stars:
1,216
Forks:
127
Description:
Tensors and neural networks in Haskell.
SJTU-ViSYS/M2DGR11,112
Stars:
1,215
Forks:
130
Description:
M2DGR: a Multi-modal and Multi-scenario Dataset for Ground Robots(RA-L2021 & ICRA2022).
pdebench/PDEBench11,118
Language:
Python
Stars:
1,214
Forks:
153
Description:
PDEBench: An Extensive Benchmark for Scientific Machine Learning.
Jamie-Stirling/RetNet11,123
Language:
Python
Stars:
1,212
Forks:
106
Description:
An implementation of "Retentive Network: A Successor to Transformer for Large Language Models".
Profluent-AI/OpenCRISPR11,134
Stars:
1,209
Forks:
129
Description:
AI-generated gene editing systems.
mlmed/torchxrayvision11,137
Language:
Jupyter Notebook
Stars:
1,209
Forks:
259
Description:
TorchXRayVision: A library of chest X-ray datasets and models. Classifiers, segmentation, and autoencoders.
Key parameters and specifications
Key parameters and specifications
ParameterValue
LanguagePython
CategoryModel Development
SubcategoryArchitecture
KeywordsAttention visualization, Computer vision
Stars1,214
Forks152
Contributors2
Created date2021-01-31
Updated date2026-10-15
Stars in 1 day0
Stars in 7 days-1
Rank11,116
Previous rank19,260
Rank change8,144
7-day stars rank17,243
Previous 7-day stars rank17,239
7-day stars rank change-4
Total stars rank9,610
Previous total stars rank9,605
Total stars rank change-5
README summary

Self-attention building blocks for computer vision applications in PyTorch Implementation of self attention mechanisms for computer vision in PyTorch with einsum and einops. Focused on computer vision self-attention modules. Install it via pip It would be nice to pre-install pytorch in your environment, in case you don't have a GPU. To run the tests from the terminal you may need to run before. Related articles How Attention works in Deep Learning How Transformers work in deep learning

and NLP How the Vision Transformer (ViT) works in 10 minutes: an image is worth 16x16 words Understanding einsum for Deep learning: implement a transformer with multi-head self-attention from scratch How Positional Embeddings work in Self-Attention Why multi-head self attention works: math, intuitions and 10+1 hidden insights Code Examples Multi-head attention Axial attention Vanilla Transformer Encoder Vision Transformer with/without ResNet50 backbone for image classification A re-implementation of Unet with the Vision Transformer

encoder Bottleneck Attention block Position embeddings are also available 1D Positional Embeddings 2D Positional Embeddings Acknowledgments Thanks to Alex Rogozhnikov @arogozhnikov for the awesome einops package. For my re-implementations I have studied and borrowed code from many repositories of Phil Wang @lucidrains. By studying his code I have managed to grasp self-attention, discover nlp stuff that are never referred in the papers, and learn from his clean coding style. Axial-deeplab: Stand-alone axial-attention for panoptic segmentation

. In European Conference on Computer Vision (pp. Bottleneck Transformers for Visual Recognition. An image is worth 16x16 words: Transformers for image recognition at scale. Stand-alone self-attention in vision models. Transunet: Transformers make strong encoders for medical image segmentation. Linformer: Self-attention with linear complexity. Is Space-Time Attention All You Need for Video Understanding? Self-attention with relative position representations. Support If you really like this repository and find it useful, please consider (★) starring it, so that it

can reach a broader audience of like-minded people.

Frequently asked questions

How many stars and forks are recorded?

The-AI-Summer/self-attention-cv has 1,214 stars and 152 forks.

What is the repository rank?

The-AI-Summer/self-attention-cv is ranked 11,116.

What language and category are recorded?

The-AI-Summer/self-attention-cv has 1,214 stars, uses Python and belongs to Model Development.

Which repository is closest in rank?

The-AI-Summer/self-attention-cv is compared with pdebench/PDEBench, ranked 11,118 with 1,214 stars.

README

Self-attention building blocks for computer vision applications in PyTorch

Implementation of self attention mechanisms for computer vision in PyTorch with einsum and einops. Focused on computer vision self-attention modules.

Install it via pip

$ pip install self-attention-cv

It would be nice to pre-install pytorch in your environment, in case you don't have a GPU. To run the tests from the terminal $ pytest you may need to run export PYTHONPATH=$PATHONPATH:`pwd` before.

Related articles

Code Examples

Multi-head attention

import torch
from self_attention_cv import MultiHeadSelfAttention

model = MultiHeadSelfAttention(dim=64)
x = torch.rand(16, 10, 64)  # [batch, tokens, dim]
mask = torch.zeros(10, 10)  # tokens X tokens
mask[5:8, 5:8] = 1
y = model(x, mask)

Axial attention

import torch
from self_attention_cv import AxialAttentionBlock
model = AxialAttentionBlock(in_channels=256, dim=64, heads=8)
x = torch.rand(1, 256, 64, 64)  # [batch, tokens, dim, dim]
y = model(x)

Vanilla Transformer Encoder

import torch
from self_attention_cv import TransformerEncoder
model = TransformerEncoder(dim=64,blocks=6,heads=8)
x = torch.rand(16, 10, 64)  # [batch, tokens, dim]
mask = torch.zeros(10, 10)  # tokens X tokens
mask[5:8, 5:8] = 1
y = model(x,mask)

Vision Transformer with/without ResNet50 backbone for image classification

import torch
from self_attention_cv import ViT, ResNet50ViT

model1 = ResNet50ViT(img_dim=128, pretrained_resnet=False, 
                        blocks=6, num_classes=10, 
                        dim_linear_block=256, dim=256)
# or
model2 = ViT(img_dim=256, in_channels=3, patch_dim=16, num_classes=10,dim=512)
x = torch.rand(2, 3, 256, 256)
y = model2(x) # [2,10]

A re-implementation of Unet with the Vision Transformer encoder

import torch
from self_attention_cv.transunet import TransUnet
a = torch.rand(2, 3, 128, 128)
model = TransUnet(in_channels=3, img_dim=128, vit_blocks=8,
vit_dim_linear_mhsa_block=512, classes=5)
y = model(a) # [2, 5, 128, 128]

Bottleneck Attention block

import torch
from self_attention_cv.bottleneck_transformer import BottleneckBlock
inp = torch.rand(1, 512, 32, 32)
bottleneck_block = BottleneckBlock(in_channels=512, fmap_size=(32, 32), heads=4, out_channels=1024, pooling=True)
y = bottleneck_block(inp)

Position embeddings are also available

1D Positional Embeddings

import torch
from self_attention_cv.pos_embeddings import AbsPosEmb1D,RelPosEmb1D

model = AbsPosEmb1D(tokens=20, dim_head=64)
# batch heads tokens dim_head
q = torch.rand(2, 3, 20, 64)
y1 = model(q)

model = RelPosEmb1D(tokens=20, dim_head=64, heads=3)
q = torch.rand(2, 3, 20, 64)
y2 = model(q)

2D Positional Embeddings

import torch
from self_attention_cv.pos_embeddings import RelPosEmb2D
dim = 32  # spatial dim of the feat map
model = RelPosEmb2D(
    feat_map_size=(dim, dim),
    dim_head=128)

q = torch.rand(2, 4, dim*dim, 128)
y = model(q)

Acknowledgments

Thanks to Alex Rogozhnikov @arogozhnikov for the awesome einops package. For my re-implementations I have studied and borrowed code from many repositories of Phil Wang @lucidrains. By studying his code I have managed to grasp self-attention, discover nlp stuff that are never referred in the papers, and learn from his clean coding style.

Cited as

@article{adaloglou2021transformer,
    title   = "Transformers in Computer Vision",
    author  = "Adaloglou, Nikolas",
    journal = "https://theaisummer.com/",
    year    = "2021",
    howpublished = {https://github.com/The-AI-Summer/self-attention-cv},
  }

References

  1. Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., ... & Polosukhin, I. (2017). Attention is all you need. arXiv preprint arXiv:1706.03762.
  2. Wang, H., Zhu, Y., Green, B., Adam, H., Yuille, A., & Chen, L. C. (2020, August). Axial-deeplab: Stand-alone axial-attention for panoptic segmentation. In European Conference on Computer Vision (pp. 108-126). Springer, Cham.
  3. Srinivas, A., Lin, T. Y., Parmar, N., Shlens, J., Abbeel, P., & Vaswani, A. (2021). Bottleneck Transformers for Visual Recognition. arXiv preprint arXiv:2101.11605.
  4. Dosovitskiy, A., Beyer, L., Kolesnikov, A., Weissenborn, D., Zhai, X., Unterthiner, T., ... & Houlsby, N. (2020). An image is worth 16x16 words: Transformers for image recognition at scale. arXiv preprint arXiv:2010.11929.
  5. Ramachandran, P., Parmar, N., Vaswani, A., Bello, I., Levskaya, A., & Shlens, J. (2019). Stand-alone self-attention in vision models. arXiv preprint arXiv:1906.05909.
  6. Chen, J., Lu, Y., Yu, Q., Luo, X., Adeli, E., Wang, Y., ... & Zhou, Y. (2021). Transunet: Transformers make strong encoders for medical image segmentation. arXiv preprint arXiv:2102.04306.
  7. Wang, S., Li, B., Khabsa, M., Fang, H., & Ma, H. (2020). Linformer: Self-attention with linear complexity. arXiv preprint arXiv:2006.04768.
  8. Bertasius, G., Wang, H., & Torresani, L. (2021). Is Space-Time Attention All You Need for Video Understanding?. arXiv preprint arXiv:2102.05095.
  9. Shaw, P., Uszkoreit, J., & Vaswani, A. (2018). Self-attention with relative position representations. arXiv preprint arXiv:1803.02155.

Support

If you really like this repository and find it useful, please consider (★) starring it, so that it can reach a broader audience of like-minded people. It would be highly appreciated :) !

Nearby in the ranking
Similar items