Pytorch Lightning에 의해 구동되는 감독되지 않은 시각적 표현 학습을위한 자체 감독 방법 라이브러리. 우리는 비슷한 환경에서 SOTA 자체 감독 방법을 제공하는 동시에 교육 트릭을 구현하는 것을 목표로합니다. 도서관은 자체 포함하지만 Solo-Learn 외부의 모델을 사용할 수 있습니다. 우리 논문의 자세한 내용 .
main_linear.py , Mixup, Cutmix 및 Random Augment를 사용하여 백본을 최종 지원합니다.선택 사항 :
먼저 repo를 복제하십시오.
그런 다음 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를 사용할 때 더 나은 로딩 시간을 위해 Pillow-SIMD 설치를 고려하십시오.
참고 3 : 곧 PIP에있을 것입니다.
백본을 예비 바로 잡으려면 scripts/pretrain/ 의 많은 배쉬 파일 중 하나를 팔로우하십시오. 우리는 이제 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에 기여하려면 기여하는 방법을 살펴보고 행동 강령을 따라야합니다.
다음 스크립트 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 | ? | |
| 딥 클러스터 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 | ? | |
| 심시암 | 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 | ? | |
| Byol | RESNET18 | 1000 | 70.46 | 91.96 | ? | |
| 딥 클러스터 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 | ? | |
| 심시암 | 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 | ? |
| Byol | RESNET18 | 400 | ✔️ | 80.16 | 80.32 | 95.02 | 94.94 | ? |
| 딥 클러스터 v2 | RESNET18 | 400 | 75.36 | 75.4 | 93.22 | 93.10 | ? | |
| 디노 | RESNET18 | 400 | ✔️ | 74.84 | 74.92 | 92.92 | 92.78 | ? |
| 디노? | Vit Tiny | 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 | ? |
| 심시암 | 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 | ? |
초 파라미터가 심하게 조정 된 방법.
? Vit는 매우 집중적이고 불안정하기 때문에 천천히 더 큰 아키텍처를 실행하고 배치 크기가 더 큽니다. ATM, 총 배치 크기는 128이며 Float32 정밀도를 사용해야했습니다. 실행하여 기여하고 싶다면 알려주십시오!
| 방법 | 등뼈 | 에포크 | 달리 | ACC@1 (온라인) | ACC@1 (오프라인) | ACC@5 (온라인) | ACC@5 (오프라인) | 검문소 | FINETUNED 체크 포인트 |
|---|---|---|---|---|---|---|---|---|---|
| 바로우 쌍둥이 | 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 (Finetuned) | ~ | 95.50 (Finetuned) | ? | ? |
우리는 인텔 i9-9820x와 2 개의 RTX2080TI가있는 서버에서 DALI (GPU 당 4 명의 작업자)가 있거나없는 RESNET18을 사용하여 일부 방법의 교육 효율성을보고합니다.
| 방법 | 달리 | 20 개의 에포크에 대한 총 시간 | 1 에크를위한 시간 | GPU 메모리 (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 메모리 증가는 모델로 확장되지 않고 오히려 작업자 수로 스케일링됩니다.
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 }
}