Pytorch Lightningを搭載した監視されていない視覚表現の学習のための自己監視方法のライブラリ。私たちは、同等の環境でSOTAの自己監視方法を提供することを目指していますが、同時にトレーニングのトリックを実装しています。ライブラリは自己完結型ですが、ソロラーン以外のモデルを使用することは可能です。私たちの論文の詳細。
main_linear.py 、mixup、cutmix、およびランダムアウチャーでバックボーンを微調整することをサポートします。オプション:
最初にレポをクローンします。
次に、DALIおよび/またはUMAPサポートでSolo-Learnをインストールするには、以下を使用します。
pip3 install .[dali,umap,h5] --extra-index-url https://developer.download.nvidia.com/compute/redistDALI/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:すぐにPIPに参加します。
バックボーンを前処理するには、 scripts/pretrain/の多くのbashファイルの1つに従ってください。現在、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}のスクリプトを確認してください。
注:ファイルは最新の状態になり、各ペーパーの推奨パラメーターを可能な限り密接に従うようにしますが、実行する前にそれらを確認してください。
ドキュメントとチュートリアルをご覧ください。
Solo-Learnに貢献したい場合は、貢献する方法を確認し、行動規範に従うようにしてください
Avaiableはすべて、以下のスクリプトのいずれかを実行することにより、下の表を介して直接ダウンロードできます。Zoo 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 | ? | |
| バイオル | 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 | ? | |
| resl | resnet18 | 1000 | 90.63 | 99.62 | ? | |
| simclr | resnet18 | 1000 | 90.74 | 99.75 | ? | |
| シムシアム | resnet18 | 1000 | 90.51 | 99.72 | ? | |
| supcon | resnet18 | 1000 | 93.82 | 99.65 | ? | |
| swav | 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 | ? | |
| バイオル | 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 | ? | |
| resl | resnet18 | 1000 | 65.92 | 89.73 | ? | |
| simclr | resnet18 | 1000 | 65.78 | 89.04 | ? | |
| シムシアム | resnet18 | 1000 | 66.04 | 89.62 | ? | |
| supcon | resnet18 | 1000 | 70.38 | 89.57 | ? | |
| swav | 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 | ? |
| バイオル | 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 | ? |
| ディノ? | vittiny | 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 | ? |
| resl | resnet18 | 400 | ✔✔️ | 76.92 | 78.48 | 94.20 | 94.24 | ? |
| simclr | resnet18 | 400 | ✔✔️ | 77.64 | トト | 94.06 | トト | ? |
| シムシアム | resnet18 | 400 | ✔✔️ | 74.54 | 78.72 | 93.16 | 94.78 | ? |
| supcon | resnet18 | 400 | ✔✔️ | 84.40 | トト | 95.72 | トト | ? |
| swav | 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(オフライン) | チェックポイント | Finetunedチェックポイント |
|---|---|---|---|---|---|---|---|---|---|
| バーロウ双子 | Resnet50 | 100 | ✔✔️ | 67.18 | 67.23 | 87.69 | 87.98 | ? | |
| バイオル | 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(Finetuned) | 〜 | 95.50(Finetuned) | ? | ? |
Intel I9-9820Xと2つのRTX2080TIを備えたサーバーでDALI(GPUあたり4人のワーカー)を使用した場合とない場合のRESNET18を使用して、いくつかの方法のトレーニング効率を報告します。
| 方法 | ダリ | 20エポックの合計時間 | 1エポックの時間 | GPUメモリ(GPUごと) |
|---|---|---|---|---|
| バーロウ双子 | 1H 38m 27S | 4m 55s | 5097 MB | |
| ✔✔️ | 43m 2秒 | 2m 10s(56%速い) | 9292 MB | |
| バイオル | 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メモリの増加は、モデルではスケーリングされず、労働者の数とともにスケーリングします。
Solo-Learnを使用している場合は、私たちの論文を引用してください。
@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 }
}