首頁>編程相關>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 }
}
展開
附加信息