SSL Lightly هو إطار رؤية للكمبيوتر للتعلم الخاضع للإشراف ذاتيا.
للحصول على إصدار تجاري مع المزيد من الميزات ، بما في ذلك دعم Docker ونماذج ما قبل التضمين ، والتصنيف ، والاكتشاف ، ومهام التجزئة مع أمر واحد ، يرجى الاتصال [email protected].
لقد قمنا أيضًا ببناء منصة كاملة في الأعلى ، مع ميزات إضافية للتعلم النشط وتشغيل البيانات. إذا كنت مهتمًا بحل العمال الخفيف لمعالجة ملايين العينات بسهولة وتشغيل خوارزميات قوية على بياناتك ، تحقق من Lightly.ai. إنه مجاني للبدء!
يوفر إطار التعلم الخاضع للإشراف ذاتيًا الميزات التالية:
يمكنك العثور على نموذج رمز لجميع النماذج المدعومة هنا. نحن نقدم Pytorch و Pytorch Lightning و Pytorch Lightning أمثلة موزعة لجميع الطرز لبدء مشروعك.
النماذج :
| نموذج | سنة | ورق | مستندات | كولاب (بيتورش) | كولاب (بايتورش البرق) |
|---|---|---|---|---|---|
| هدف | 2024 | ورق | مستندات | ||
| توأم بارلو | 2021 | ورق | مستندات | ||
| بيلول | 2020 | ورق | مستندات | ||
| DCL و DCLW | 2021 | ورق | مستندات | ||
| كثيف | 2021 | ورق | مستندات | ||
| دينو | 2021 | ورق | مستندات | ||
| ماي | 2021 | ورق | مستندات | ||
| MSN | 2022 | ورق | مستندات | ||
| موكو | 2019 | ورق | مستندات | ||
| nnclr | 2021 | ورق | مستندات | ||
| PMSN | 2022 | ورق | مستندات | ||
| Simclr | 2020 | ورق | مستندات | ||
| سيمم | 2022 | ورق | مستندات | ||
| سيمسيام | 2021 | ورق | مستندات | ||
| سرب | 2020 | ورق | مستندات | ||
| Vicreg | 2021 | ورق | مستندات |
هل تريد القفز إلى البرامج التعليمية والترى بخفة في العمل؟
مشاريع المجتمع والشريك:
يتطلب برفق بيثون 3.7+ . نوصي بالتثبيت بخفة في بيئة Linux أو OSX . لم يتم دعم Python 3.13 بعد ، لأن Pytorch نفسه يفتقر إلى توافق Python 3.13.
نظرًا للطبيعة المعيارية للحزمة الخفيفة ، يمكن استخدام بعض الوحدات النمطية مع الإصدارات القديمة من التبعيات. ومع ذلك ، لاستخدام جميع الميزات اعتبارًا من اليوم ، يتطلب الأمر برفق التبعيات التالية:
برفق متوافق مع Pytorch و Pytorch Lightning V2.0+!
يمكنك التثبيت بخفة وتبعياته من PYPI مع:
pip3 install lightly
نوصي بشدة بالتثبيت برفق في ظاهرة مخصصة لتجنب النزاعات مع حزم النظام الخاصة بك.
مع طفيفة ، يمكنك استخدام أحدث أساليب التعلم التي يتم إشرافها ذاتيًا بطريقة معيارية باستخدام القوة الكاملة لـ Pytorch. تجربة مع مختلف العمود الفقري والنماذج ووظائف الخسارة. تم تصميم الإطار ليكون سهلاً الاستخدام من الألف إلى الياء. ابحث عن المزيد من الأمثلة في مستنداتنا.
import torch
import torchvision
from lightly import loss
from lightly import transforms
from lightly . data import LightlyDataset
from lightly . models . modules import heads
# Create a PyTorch module for the SimCLR model.
class SimCLR ( torch . nn . Module ):
def __init__ ( self , backbone ):
super (). __init__ ()
self . backbone = backbone
self . projection_head = heads . SimCLRProjectionHead (
input_dim = 512 , # Resnet18 features have 512 dimensions.
hidden_dim = 512 ,
output_dim = 128 ,
)
def forward ( self , x ):
features = self . backbone ( x ). flatten ( start_dim = 1 )
z = self . projection_head ( features )
return z
# Use a resnet backbone from torchvision.
backbone = torchvision . models . resnet18 ()
# Ignore the classification head as we only want the features.
backbone . fc = torch . nn . Identity ()
# Build the SimCLR model.
model = SimCLR ( backbone )
# Prepare transform that creates multiple random views for every image.
transform = transforms . SimCLRTransform ( input_size = 32 , cj_prob = 0.5 )
# Create a dataset from your image folder.
dataset = LightlyDataset ( input_dir = "./my/cute/cats/dataset/" , transform = transform )
# Build a PyTorch dataloader.
dataloader = torch . utils . data . DataLoader (
dataset , # Pass the dataset to the dataloader.
batch_size = 128 , # A large batch size helps with the learning.
shuffle = True , # Shuffling is important!
)
# Lightly exposes building blocks such as loss functions.
criterion = loss . NTXentLoss ( temperature = 0.5 )
# Get a PyTorch optimizer.
optimizer = torch . optim . SGD ( model . parameters (), lr = 0.1 , weight_decay = 1e-6 )
# Train the model.
for epoch in range ( 10 ):
for ( view0 , view1 ), targets , filenames in dataloader :
z0 = model ( view0 )
z1 = model ( view1 )
loss = criterion ( z0 , z1 )
loss . backward ()
optimizer . step ()
optimizer . zero_grad ()
print ( f"loss: { loss . item ():.5f } " )يمكنك بسهولة استخدام نموذج آخر مثل Simsiam من خلال تبديل النموذج ووظيفة الخسارة.
# PyTorch module for the SimSiam model.
class SimSiam ( torch . nn . Module ):
def __init__ ( self , backbone ):
super (). __init__ ()
self . backbone = backbone
self . projection_head = heads . SimSiamProjectionHead ( 512 , 512 , 128 )
self . prediction_head = heads . SimSiamPredictionHead ( 128 , 64 , 128 )
def forward ( self , x ):
features = self . backbone ( x ). flatten ( start_dim = 1 )
z = self . projection_head ( features )
p = self . prediction_head ( z )
z = z . detach ()
return z , p
model = SimSiam ( backbone )
# Use the SimSiam loss function.
criterion = loss . NegativeCosineSimilarity ()يمكنك العثور على مثال أكثر اكتمالا لـ Simsiam هنا.
استخدم Lightning Pytorch لتدريب النموذج:
from pytorch_lightning import LightningModule , Trainer
class SimCLR ( LightningModule ):
def __init__ ( self ):
super (). __init__ ()
resnet = torchvision . models . resnet18 ()
resnet . fc = torch . nn . Identity ()
self . backbone = resnet
self . projection_head = heads . SimCLRProjectionHead ( 512 , 512 , 128 )
self . criterion = loss . NTXentLoss ()
def forward ( self , x ):
features = self . backbone ( x ). flatten ( start_dim = 1 )
z = self . projection_head ( features )
return z
def training_step ( self , batch , batch_index ):
( view0 , view1 ), _ , _ = batch
z0 = self . forward ( view0 )
z1 = self . forward ( view1 )
loss = self . criterion ( z0 , z1 )
return loss
def configure_optimizers ( self ):
optim = torch . optim . SGD ( self . parameters (), lr = 0.06 )
return optim
model = SimCLR ()
trainer = Trainer ( max_epochs = 10 , devices = 1 , accelerator = "gpu" )
trainer . fit ( model , dataloader )راجع مستنداتنا للحصول على مثال Lightning Pytorch الكامل.
أو تدريب النموذج على 4 وحدات معالجة الرسومات:
# Use distributed version of loss functions.
criterion = loss . NTXentLoss ( gather_distributed = True )
trainer = Trainer (
max_epochs = 10 ,
devices = 4 ,
accelerator = "gpu" ,
strategy = "ddp" ,
sync_batchnorm = True ,
use_distributed_sampler = True , # or replace_sampler_ddp=True for PyTorch Lightning <2.0
)
trainer . fit ( model , dataloader )نحن نقدم أمثلة تدريبية متعددة GPU مع تجمع موزعة والدفعة المتزامنة. إلقاء نظرة على مستنداتنا بشأن التدريب الموزع.
النماذج المنفذة وأدائها على مختلف مجموعات البيانات. لا يتم ضبط فرطاميرامترات لأقصى قدر من الدقة. للحصول على نتائج مفصلة ومزيد من المعلومات حول المعايير ، انقر هنا.
معايير ImageNet1k
ملاحظة : تستند إعدادات التقييم إلى هذه الأوراق:
انظر البرامج النصية القياسية للحصول على التفاصيل.
| نموذج | العمود الفقري | حجم الدُفعة | الحقبة | خطي TOP1 | FINETUNE TOP1 | KNN TOP1 | Tensorboard | نقطة التفتيش |
|---|---|---|---|---|---|---|---|---|
| Barlowtwins | RES50 | 256 | 100 | 62.9 | 72.6 | 45.6 | وصلة | وصلة |
| بيلول | RES50 | 256 | 100 | 62.5 | 74.5 | 46.0 | وصلة | وصلة |
| دينو | RES50 | 128 | 100 | 68.2 | 72.5 | 49.9 | وصلة | وصلة |
| ماي | VIT-B/16 | 256 | 100 | 46.0 | 81.3 | 11.2 | وصلة | وصلة |
| Mocov2 | RES50 | 256 | 100 | 61.5 | 74.3 | 41.8 | وصلة | وصلة |
| simclr* | RES50 | 256 | 100 | 63.2 | 73.9 | 44.8 | وصلة | وصلة |
| SimClr* + DCL | RES50 | 256 | 100 | 65.1 | 73.5 | 49.6 | وصلة | وصلة |
| SimClr* + DCLW | RES50 | 256 | 100 | 64.5 | 73.2 | 48.5 | وصلة | وصلة |
| سرب | RES50 | 256 | 100 | 67.2 | 75.4 | 49.5 | وصلة | وصلة |
| تيكو | RES50 | 256 | 100 | 49.7 | 72.7 | 26.6 | وصلة | وصلة |
| Vicreg | RES50 | 256 | 100 | 63.0 | 73.7 | 46.3 | وصلة | وصلة |
*نستخدم تحجيم معدل تعلم الجذر التربيعي بدلاً من التحجيم الخطي لأنه يعطي نتائج أفضل لأحجام الدُفعات الأصغر. انظر الملحق B.1 في ورقة SimClr.
LIMATINET100 معايير نتائج مفصلة
معايير Imagenette نتائج مفصلة
معايير CIFAR-10 نتائج مفصلة
أدناه يمكنك رؤية نظرة عامة تخطيطي للمفاهيم المختلفة في الحزمة. يتم شرح المصطلحات في BOLD بمزيد من التفصيل في وثائقنا.

توجه إلى الوثائق وشاهد الأشياء التي يمكنك تحقيقها برفق!
لتثبيت تبعيات DEV (على سبيل المثال للمساهمة في الإطار) ، يمكنك استخدام الأمر التالي:
pip3 install -e ".[dev]"
لمزيد من المعلومات حول كيفية المساهمة ، إلقاء نظرة هنا.
تقع اختبارات الوحدة ضمن دليل الاختبارات ونوصي بتشغيلها باستخدام Pytest. هناك نوعان من تكوينات الاختبار المتاحة. بشكل افتراضي ، سيتم تشغيل مجموعة فرعية فقط:
make test-fast
لتشغيل جميع الاختبارات (بما في ذلك الاختبارات البطيئة) ، يمكنك استخدام الأمر التالي:
make test
لاختبار ملف معين أو دليل معين:
pytest <path to file or directory>
لتنسيق رمز مع Black و Isort Run:
make format
التعلم الخاضع للإشراف :
لماذا يجب أن أهتم بالتعلم الخاضع للإشراف؟ أليست نماذج مدربة مسبقًا من ImageNet أفضل بكثير لتعلم النقل؟
كيف يمكنني المساهمة؟
هل هذا الإطار مجانًا؟
إذا كان هذا الإطار مجانيًا ، فكيف تكون الشركة وراء كسب المال بخفة؟
يعد Lightly عرضًا عرضيًا من Eth Zurich يساعد الشركات على بناء خطوط أنابيب تعليمية نشطة فعالة لتحديد البيانات الأكثر صلة بنماذجها.
يمكنك معرفة المزيد عن الشركة وخدماتها باتباع الروابط أدناه:
العودة إلى الأعلى