홈페이지>프로그래밍 관련>파이썬

솔로 학사

Pytorch Lightning에 의해 구동되는 감독되지 않은 시각적 표현 학습을위한 자체 감독 방법 라이브러리. 우리는 비슷한 환경에서 SOTA 자체 감독 방법을 제공하는 동시에 교육 트릭을 구현하는 것을 목표로합니다. 도서관은 자체 포함하지만 Solo-Learn 외부의 모델을 사용할 수 있습니다. 우리 논문의 자세한 내용 .


소식


로드맵과 도움이 필요합니다


사용 가능한 방법


추가 맛

백본

데이터

평가

훈련 트릭

벌채 반출


요구 사항

선택 사항 :


설치

먼저 repo를 복제하십시오.

그런 다음 Dali 및/또는 UMAP 지원으로 Solo-Learn을 설치하려면 다음을 사용하십시오.

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

DALI/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.shzoo/imagenet.sh 실행하여 아래 표를 통해 직접 또는 프로그래밍 방식으로 이동할 수있는 모든 사전 처리 된 모델은 직접 다운로드 할 수 있습니다.


결과

참고 : 하이퍼 파라미터가 최고가 아닐 수도 있습니다. 결국 성능이 낮은 방법을 다시 실행할 것입니다.

Cifar-10

방법 등뼈 에포크 달리 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 ?

CIFAR-100

방법 등뼈 에포크 달리 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 ?

imagenet-100

방법 등뼈 에포크 달리 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 정밀도를 사용해야했습니다. 실행하여 기여하고 싶다면 알려주십시오!

imagenet

방법 등뼈 에포크 달리 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) ? ?

Dali의 훈련 효율성

우리는 인텔 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 }
}
확장하다
추가 정보