2020-02-25 02:36:10 +08:00
# PyTorch implementation of SimCLR: A Simple Framework for Contrastive Learning of Visual Representations
2020-03-07 23:01:58 +08:00
### Blog post with full documentation: [Exploring SimCLR: A Simple Framework for Contrastive Learning of Visual Representations](https://sthalles.github.io/simple-self-supervised-learning/)
2020-03-09 21:25:20 +08:00
#### For a Tensorflow 2.0 Implementation: [Tensorflow SimCLR](https://github.com/sthalles/SimCLR-tensorflow)
2020-03-07 22:56:34 +08:00

2020-03-09 21:24:56 +08:00
2020-03-07 23:01:58 +08:00
## Dependencies
- pytorch
- opencv
2020-02-25 19:49:51 +08:00
## Config file
2020-03-09 18:41:47 +08:00
Before running SimCLR, make sure you choose the correct running configurations on the ```config.yaml``` file.
2020-02-25 19:49:51 +08:00
2020-02-25 19:51:49 +08:00
```yaml
2020-02-25 19:49:51 +08:00
batch_size: 256 # A batch size of N, produces 2 * (N-1) negative samples. Original implementation uses a batch size of 8192
out_dim: 64 # Output dimensionality of the embedding vector z. Original implementation uses 2048
s: 1
temperature: 0.5 # Temperature parameter for the contrastive objective
base_convnet: "resnet18" # The ConvNet base model. Choose one of: "resnet18 or resnet50". Original implementation uses resnet50
use_cosine_similarity: True # Distance metric for contrastive loss. If False, uses dot product
epochs: 40 # Number of epochs to train
num_workers: 4 # Number of workers for the data loader
```
2020-02-25 19:53:40 +08:00
## Feature Evaluation
2020-03-09 18:41:47 +08:00
Feature evaluation is done using a linear model protocol. Feature are learned using the ```STL10 unsupervised``` set and evaluated in the train/test splits;
2020-03-07 22:52:02 +08:00
Check the ```feature_eval/FeatureEvaluation.ipynb``` notebook for reproducebility.
2020-03-07 22:56:34 +08:00
| Feature Extractor | Method | Architecture | Top 1 |
|:-------------------:|:------------:|:------------:|:-----:|
| Logistic Regression | PCA Features | - | 36.0% |
| KNN | PCA Features | - | 31.8 |
| Logistic Regression | SimCLR | ResNet-18 | 71.8% |
| KNN | SimCLR | ResNet-18 | 66.7% |
2020-03-07 23:01:58 +08:00
## Download pre-trained model
- [ResNet-18 ](https://drive.google.com/open?id=1zDHvk1oE1k3b4ApsK1AdMREIAcpkG-We ) Trained using ```STl10 unsupervised``` set.