Inicio>Relacionado con la programación>Pitón

aprendizaje

Una biblioteca de métodos auto-supervisados para el aprendizaje de representación visual no supervisada impulsada por Pytorch Lightning. Nuestro objetivo es proporcionar métodos auto-supervisados de SOTA en un entorno comparable mientras, al mismo tiempo, implementan trucos de capacitación. La biblioteca es autónoma, pero es posible usar los modelos fuera de la aprendizaje individual. Más detalles en nuestro artículo .


Noticias


Hoja de ruta y ayuda necesaria


Métodos disponibles


Sabor extra

Columna vertebral

Datos

Evaluación

Trucos de entrenamiento

Explotación florestal


Requisitos

Opcional :


Instalación

Primer clon el repositorio.

Luego, para instalar solo-learn con soporte Dali y/o UMAP, use:

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

Si no se necesita soporte Dali/UMAP/H5, el repositorio se puede instalar como:

pip3 install .

Para el desarrollo local:

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

Nota: Si tiene problemas con Dali, instálelo siguiendo su guía.

Nota 2: Considere la instalación de almohadas-SIMD para mejores tiempos de carga cuando no use Dali.

Nota 3: Pronto estará en Pip.


Capacitación

Para el envío de la columna vertebral, siga uno de los muchos archivos BASH en scripts/pretrain/ . Ahora estamos usando Hydra para manejar los archivos de configuración, por lo que la sintaxis común es algo así como:

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.

Después de eso, para la evaluación lineal fuera de línea, siga los ejemplos en scripts/linear o scripts/finetune para finizar toda la columna vertebral.

Para la evaluación de K-NN y la visualización de UMAP verifique los scripts en scripts/{knn,umap} .

Nota: Los archivos intentan estar actualizados y sigan lo más cerca posible de los parámetros recomendados de cada documento, pero verifíquelos antes de ejecutar.


Tutoriales

Por favor, consulte nuestra documentación y tutoriales:

Si desea contribuir a solo-learn, asegúrese de echar un vistazo a cómo contribuir y seguir el código de conducta


Zoológico modelo

Todos los modelos previos a la aparición se pueden descargar directamente a través de las tablas a continuación o programáticamente ejecutando uno de los siguientes scripts zoo/cifar10.sh , zoo/cifar100.sh , zoo/imagenet100.sh e zoo/imagenet.sh .


Resultados

Nota: Los hiperparámetros pueden no ser los mejores, eventualmente volveremos a ejecutar los métodos con menor rendimiento.

Cifar-10

Método Columna vertebral Épocas Dali Acc@1 ACC@5 Control
Todo 4On 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 ?
Resonado 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 ?
Vibrar Resnet18 1000 91.18 99.74 ?
Vicreg Resnet18 1000 92.07 99.74 ?
W-MSE Resnet18 1000 88.67 99.68 ?

Cifar-100

Método Columna vertebral Épocas Dali Acc@1 ACC@5 Control
Todo 4On 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 ?
Resonado 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 ?
Vibrar Resnet18 1000 67.37 90.07 ?
Vicreg Resnet18 1000 68.54 90.83 ?
W-MSE Resnet18 1000 61.33 87.26 ?

Imagenet-100

Método Columna vertebral Épocas Dali ACC@1 (en línea) ACC@1 (fuera de línea) ACC@5 (en línea) ACC@5 (fuera de línea) Control
Todo 4On 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 Tiny 400 63.04 HACER 87.72 HACER ?
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 ?
Resonado Resnet18 400 ✔️ 76.92 78.48 94.20 94.24 ?
Simclr Resnet18 400 ✔️ 77.64 HACER 94.06 HACER ?
Simsiam Resnet18 400 ✔️ 74.54 78.72 93.16 94.78 ?
Supcon Resnet18 400 ✔️ 84.40 HACER 95.72 HACER ?
Swav Resnet18 400 ✔️ 74.04 74.28 92.70 92.84 ?
Vibrar 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étodos donde los hiperparámetros estaban fuertemente sintonizados.

? VIT es muy intensivo e inestable, por lo que lentamente estamos ejecutando arquitecturas más grandes y con un tamaño por lotes más grande. ATM, el tamaño total de lotes es 128 y necesitábamos usar Float32 Precision. Si quieres contribuir ejecutándolo, ¡háganoslo saber!

Imagenet

Método Columna vertebral Épocas Dali ACC@1 (en línea) ACC@1 (fuera de línea) ACC@5 (en línea) ACC@5 (fuera de línea) Control Punto de control de Finetuned
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 (Finetuned) ? ?

Eficiencia de capacitación para Dali

Reportamos la eficiencia de capacitación de algunos métodos utilizando un resnet18 con y sin DALI (4 trabajadores por GPU) en un servidor con un Intel i9-9820x y dos RTX2080TI.

Método Dali Tiempo total para 20 épocas Hora de 1 época Memoria de GPU (por GPU)
Barlow Twins 1h 38m 27s 4m 55s 5097 MB
✔️ 43m 2s 2m 10s (56% más rápido) 9292 MB
Byol 1h 38m 46s 4m 56s 5409 MB
✔️ 50m 33s 2m 31s (49% más rápido) 9521 MB
Nnclr 1h 38m 30s 4m 55s 5060 MB
✔️ 42m 3s 2m 6s (64% más rápido) 9244 MB

Nota : El aumento de la memoria de GPU no se escala con el modelo, sino que escala con el número de trabajadores.


Citación

Si usa solo-learn, cite nuestro documento:

 @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 }
}
Expandir
Información adicional