首页>编程相关>Python

独奏学习

由Pytorch Lightning提供支持的无监督视觉表示的自我监督方法的库。我们旨在在可比的环境中提供SOTA自学方法,同时实施培训技巧。该库是独立的,但是可以使用独奏学习的模型。我们的论文中的更多详细信息


消息


路线图和帮助


可用的方法


额外的风味

骨干

数据

评估

训练技巧

记录


要求

选修的


安装

首先克隆回购。

然后,要使用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/linearscripts/finetune的示例进行列表,以列出整个骨干。

为了进行K-NN评估和UMAP可视化检查scripts/{knn,umap}中的脚本。

注意:文件尝试保持最新状态,并尽可能仔细地遵循每篇论文的推荐参数,但在运行前检查它们。


教程

请查看我们的文档和教程:

如果您想为独奏学习做出贡献,请确保您了解如何做出贡献和遵守行为准则


模型动物园

可以通过以下表直接下载所有预估计的模型,也可以通过运行以下脚本之一zoo/cifar10.shzoo/cifar100.shzoo/imagenet100.shzoo/imagenet.sh来直接下载。


结果

注意:超参数可能不是最好的,我们将最终以较低的性能重新运行。

CIFAR-10

方法骨干时代达利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

CIFAR-100

方法骨干时代达利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

Imagenet-100

方法骨干时代达利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 }
}
展开
附加信息