Directory Structure
Here is a quick walk-through of the CVNet code base. Below is a redacted version of the source code directory structure with the important parts marked with a star.
.
├── common
├── config
├── cvnets
│ ├── anchor_generator
│ ├── layers
│ ├── misc
│ ├── models (*)
│ │ ├── classification
│ │ ├── detection
│ │ ├── neural_augmentation
│ │ ├── segmentation
│ │ └── video_classification
│ └── modules (*)
├── data
│ ├── collate_fns
│ ├── datasets (*)
│ ├── loader
│ ├── sampler (*)
│ ├── transforms
│ └── video_reader
├── docs
├── engine (*)
│ ├── detection_utils
│ └── segmentation_utils
├── loss_fn
├── metrics
└── optim
└── scheduler
Models
Models for the different tasks (classification, detection, etc) are defined under cvnets/models/<task>
and are categorized based on the task.
Each task has its own parent class. For example, classification models are derived from the cvnets.models.classification.base_cls.BaseEncoder
class.
The models are defined to be reusable and shareable between tasks. For example, the ResNet model is defined under the classification
directory, but the detection models, such as ssd
, can use ResNet as their encoder
to avoid duplication.
Modules
High-level modules such as InvertedResidual
block for MobileNet-v2 and TransformerEncoder
block of ViT and MobileViT are available under cvnets/modules
.
Datasets
You can find the dataset classes such as ImagenetDataset
under data/datasets/<task>
directory. Just like models, dataset are also categorized based on the task.
You can also find the availabe transforms under data/transforms
. For images, we have transforms based on both OpenCV and PIL, but we recommend using PIL for better performance.
Our novel data samplers can also be found under data/sampler
.
Training/Evaluation Engine
The entry scripts (main_train.py
and main_eval.py
) will build and initialize objects such as the model, dataset, and optimizer. They also initialize distributed training if need be.
Next, the Training/Evaluation Engine (engine/training_engine.py
and engine/evaluation_engine.py
) are called which contain the training/evaluation logic.