مكتبة من الأساليب الخاضعة للإشراف ذاتيا للتمثيل المرئي غير الخاضع للإشراف التعلم مدعوم من البرق Pytorch. نحن نهدف إلى توفير أساليب SOTA ذات الخبرة الذاتي في بيئة مماثلة بينما ، في الوقت نفسه ، تنفيذ الحيل التدريبية. المكتبة قائمة بذاتها ، ولكن من الممكن استخدام النماذج خارج التعلم المنفرد. مزيد من التفاصيل في ورقتنا .
main_linear.py ، mixup ، cutmix وزيادة عشوائية.خياري :
أول استنساخ الريبو.
ثم ، لتثبيت التعلم المنفرد مع دعم 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: فكر في تثبيت وسادة SIMD لأوقات التحميل الأفضل عند عدم استخدام DALI.
الملاحظة 3: قريبا لتكون على PIP.
لتدرج العمود الفقري ، اتبع أحد ملفات Bash العديدة في 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} .
ملاحظة: تحاول الملفات أن تكون محدثة وتتبع بشكل وثيق قدر الإمكان المعلمات الموصى بها لكل ورقة ، ولكن تحقق منها قبل التشغيل.
من فضلك ، تحقق من وثائقنا والدروس التعليمية:
إذا كنت ترغب في المساهمة في التعلم الفردي ، فتأكد من إلقاء نظرة على كيفية المساهمة واتباع مدونة السلوك
يمكن تنزيل جميع الطرز المسبقة مباشرة عبر الجداول أدناه أو برمجيًا عن طريق تشغيل أحد البرامج النصية التالية 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 | ؟ | |
| بيلول | RESNET18 | 1000 | 92.58 | 99.79 | ؟ | |
| Deepcluster 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 | ؟ | |
| ريسل | RESNET18 | 1000 | 90.63 | 99.62 | ؟ | |
| Simclr | RESNET18 | 1000 | 90.74 | 99.75 | ؟ | |
| سيمسيام | RESNET18 | 1000 | 90.51 | 99.72 | ؟ | |
| سوبكون | RESNET18 | 1000 | 93.82 | 99.65 | ؟ | |
| سرب | 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 | ؟ | |
| بيلول | RESNET18 | 1000 | 70.46 | 91.96 | ؟ | |
| Deepcluster 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 | ؟ | |
| ريسل | RESNET18 | 1000 | 65.92 | 89.73 | ؟ | |
| Simclr | RESNET18 | 1000 | 65.78 | 89.04 | ؟ | |
| سيمسيام | RESNET18 | 1000 | 66.04 | 89.62 | ؟ | |
| سوبكون | RESNET18 | 1000 | 70.38 | 89.57 | ؟ | |
| سرب | 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 | ؟ |
| بيلول | RESNET18 | 400 | ✔ | 80.16 | 80.32 | 95.02 | 94.94 | ؟ |
| Deepcluster 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 | تودو | 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 | تودو | ؟ |
| سيمسيام | RESNET18 | 400 | ✔ | 74.54 | 78.72 | 93.16 | 94.78 | ؟ |
| سوبكون | 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 | ؟ |
| 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 (غير متصل) | نقطة التفتيش | نقطة تفتيش محيطة |
|---|---|---|---|---|---|---|---|---|---|
| توأم بارلو | RESNET50 | 100 | ✔ | 67.18 | 67.23 | 87.69 | 87.98 | ؟ | |
| بيلول | 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 (محيط) | ؟ | ؟ |
نقوم بالإبلاغ عن كفاءة التدريب لبعض الطرق باستخدام ResNet18 مع وبدون DALI (4 عمال لكل وحدة معالجة الرسومات) في خادم مع Intel I9-9820x واثنين من RTX2080TI.
| طريقة | دالي | إجمالي الوقت لمدة 20 عصر | حان الوقت لعصر 1 | ذاكرة GPU (لكل وحدة معالجة الرسومات) |
|---|---|---|---|---|
| توأم بارلو | 1H 38M 27S | 4M 55S | 5097 ميغابايت | |
| ✔ | 43M 2S | 2M 10S (56 ٪ أسرع) | 9292 ميغابايت | |
| بيلول | 1H 38M 46S | 4M 56S | 5409 ميغابايت | |
| ✔ | 50m 33s | 2M 31S (49 ٪ أسرع) | 9521 ميغابايت | |
| nnclr | 1H 38M 30S | 4M 55S | 5060 ميغابايت | |
| ✔ | 42M 3S | 2M 6S (64 ٪ أسرع) | 9244 ميغابايت |
ملاحظة : لا تتسع زيادة ذاكرة GPU مع النموذج ، بل إنها تتماسك مع عدد العمال.
إذا كنت تستخدم التعلم المنفرد ، فيرجى الاستشهاد بورقنا:
@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 }
}