Leicht SSL ist ein Computer-Vision-Framework für das selbstbewertete Lernen.
Für eine kommerzielle Version mit weiteren Funktionen, einschließlich Docker -Support- und Vorbereitungsmodellen zum Einbettung, Klassifizierung, Erkennung und Segmentierungsaufgaben mit einem einzigen Befehl, wenden Sie sich bitte an [email protected].
Wir haben auch eine ganze Plattform mit zusätzlichen Funktionen für aktives Lernen und Datenkuration erstellt. Wenn Sie sich für die leicht arbeitende Lösung interessieren, um Millionen von Proben problemlos zu verarbeiten und leistungsstarke Algorithmen für Ihre Daten auszuführen, lesen Sie leicht. Es ist kostenlos, loszulegen!
Dieser selbstüberwachende Lernrahmen bietet die folgenden Funktionen:
Für alle unterstützten Modelle finden Sie hier Beispielcode. Wir bieten Pytorch, Pytorch Lightning und Pytorch Lightning -verteilte Beispiele für alle Modelle an, um Ihr Projekt zu starten.
Modelle :
| Modell | Jahr | Papier | Dokumente | Colab (Pytorch) | Colab (Pytorch Lightning) |
|---|---|---|---|---|---|
| ZIEL | 2024 | Papier | Dokumente | ||
| Barlow Twins | 2021 | Papier | Dokumente | ||
| BYOL | 2020 | Papier | Dokumente | ||
| DCL & DCLW | 2021 | Papier | Dokumente | ||
| Densecl | 2021 | Papier | Dokumente | ||
| Dino | 2021 | Papier | Dokumente | ||
| Mae | 2021 | Papier | Dokumente | ||
| Msn | 2022 | Papier | Dokumente | ||
| Moco | 2019 | Papier | Dokumente | ||
| Nnclr | 2021 | Papier | Dokumente | ||
| PMSN | 2022 | Papier | Dokumente | ||
| Simclr | 2020 | Papier | Dokumente | ||
| Simmim | 2022 | Papier | Dokumente | ||
| Simsiam | 2021 | Papier | Dokumente | ||
| Swav | 2020 | Papier | Dokumente | ||
| Vicreg | 2021 | Papier | Dokumente |
Möchten Sie zu den Tutorials springen und leicht in Aktion sehen?
Community- und Partnerprojekte:
Er benötigt leicht Python 3.7+ . Wir empfehlen, in einer Linux- oder OSX -Umgebung leicht zu installieren. Python 3.13 wird noch nicht unterstützt, da Pytorch selbst Python 3.13 -Kompatibilität fehlt.
Aufgrund der modularen Natur des leichtfertigenden Verpackens können einige Module mit älteren Versionen von Abhängigkeiten verwendet werden. Um jedoch alle Funktionen ab heute leicht zu verwenden, sind die folgenden Abhängigkeiten erforderlich:
Leicht mit Pytorch und Pytorch Lightning v2.0+kompatibel!
Sie können leicht und seine Abhängigkeiten von PYPI installieren mit:
pip3 install lightly
Wir empfehlen dringend, in einem dedizierten Virtualenv leicht zu installieren, um Konflikte mit Ihren Systempaketen zu vermeiden.
Mit leichtfertigem Lernmethoden können Sie die neuesten selbstüberwachenden Lernmethoden auf modulare Weise mit der vollen Kraft von Pytorch verwenden. Experimentieren Sie mit verschiedenen Rückgriffen, Modellen und Verlustfunktionen. Das Framework wurde so konzipiert, dass sie von Grund auf einfach zu bedienen sind. Weitere Beispiele finden Sie in unseren Dokumenten.
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 } " )Sie können einfach ein anderes Modell wie Simsiam verwenden, indem Sie das Modell und die Verlustfunktion austauschen.
# 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 ()Für Simsiam finden Sie hier ein vollständigeres Beispiel für Simsiam.
Verwenden Sie Pytorch Lightning, um das Modell zu trainieren:
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 )In unseren Dokumenten finden Sie ein volles Pytorch -Blitzbeispiel.
Oder trainieren Sie das Modell auf 4 GPUs:
# 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 )Wir stellen Multi-GPU-Schulungsbeispiele mit verteiltem Sammeln und synchronisiertem Batchnorm an. Schauen Sie sich unsere Dokumente in Bezug auf verteilte Schulungen an.
Implementierte Modelle und ihre Leistung in verschiedenen Datensätzen. Hyperparameter sind nicht auf maximale Genauigkeit abgestimmt. Ausführliche Ergebnisse und weitere Informationen zu den Benchmarks finden Sie hier.
ImageNet1k Benchmarks
Hinweis : Die Bewertungseinstellungen basieren auf diesen Arbeiten:
Weitere Informationen finden Sie in den Benchmarking -Skripten.
| Modell | Rückgrat | Chargengröße | Epochen | Linear Top1 | Finetune Top1 | KNN TOP1 | Tensorboard | Kontrollpunkt |
|---|---|---|---|---|---|---|---|---|
| Barlowtwins | Res50 | 256 | 100 | 62.9 | 72.6 | 45,6 | Link | Link |
| BYOL | Res50 | 256 | 100 | 62,5 | 74,5 | 46.0 | Link | Link |
| Dino | Res50 | 128 | 100 | 68,2 | 72,5 | 49,9 | Link | Link |
| Mae | Vit-B/16 | 256 | 100 | 46.0 | 81.3 | 11.2 | Link | Link |
| MOCOV2 | Res50 | 256 | 100 | 61,5 | 74.3 | 41,8 | Link | Link |
| Simclr* | Res50 | 256 | 100 | 63.2 | 73,9 | 44,8 | Link | Link |
| SIMCLR* + DCL | Res50 | 256 | 100 | 65.1 | 73,5 | 49,6 | Link | Link |
| SIMCLR* + DCLW | Res50 | 256 | 100 | 64,5 | 73.2 | 48,5 | Link | Link |
| Swav | Res50 | 256 | 100 | 67,2 | 75,4 | 49,5 | Link | Link |
| Tico | Res50 | 256 | 100 | 49,7 | 72.7 | 26.6 | Link | Link |
| Vicreg | Res50 | 256 | 100 | 63.0 | 73.7 | 46,3 | Link | Link |
*Wir verwenden die Skalierung der Quadratwurzel -Lernrate anstelle einer linearen Skalierung, da sie für kleinere Stapelgrößen bessere Ergebnisse erzielen. Siehe Anhang B.1 im SIMCLR -Papier.
ImageNET100 Benchmarks Detaillierte Ergebnisse
ImageNette Benchmarks detaillierte Ergebnisse
CIFAR-10-Benchmarks detaillierte Ergebnisse
Im Folgenden finden Sie einen schematischen Überblick über die verschiedenen Konzepte im Paket. Die fetthaltigen Begriffe werden in unserer Dokumentation ausführlicher erläutert.

Besuchen Sie die Dokumentation und sehen Sie die Dinge, die Sie leicht erreichen können!
So installieren Sie Develing -Abhängigkeiten (z. B. um zum Framework beizutragen) Sie können den folgenden Befehl verwenden:
pip3 install -e ".[dev]"
Weitere Informationen zum Beiträgen finden Sie hier.
Unit -Tests befinden sich innerhalb des Testverzeichnisses und wir empfehlen, sie mit PyTest auszuführen. Es sind zwei Testkonfigurationen verfügbar. Standardmäßig wird nur eine Teilmenge ausgeführt:
make test-fast
Um alle Tests (einschließlich der langsamen) auszuführen, können Sie den folgenden Befehl verwenden:
make test
Um eine bestimmte Datei oder eine bestimmte Verwendung zu testen:
pytest <path to file or directory>
Code mit Black und ISORT Run formatieren:
make format
Selbstüberprüftes Lernen :
Warum sollte ich mich um das selbstbewertete Lernen kümmern? Sie sind nicht viel besser ausgebildete Modelle von ImageNet für das Transferlernen?
Wie kann ich dazu beitragen?
Ist dieser Rahmen kostenlos?
Wenn dieses Rahmen kostenlos ist, wie ist das Unternehmen, das hinter leicht Geld verdient?
Leicht ein Ausgrenzung von ETH Zürich, mit dem Unternehmen effiziente aktive Lernpipelines aufbauen können, um die relevantesten Daten für ihre Modelle auszuwählen.
Sie können mehr über das Unternehmen und seine Dienstleistungen erfahren, indem Sie den folgenden Links folgen:
Zurück nach oben