# SparK✨: the first successful BERT-style pre-training on any convolutional networks [![arXiv](https://img.shields.io/badge/arXiv-2301.03580-b31b1b.svg)](https://arxiv.org/abs/2301.03580) This is an official implementation of the paper "Designing BERT for Convolutional Networks: ***Spar***se and Hierarchical Mas***k***ed Modeling". (submitted to [openreview ICLR'23](https://openreview.net/forum?id=NRxydtWup1S) in Oct. 2022)

[[`arXiv`](https://arxiv.org/abs/2301.03580)] [[`pdf`](https://arxiv.org/pdf/2301.03580.pdf)] [[`state-of-the-art self-supervised convnet`](https://paperswithcode.com/sota/self-supervised-image-classification-on-1?tag_filter=17?p=designing-bert-for-convolutional-networks)] [[`bibtex`](https://github.com/keyu-tian/SparK#citation)]
## What's new here? ### πŸ”₯ On ResNets, generative pre-training surpasses contrastive learning for the first time:

### πŸ”₯ ConvNeXt gains more from pre-training than Swin-Transformer, up to +3.5 points:

### πŸ”₯ Larger models benefit more from SparK pre-training, showing a scaling behavior:

### πŸ”₯ Pre-trained model can make reasonable predictions:

#### See our [paper](https://arxiv.org/pdf/2301.03580.pdf) for more analysis, discussions, and evaluations. ## Catalog - [x] Pre-training code - [ ] Fine-tuning code - [ ] Colab playground - [ ] Inference and visualization demo ## Install Check [INSTALL.md](INSTALL.md) to install all dependencies. Our implementation is based on `torch==1.10.0+cu113`, `torchvision==0.11.1+cu113`, and `timm==0.5.4`. [This](https://github.com/facebookresearch/SparseConvNet) sparse convolution framework is an optional library. ## Pre-training See [PRETRAIN.md](PRETRAIN.md) to pre-train models on ImageNet. ## Fine-tuning - Models on ImageNet: after installation, check [downstream_imagenet](downstream_imagenet) for subsequent instructions. - ResNets on COCO: install `detectron2` and see [downstream_d2](downstream_d2) for more details. - ConvNeXts on COCO: install `mmcv` and `mmdetection` then see [downstream_mmdet](downstream_mmdet) for more details. ## Acknowledgement We heavily referred to these useful codebases: - [BEiT](https://github.com/microsoft/unilm/tree/master/beit) - [MAE](https://github.com/facebookresearch/mae) - [ConvNeXt](https://github.com/facebookresearch/ConvNeXt) We also appreciate these elegant frameworks: - [timm](https://github.com/rwightman/pytorch-image-models) - [MoCoV2](https://github.com/facebookresearch/moco) - [Detectron2](https://github.com/facebookresearch/detectron2) and [MMDetection](https://github.com/open-mmlab/mmdetection) ## License This project is under the CC-BY 4.0 license. See [LICENSE](LICENSE) for more details. ## Citation If you found this project useful, please consider adding a star ⭐, or citing us πŸ“–: ``` @Article{tian2023designing, author = {Keyu Tian and Yi Jiang and Qishuai Diao and Chen Lin and Liwei Wang and Zehuan Yuan}, title = {Designing BERT for Convolutional Networks: Sparse and Hierarchical Masked Modeling}, journal = {arXiv:2301.03580}, year = {2023}, } ```