ห้องสมุดของวิธีการดูแลตนเองสำหรับการเรียนรู้ด้วยการแสดงภาพที่ไม่ได้รับการดูแลโดย Pytorch Lightning เราตั้งเป้าหมายที่จะให้วิธีการดูแลตนเองของ SOTA ในสภาพแวดล้อมที่เทียบเคียงได้ในขณะเดียวกันก็ใช้เทคนิคการฝึกอบรม ห้องสมุดมีอยู่ในตัวเอง แต่เป็นไปได้ที่จะใช้โมเดลนอกการเรียนรู้เดี่ยว รายละเอียดเพิ่มเติมในกระดาษของเรา
main_linear.py , mixup, cutmix และการเพิ่มแบบสุ่มไม่จำเป็น :
โคลนครั้งแรก repo
จากนั้นเพื่อติดตั้ง Solo-Learn ด้วยการสนับสนุน Dali และ/หรือ UMAP ให้ใช้:
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: พิจารณาการติดตั้ง Pillow-SIMD เพื่อการโหลดที่ดีขึ้นเมื่อไม่ได้ใช้ DALI
หมายเหตุ 3: เร็ว ๆ นี้จะอยู่บน PIP
สำหรับการเตรียมกระดูกสันหลังให้ติดตามหนึ่งในไฟล์ bash จำนวนมากใน scripts/pretrain/ ตอนนี้เราใช้ไฮดราเพื่อจัดการไฟล์กำหนดค่าดังนั้นไวยากรณ์ทั่วไปจึงเป็นเช่น:
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 สำหรับ finetuning กระดูกสันหลังทั้งหมด
สำหรับการประเมิน K-NN และการสร้างภาพ UMAP ให้ตรวจสอบสคริปต์ใน scripts/{knn,umap}
หมายเหตุ: ไฟล์พยายามที่จะทันสมัยและติดตามอย่างใกล้ชิดที่สุดเท่าที่จะเป็นไปได้พารามิเตอร์ที่แนะนำของแต่ละกระดาษ แต่ตรวจสอบก่อนที่จะทำงาน
กรุณาตรวจสอบเอกสารและบทเรียนของเรา:
หากคุณต้องการมีส่วนร่วมในการเรียนรู้เดี่ยวตรวจสอบให้แน่ใจว่าคุณได้ดูวิธีการมีส่วนร่วมและปฏิบัติตามจรรยาบรรณ
ทุกรุ่นที่ได้รับการฝึกฝนทั้งหมดสามารถดาวน์โหลดได้โดยตรงผ่านตารางด้านล่างหรือทางโปรแกรมโดยใช้หนึ่งในสคริปต์ต่อไปนี้ zoo/cifar10.sh , zoo/cifar100.sh , zoo/imagenet100.sh และ zoo/imagenet.sh
หมายเหตุ: Hyperparameters อาจไม่ใช่สิ่งที่ดีที่สุดเราจะดำเนินการตามวิธีการที่มีประสิทธิภาพต่ำกว่าในที่สุด
| วิธี | กระดูกสันหลัง | ยุค | ต้าบีย | acc@1 | acc@5 | ด่าน |
|---|---|---|---|---|---|---|
| all4one | resnet18 | 1,000 | 93.24 | 99.88 | - | |
| Barlow Twins | resnet18 | 1,000 | 92.10 | 99.73 | - | |
| Byol | resnet18 | 1,000 | 92.58 | 99.79 | - | |
| DeepCluster v2 | resnet18 | 1,000 | 88.85 | 99.58 | - | |
| Dino | resnet18 | 1,000 | 89.52 | 99.71 | - | |
| moco v2+ | resnet18 | 1,000 | 92.94 | 99.79 | - | |
| Moco v3 | resnet18 | 1,000 | 93.10 | 99.80 | - | |
| nnclr | resnet18 | 1,000 | 91.88 | 99.78 | - | |
| การรดน้ำ | resnet18 | 1,000 | 90.63 | 99.62 | - | |
| simclr | resnet18 | 1,000 | 90.74 | 99.75 | - | |
| Simsiam | resnet18 | 1,000 | 90.51 | 99.72 | - | |
| supcon | resnet18 | 1,000 | 93.82 | 99.65 | - | |
| การสวด | resnet18 | 1,000 | 89.17 | 99.68 | - | |
| Vibcreg | resnet18 | 1,000 | 91.18 | 99.74 | - | |
| เวิร์ก | resnet18 | 1,000 | 92.07 | 99.74 | - | |
| W-MSE | resnet18 | 1,000 | 88.67 | 99.68 | - |
| วิธี | กระดูกสันหลัง | ยุค | ต้าบีย | acc@1 | acc@5 | ด่าน |
|---|---|---|---|---|---|---|
| all4one | resnet18 | 1,000 | 72.17 | 93.35 | - | |
| Barlow Twins | resnet18 | 1,000 | 70.90 | 91.91 | - | |
| Byol | resnet18 | 1,000 | 70.46 | 91.96 | - | |
| DeepCluster v2 | resnet18 | 1,000 | 63.61 | 88.09 | - | |
| Dino | resnet18 | 1,000 | 66.76 | 90.34 | - | |
| moco v2+ | resnet18 | 1,000 | 69.89 | 91.65 | - | |
| Moco v3 | resnet18 | 1,000 | 68.83 | 90.57 | - | |
| nnclr | resnet18 | 1,000 | 69.62 | 91.52 | - | |
| การรดน้ำ | resnet18 | 1,000 | 65.92 | 89.73 | - | |
| simclr | resnet18 | 1,000 | 65.78 | 89.04 | - | |
| Simsiam | resnet18 | 1,000 | 66.04 | 89.62 | - | |
| supcon | resnet18 | 1,000 | 70.38 | 89.57 | - | |
| การสวด | resnet18 | 1,000 | 64.88 | 88.78 | - | |
| Vibcreg | resnet18 | 1,000 | 67.37 | 90.07 | - | |
| เวิร์ก | resnet18 | 1,000 | 68.54 | 90.83 | - | |
| W-MSE | resnet18 | 1,000 | 61.33 | 87.26 | - |
| วิธี | กระดูกสันหลัง | ยุค | ต้าบีย | ACC@1 (ออนไลน์) | ACC@1 (ออฟไลน์) | ACC@5 (ออนไลน์) | ACC@5 (ออฟไลน์) | ด่าน |
|---|---|---|---|---|---|---|---|---|
| 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 เล็ก | 400 | 63.04 | สิ่งที่ต้องทำ | 87.72 | สิ่งที่ต้องทำ | - | |
| 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 | - | |
| การรดน้ำ | resnet18 | 400 | 76.92 | 78.48 | 94.20 | 94.24 | - | |
| simclr | resnet18 | 400 | 77.64 | สิ่งที่ต้องทำ | 94.06 | สิ่งที่ต้องทำ | - | |
| Simsiam | resnet18 | 400 | 74.54 | 78.72 | 93.16 | 94.78 | - | |
| supcon | resnet18 | 400 | 84.40 | สิ่งที่ต้องทำ | 95.72 | สิ่งที่ต้องทำ | - | |
| การสวด | resnet18 | 400 | 74.04 | 74.28 | 92.70 | 92.84 | - | |
| Vibcreg | resnet18 | 400 | 79.86 | 79.38 | 94.98 | 94.60 | - | |
| เวิร์ก | resnet18 | 400 | 79.22 | 79.40 | 95.06 | 95.02 | - | |
| W-MSE | resnet18 | 400 | 67.60 | 69.06 | 90.94 | 91.22 | - |
วิธีการที่ hyperparameters ถูกปรับอย่างหนัก
- VIT มีการคำนวณอย่างเข้มข้นและไม่เสถียรมากดังนั้นเราจึงค่อยๆใช้สถาปัตยกรรมที่มีขนาดใหญ่ขึ้นและมีขนาดแบทช์ที่ใหญ่ขึ้น ATM ขนาดแบทช์ทั้งหมดคือ 128 และเราจำเป็นต้องใช้ความแม่นยำของ Float32 หากคุณต้องการมีส่วนร่วมโดยการเรียกใช้ให้เรารู้!
| วิธี | กระดูกสันหลัง | ยุค | ต้าบีย | ACC@1 (ออนไลน์) | ACC@1 (ออฟไลน์) | ACC@5 (ออนไลน์) | ACC@5 (ออฟไลน์) | ด่าน | จุดตรวจ 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 | - | ||
| แม่ | Vit-B/16 | 100 | - | 81.60 (Finetuned) | - | 95.50 (Finetuned) | - | - |
เรารายงานประสิทธิภาพการฝึกอบรมของวิธีการบางอย่างโดยใช้ RESNET18 ที่มีและไม่มี DALI (4 คนต่อ GPU) ในเซิร์ฟเวอร์ที่มี Intel I9-9820X และ RTX2080TI สองตัว
| วิธี | ต้าบีย | เวลาทั้งหมดสำหรับ 20 ยุค | เวลาสำหรับ 1 ยุค | หน่วยความจำ GPU (ต่อ GPU) |
|---|---|---|---|---|
| Barlow Twins | 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 }
}