Page d'accueil>Lié à la programmation>Python

en solo-apprentissage

Une bibliothèque de méthodes auto-supervisées pour l'apprentissage de la représentation visuelle non supervisée alimentée par la foudre pytorch. Nous visons à fournir des méthodes auto-supervisées SOTA dans un environnement comparable tout en mettant en œuvre des astuces de formation. La bibliothèque est autonome, mais il est possible d'utiliser les modèles en dehors de Solo-Learn. Plus de détails dans notre article .


Nouvelles


Feuille de route et aide nécessaire


Méthodes disponibles


Saveur supplémentaire

Épine dorsale

Données

Évaluation

Astuces de formation

Enregistrement


Exigences

Facultatif :


Installation

Premier cloner le repo.

Ensuite, pour installer Solo-Learn avec le support DALI et / ou UMAP, utilisez:

pip3 install .[dali,umap,h5] --extra-index-url https://developer.download.nvidia.com/compute/redist

Si aucune prise en charge DALI / UMAP / H5 n'est nécessaire, le référentiel peut être installé comme:

pip3 install .

Pour le développement local:

pip3 install -e .[umap,h5]
# Make sure you have pre-commit hooks installed
pre-commit install

Remarque: Si vous rencontrez des problèmes avec Dali, installez-le après leur guide.

Remarque 2: Envisagez d'installer un oreiller-simd pour de meilleurs moments de chargement lorsque vous n'utilisez pas DALI.

Remarque 3: bientôt sur Pip.


Entraînement

Pour pré-dresser la colonne vertébrale, suivez l'un des nombreux fichiers bash dans scripts/pretrain/ . Nous utilisons maintenant Hydra pour gérer les fichiers de configuration, donc la syntaxe commune est quelque chose comme:

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.

Après cela, pour l'évaluation linéaire hors ligne, suivez les exemples dans scripts/linear ou scripts/finetune pour la finetune de toute la colonne vertébrale.

Pour l'évaluation K-NN et la visualisation UMAP, vérifiez les scripts dans scripts/{knn,umap} .

Remarque: les fichiers essaient d'être à jour et de suivre aussi étroitement que possible les paramètres recommandés de chaque article, mais vérifiez-les avant de fonctionner.


Tutoriels

S'il vous plaît, consultez notre documentation et nos tutoriels:

Si vous souhaitez contribuer à Solo-Learn, assurez-vous de jeter un œil à la façon de contribuer et de suivre le code de conduite


Zoo modèle

Tous les modèles pré-entraînés AVAIable peuvent être téléchargés directement via les tables ci-dessous ou par programme en exécutant l'un des scripts suivants zoo/cifar10.sh , zoo/cifar100.sh , zoo/imagenet100.sh et zoo/imagenet.sh .


Résultats

Remarque: les hyperparamètres peuvent ne pas être les meilleurs, nous allons éventuellement réévaluer les méthodes avec des performances plus faibles.

Cifar-10

Méthode Colonne vertébrale Époques Dali Acc @ 1 Acc @ 5 Point de contrôle
All4one Resnet18 1000 93.24 99.88 ?
Jumeaux de Barlow 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 ?
Raide Resnet18 1000 90,63 99.62 ?
Simclr Resnet18 1000 90.74 99,75 ?
Simisiam Resnet18 1000 90,51 99,72 ?
Supcon Resnet18 1000 93.82 99.65 ?
Agiter 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

Méthode Colonne vertébrale Époques Dali Acc @ 1 Acc @ 5 Point de contrôle
All4one Resnet18 1000 72.17 93.35 ?
Jumeaux de Barlow 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 ?
Raide Resnet18 1000 65.92 89,73 ?
Simclr Resnet18 1000 65,78 89.04 ?
Simisiam Resnet18 1000 66.04 89,62 ?
Supcon Resnet18 1000 70.38 89,57 ?
Agiter 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

Méthode Colonne vertébrale Époques Dali ACC @ 1 (en ligne) ACC @ 1 (hors ligne) ACC @ 5 (en ligne) ACC @ 5 (hors ligne) Point de contrôle
All4one Resnet18 400 ✔️ 81.93 - 96.23 - ?
Jumeaux de Barlow 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 minuscule 400 63.04 FAIRE 87.72 FAIRE ?
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 ?
Raide Resnet18 400 ✔️ 76,92 78,48 94.20 94.24 ?
Simclr Resnet18 400 ✔️ 77,64 FAIRE 94.06 FAIRE ?
Simisiam Resnet18 400 ✔️ 74.54 78,72 93.16 94.78 ?
Supcon Resnet18 400 ✔️ 84.40 FAIRE 95,72 FAIRE ?
Agiter 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 ?

Méthodes où les hyperparamètres ont été fortement réglés.

? Le VIT est très intensif et instable de calcul, nous exécutons donc lentement des architectures plus grandes et avec une taille de lot plus grande. ATM, la taille totale du lot est de 128 et nous devions utiliser la précision Float32. Si vous voulez contribuer en l'exécutant, faites-le nous savoir!

Imagenet

Méthode Colonne vertébrale Époques Dali ACC @ 1 (en ligne) ACC @ 1 (hors ligne) ACC @ 5 (en ligne) ACC @ 5 (hors ligne) Point de contrôle Point de contrôle à finetuned
Jumeaux de Barlow 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 (finetuned) ? ?

Efficacité de la formation pour Dali

Nous rapportons l'efficacité de formation de certaines méthodes en utilisant un RESNET18 avec et sans DALI (4 travailleurs par GPU) dans un serveur avec un Intel I9-9820X et deux RTX2080TI.

Méthode Dali Temps total pour 20 époques Temps pour 1 époque Mémoire de GPU (par GPU)
Jumeaux de Barlow 1h 38m 27s 4m 55s 5097 MB
✔️ 43m 2s 2m 10s (56% plus rapide) 9292 MB
Byol 1h 38m 46S 4m 56S 5409 MB
✔️ 50m 33s 2m 31S (49% plus rapide) 9521 MB
NNCLR 1h 38m 30s 4m 55s 5060 MB
✔️ 42m 3s 2m 6s (64% plus rapide) 9244 MB

Remarque : L'augmentation de la mémoire GPU ne fait pas évoluer avec le modèle, mais il évolue avec le nombre de travailleurs.


Citation

Si vous utilisez Solo-Learn, veuillez citer notre 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 }
}
Développer
Informations supplémentaires