由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 }
}