This repository contains re-Implementation of https://arxiv.org/abs/2103.06255
The authors of Involution: Inverting the Inherence of Convolution for Visual Recognition propose a novel involutional layers, which aims to enhance the representation power of convolutional neural networks by inverting the inherent properties of convolution operations. As such these kernals are channel agnostic and spatial specific.
pip install torch torchvision
pip install wandb
pip install lightning
from models.rednet import RedNet
rednet50 = RedNet(50) # 50 layer Rednet model
models
contains implementation of backbone models introduced the paper and related heads and neck architectures.
notebooks
contains main python notebooks for training and testing.
git clone https://github.com/thatblueboy/involution.git #clone the repo
git checkout submission_branch #change to the submission branch
Edit the train.py
file. Here you can change various Hyperparameters in the config dict. Note that changing lr_scheduler will require corresponding chnage in lr_sceduler_kwargs.
Note: We use a random split split on Caltech256. For uniformity we store this split in the data_module.pth and load it for every training run.
This behaviour could be changed by setting the 'data_module_path' value in the config dict = None.
To switch from training to testing mode, change the last line in the train.py from
trainer.fit(model, data_module)
to
trainer.test(test, data_module)
after making all the necessary changes do:
python train.py