由Pytorch Lightning提供支持的无监督视觉表示的自我监督方法的库。我们旨在在可比的环境中提供SOTA自学方法,同时实施培训技巧。该库是独立的,但是可以使用独奏学习的模型。我们的论文中的更多详细信息。
main_linear.py ,Mixup,cutmix和随机增强的骨干。选修的:
首先克隆回购。
然后,要使用Dali和/或UMAP支持安装独奏学习,请使用:
pip3 install .[dali,umap,h5] --extra-index-url https://developer.download.nvidia.com/compute/redist如果不需要DALI/UMAP/H5支持,则可以将存储库安装为:
pip3 install .用于本地发展:
pip3 install -e .[umap,h5]
# Make sure you have pre-commit hooks installed
pre-commit install注意:如果您在Dali方面遇到麻烦,请按照其指南进行安装。
注意2:考虑不使用DALI时安装枕头-SIMD以更好地加载时间。
注3:即将上水。
要预处理主干,请按照scripts/pretrain/的众多bash文件之一。我们现在正在使用Hydra来处理配置文件,因此通用语法类似于:
python3 main_pretrain.py
# path to training script folder
--config-path scripts/pretrain/imagenet-100/
# training config name
--config-name barlow.yaml
# add new arguments (e.g. those not defined in the yaml files)
# by doing ++new_argument=VALUE
# pytorch lightning's arguments can be added here as well.之后,对于离线线性评估,请按照scripts/linear或scripts/finetune的示例进行列表,以列出整个骨干。
为了进行K-NN评估和UMAP可视化检查scripts/{knn,umap}中的脚本。
注意:文件尝试保持最新状态,并尽可能仔细地遵循每篇论文的推荐参数,但在运行前检查它们。
请查看我们的文档和教程:
如果您想为独奏学习做出贡献,请确保您了解如何做出贡献和遵守行为准则
可以通过以下表直接下载所有预估计的模型,也可以通过运行以下脚本之一zoo/cifar10.sh , zoo/cifar100.sh , zoo/imagenet100.sh和zoo/imagenet.sh来直接下载。
注意:超参数可能不是最好的,我们将最终以较低的性能重新运行。
| 方法 | 骨干 | 时代 | 达利 | ACC@1 | ACC@5 | 检查点 |
|---|---|---|---|---|---|---|
| ALL4ONE | RESNET18 | 1000 | 93.24 | 99.88 | ? | |
| 巴洛双胞胎 | RESNET18 | 1000 | 92.10 | 99.73 | ? | |
| BYOL | RESNET18 | 1000 | 92.58 | 99.79 | ? | |
| DeepCluster V2 | RESNET18 | 1000 | 88.85 | 99.58 | ? | |
| 恐龙 | RESNET18 | 1000 | 89.52 | 99.71 | ? | |
| moco v2+ | RESNET18 | 1000 | 92.94 | 99.79 | ? | |
| Moco V3 | RESNET18 | 1000 | 93.10 | 99.80 | ? | |
| nnclr | RESNET18 | 1000 | 91.88 | 99.78 | ? | |
| Ressl | RESNET18 | 1000 | 90.63 | 99.62 | ? | |
| simclr | RESNET18 | 1000 | 90.74 | 99.75 | ? | |
| Simsiam | RESNET18 | 1000 | 90.51 | 99.72 | ? | |
| supcon | RESNET18 | 1000 | 93.82 | 99.65 | ? | |
| 沃夫 | RESNET18 | 1000 | 89.17 | 99.68 | ? | |
| Vibcreg | RESNET18 | 1000 | 91.18 | 99.74 | ? | |
| Vicreg | RESNET18 | 1000 | 92.07 | 99.74 | ? | |
| W-MSE | RESNET18 | 1000 | 88.67 | 99.68 | ? |
| 方法 | 骨干 | 时代 | 达利 | ACC@1 | ACC@5 | 检查点 |
|---|---|---|---|---|---|---|
| ALL4ONE | RESNET18 | 1000 | 72.17 | 93.35 | ? | |
| 巴洛双胞胎 | RESNET18 | 1000 | 70.90 | 91.91 | ? | |
| BYOL | RESNET18 | 1000 | 70.46 | 91.96 | ? | |
| DeepCluster V2 | RESNET18 | 1000 | 63.61 | 88.09 | ? | |
| 恐龙 | RESNET18 | 1000 | 66.76 | 90.34 | ? | |
| moco v2+ | RESNET18 | 1000 | 69.89 | 91.65 | ? | |
| Moco V3 | RESNET18 | 1000 | 68.83 | 90.57 | ? | |
| nnclr | RESNET18 | 1000 | 69.62 | 91.52 | ? | |
| Ressl | RESNET18 | 1000 | 65.92 | 89.73 | ? | |
| simclr | RESNET18 | 1000 | 65.78 | 89.04 | ? | |
| Simsiam | RESNET18 | 1000 | 66.04 | 89.62 | ? | |
| supcon | RESNET18 | 1000 | 70.38 | 89.57 | ? | |
| 沃夫 | RESNET18 | 1000 | 64.88 | 88.78 | ? | |
| Vibcreg | RESNET18 | 1000 | 67.37 | 90.07 | ? | |
| Vicreg | RESNET18 | 1000 | 68.54 | 90.83 | ? | |
| W-MSE | RESNET18 | 1000 | 61.33 | 87.26 | ? |
| 方法 | 骨干 | 时代 | 达利 | ACC@1(在线) | ACC@1(离线) | ACC@5(在线) | ACC@5(离线) | 检查点 |
|---|---|---|---|---|---|---|---|---|
| ALL4ONE | RESNET18 | 400 | ✔️ | 81.93 | - | 96.23 | - | ? |
| 巴洛双胞胎 | RESNET18 | 400 | ✔️ | 80.38 | 80.16 | 95.28 | 95.14 | ? |
| BYOL | RESNET18 | 400 | ✔️ | 80.16 | 80.32 | 95.02 | 94.94 | ? |
| DeepCluster V2 | RESNET18 | 400 | 75.36 | 75.4 | 93.22 | 93.10 | ? | |
| 恐龙 | RESNET18 | 400 | ✔️ | 74.84 | 74.92 | 92.92 | 92.78 | ? |
| 恐龙? | vit小 | 400 | 63.04 | 托多 | 87.72 | 托多 | ? | |
| moco v2+ | RESNET18 | 400 | ✔️ | 78.20 | 79.28 | 95.50 | 95.18 | ? |
| Moco V3 | RESNET18 | 400 | ✔️ | 80.36 | 80.36 | 95.18 | 94.96 | ? |
| Moco V3 | RESNET50 | 400 | ✔️ | 85.48 | 84.58 | 96.82 | 96.70 | ? |
| nnclr | RESNET18 | 400 | ✔️ | 79.80 | 80.16 | 95.28 | 95.30 | ? |
| Ressl | RESNET18 | 400 | ✔️ | 76.92 | 78.48 | 94.20 | 94.24 | ? |
| simclr | RESNET18 | 400 | ✔️ | 77.64 | 托多 | 94.06 | 托多 | ? |
| Simsiam | RESNET18 | 400 | ✔️ | 74.54 | 78.72 | 93.16 | 94.78 | ? |
| supcon | RESNET18 | 400 | ✔️ | 84.40 | 托多 | 95.72 | 托多 | ? |
| 沃夫 | RESNET18 | 400 | ✔️ | 74.04 | 74.28 | 92.70 | 92.84 | ? |
| Vibcreg | RESNET18 | 400 | ✔️ | 79.86 | 79.38 | 94.98 | 94.60 | ? |
| Vicreg | RESNET18 | 400 | ✔️ | 79.22 | 79.40 | 95.06 | 95.02 | ? |
| W-MSE | RESNET18 | 400 | ✔️ | 67.60 | 69.06 | 90.94 | 91.22 | ? |
高参数进行了大量调节的方法。
? VIT是非常强大且不稳定的,因此我们正在慢慢运行更大的架构,并且批量较大。 ATM,总批量大小为128,我们需要使用Float32精度。如果您想通过运行来做出贡献,请告诉我们!
| 方法 | 骨干 | 时代 | 达利 | ACC@1(在线) | ACC@1(离线) | ACC@5(在线) | ACC@5(离线) | 检查点 | 固定检查点 |
|---|---|---|---|---|---|---|---|---|---|
| 巴洛双胞胎 | RESNET50 | 100 | ✔️ | 67.18 | 67.23 | 87.69 | 87.98 | ? | |
| BYOL | RESNET50 | 100 | ✔️ | 68.63 | 68.37 | 88.80 | 88.66 | ? | |
| moco v2+ | RESNET50 | 100 | ✔️ | 62.61 | 66.84 | 85.40 | 87.60 | ? | |
| 梅 | VIT-B/16 | 100 | 〜 | 81.60(填充) | 〜 | 95.50(填充) | ? | ? |
我们在具有Intel i9-9820x和两个RTX2080TI的服务器中使用RESNET18报告了某些方法的训练效率。
| 方法 | 达利 | 20个时期的总时间 | 1个时期的时间 | GPU内存(PER GPU) |
|---|---|---|---|---|
| 巴洛双胞胎 | 1H 38m 27s | 4m 55s | 5097 MB | |
| ✔️ | 43m 2s | 2m 10s(快56%) | 9292 MB | |
| BYOL | 1h 38m 46s | 4m 56s | 5409 MB | |
| ✔️ | 50m 33s | 2M 31S(快49%) | 9521 MB | |
| nnclr | 1H 38M 30S | 4m 55s | 5060 mb | |
| ✔️ | 42m 3s | 2m 6s(快64%) | 9244 MB |
注意:GPU内存的增加不会随着模型而扩展,而是随着工人的数量而缩放。
如果您使用独奏学习,请引用我们的论文:
@article { JMLR:v23:21-1155 ,
author = { Victor Guilherme Turrisi da Costa and Enrico Fini and Moin Nabi and Nicu Sebe and Elisa Ricci } ,
title = { solo-learn: A Library of Self-supervised Methods for Visual Representation Learning } ,
journal = { Journal of Machine Learning Research } ,
year = { 2022 } ,
volume = { 23 } ,
number = { 56 } ,
pages = { 1-6 } ,
url = { http://jmlr.org/papers/v23/21-1155.html }
}