Eine Bibliothek selbst überprüfter Methoden für unbeaufsichtigte visuelle Repräsentation, die durch Pytorch-Blitze betrieben wird. Wir wollen SOTA-selbstverletzte Methoden in einer vergleichbaren Umgebung bereitstellen und gleichzeitig Trainingstricks implementieren. Die Bibliothek ist in sich geschlossen, aber es ist möglich, die Modelle außerhalb des Solo-Learn zu verwenden. Weitere Details in unserer Zeitung .
main_linear.py , Mixup, Cutmix und zufälliger Augment.Optional :
Zuerst klonen Sie das Repo.
Um Solo-Learn mit Dali und/oder UMAP-Unterstützung zu installieren, verwenden Sie dann:
pip3 install .[dali,umap,h5] --extra-index-url https://developer.download.nvidia.com/compute/redistWenn kein Dali/UMAP/H5 -Unterstützung benötigt wird, kann das Repository als:
pip3 install .Für die lokale Entwicklung:
pip3 install -e .[umap,h5]
# Make sure you have pre-commit hooks installed
pre-commit installHinweis: Wenn Sie Probleme mit Dali haben, installieren Sie es nach ihrem Leitfaden.
Hinweis 2: Erwägen Sie, Kissen-SIMD für bessere Ladezeiten zu installieren, wenn Sie Dali nicht verwenden.
Anmerkung 3: bald auf Pip.
Folgen Sie zum Vorab -Rückgrat einer der vielen Bash -Dateien in scripts/pretrain/ . Wir verwenden jetzt Hydra, um die Konfigurationsdateien zu verarbeiten, daher ist die gemeinsame Syntax so etwas wie:
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. Danach folgen Sie für die lineare Offline -Bewertung den Beispielen in scripts/linear oder scripts/finetune um das gesamte Rückgrat zu füllen.
Für die K-NN-Bewertung und die UMAP-Visualisierung überprüfen Sie die Skripte in scripts/{knn,umap} .
Hinweis: Dateien versuchen, auf dem neuesten Stand zu sein und die empfohlenen Parameter jedes Papiers so genau wie möglich zu befolgen. Überprüfen Sie sie jedoch vor dem Ausführen.
Bitte sehen Sie sich unsere Dokumentation und Tutorials an:
Wenn Sie zum Solo-Learn beitragen möchten, schauen Sie sich an, wie Sie den Verhaltenskodex beitragen und befolgen
Alle vorgefertigten Modelle Avaable können direkt über die Tabellen unten oder programmgesteuert heruntergeladen werden, indem eines der folgenden Skripte zoo/cifar10.sh , zoo/cifar100.sh , zoo/imagenet100.sh und zoo/imagenet.sh ausgeführt werden.
Hinweis: Hyperparameter sind möglicherweise nicht die besten, wir werden die Methoden mit geringerer Leistung letztendlich wieder auflösen.
| Verfahren | Rückgrat | Epochen | Dali | ACC@1 | ACC@5 | Kontrollpunkt |
|---|---|---|---|---|---|---|
| All4one | Resnet18 | 1000 | 93.24 | 99,88 | ? | |
| Barlow Twins | Resnet18 | 1000 | 92.10 | 99.73 | ? | |
| BYOL | Resnet18 | 1000 | 92.58 | 99.79 | ? | |
| Deepcluster v2 | Resnet18 | 1000 | 88.85 | 99,58 | ? | |
| Dino | 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 | ? | |
| 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 | ? |
| Verfahren | Rückgrat | Epochen | Dali | ACC@1 | ACC@5 | Kontrollpunkt |
|---|---|---|---|---|---|---|
| All4one | Resnet18 | 1000 | 72.17 | 93.35 | ? | |
| Barlow Twins | Resnet18 | 1000 | 70,90 | 91.91 | ? | |
| BYOL | Resnet18 | 1000 | 70,46 | 91.96 | ? | |
| Deepcluster v2 | Resnet18 | 1000 | 63.61 | 88.09 | ? | |
| Dino | 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 | ? | |
| 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 | ? |
| Verfahren | Rückgrat | Epochen | Dali | ACC@1 (online) | ACC@1 (Offline) | ACC@5 (online) | ACC@5 (offline) | Kontrollpunkt |
|---|---|---|---|---|---|---|---|---|
| All4one | Resnet18 | 400 | ✔️ | 81.93 | - - | 96.23 | - - | ? |
| Barlow Twins | 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 | ? | |
| Dino | Resnet18 | 400 | ✔️ | 74,84 | 74,92 | 92.92 | 92.78 | ? |
| Dino? | Vit winzig | 400 | 63.04 | Todo | 87.72 | Todo | ? | |
| 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 | Todo | 94.06 | Todo | ? |
| Simsiam | Resnet18 | 400 | ✔️ | 74,54 | 78,72 | 93.16 | 94.78 | ? |
| Supcon | Resnet18 | 400 | ✔️ | 84.40 | Todo | 95.72 | Todo | ? |
| 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 | ? |
Methoden, bei denen Hyperparameter stark abgestimmt waren.
? VIT ist sehr berechnet intensiv und instabil, so dass wir langsam größere Architekturen und mit einer größeren Chargengröße laufen. ATM, Gesamtstapelgröße beträgt 128 und wir mussten Float32 -Präzision verwenden. Wenn Sie einen Beitrag leisten möchten, indem Sie es ausführen, lassen Sie es uns wissen!
| Verfahren | Rückgrat | Epochen | Dali | ACC@1 (online) | ACC@1 (Offline) | ACC@5 (online) | ACC@5 (offline) | Kontrollpunkt | Finetuned Checkpoint |
|---|---|---|---|---|---|---|---|---|---|
| Barlow Twins | 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 | ? | |
| Mae | Vit-B/16 | 100 | ~ | 81.60 (finetuned) | ~ | 95.50 (finatuned) | ? | ? |
Wir berichten über die Schulungseffizienz einiger Methoden mit einem ResNet18 mit und ohne Dali (4 Arbeiter pro GPU) in einem Server mit einem Intel i9-9820x und zwei RTX2080TI.
| Verfahren | Dali | Gesamtzeit für 20 Epochen | Zeit für 1 Epoche | GPU -Speicher (pro GPU) |
|---|---|---|---|---|
| Barlow Twins | 1H 38m 27s | 4m 55s | 5097 MB | |
| ✔️ | 43m 2s | 2m 10s (56% schneller) | 9292 MB | |
| BYOL | 1H 38m 46s | 4m 56s | 5409 MB | |
| ✔️ | 50m 33s | 2m 31s (49% schneller) | 9521 MB | |
| Nnclr | 1H 38m 30s | 4m 55s | 5060 MB | |
| ✔️ | 42m 3s | 2m 6s (64% schneller) | 9244 MB |
Hinweis : Die GPU -Speichererhöhung skaliert nicht mit dem Modell, sondern skaliert mit der Anzahl der Arbeitnehmer.
Wenn Sie Solo-Learn verwenden, zitieren Sie bitte unser Papier:
@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 }
}