Library structure

Introduction

Eztorch as a library has a specific organization for how and where the files are created. Names of folders and files should be informative of their content.

General structure

The General tree structure of Eztorch is the following:

eztorch
├── docs
├── eztorch
├── run
└── tests

Doc

In docs/, you will find source documentation files about Eztorch such as in this file. We aim to make Eztorch accessible to anyone.

Eztorch

The folder eztorch/ contains the actual library that we will detail below.

Run

The folder run/ contains various scripts to make training or evaluation. These scripts thanks a Hydra configuration should perform a task agnostically to specific classes or architectures and be able to generalize to any relevant Hydra configuration.

Tests

The folder tests/ contains various tests to ensure that components in Eztorch properly work.

As a general rule of thumb, the best would be to test individual components every time they are added, which is not the case for now.

Library structure

The tree structure of the library is the following:

eztorch/eztorch
├── callbacks
├── configs
├── datamodules
├── datasets
├── evaluation
├── losses
├── models
├── optimizers
├── schedulers
├── transforms
├── utils
└── visualization

Callbacks

The callbacks/ folder contains callbacks to feed the trainer based on Pytorch-Lightning.

Datamodules

The datamodules/ folder contains datamodules for various image and video datasets.

Datasets

The datasets/ folder contains datasets tools for various image and video datasets.

Among these tools, there are:

  • Datasets for videos, for example datasets/hmdb51.py.

  • Wrapper around datasets, for example datasets/dict_dataset.py.

  • Other tools such as clip samplers for video clip generation in datasets/clip_samplers/.

Evaluation

The evaluation/ folder contains the tools for evaluation networks. For now, there are:

  • Linear classifier evaluation for SSL protocol.

  • Testing time augmentations functions to average predictions of several augmentations.

Losses

The losses/ folder contains individual component losses.

Models

The models/ folder contains models and tools to configure the various models supported by Eztorch for images and videos.

It follows the following structure:

eztorch/eztorch/models
├── heads
├── modules
├── siamese
└── trunks

Heads

The heads/ folder contains various heads for your models.

Heads are the part of your models that should specialize to a task:

  • Linear heads for classification task.

  • MLP heads for self-supervised learning projections and predictions.

Modules

The modules/ folder contains layers or modules for your models that accomplish a specific action.

It could be gathering tensors, or splitting batch normalization layers in parts, …

Siamese

The siamese/ folder contains siamese models for self-supervised learning.

Currently implemented methods are:

  • MoCo (v1, v2, v3)

  • ReSSL

  • SCE

  • SimCLR

Trunks

The trunks/ folder contains the trunks, backbone, or encoders, used in Eztorch for Image and Video modalities.

Timm and Pytorchvideo models are also available.

Optimizers

The optimizers/ folder contains the custom optimizers (such as LARS) but also factories to easily instantiate them.

Schedulers

The schedulers/ folder contains the custom schedulers (such as Cosine Annealing) but also factories to easily instantiate them.

Transforms

The transforms/ folder contains all custom transforms defined by Eztorch for images and videos.

Transforms from Torchvision or Kornia are also available. The latter permits GPU transforms.

Utils

The utils/ folder contains all utils functions to help Eztorch functionalities and allow various training tricks.

Visualization

The visualization/ contains tools to visualize data.