This is my project for the image classification challenge as part of the image recognition course at MVA.
For more information on the methods I used, please read the file MVA_RecVis_TD3_report.pdf
- Cropping:
cropper.py
is used to crop an initial dataset into a cropped, cleaner dataset - Training and testing:
data.py
defines the data transforms and augmentationsmodels
is the folder containing all model files.model.py
defines the model used asNet
. In practice,model.py
is a symlink to a file in the foldermodels
.main.py
is a simple training script with anargparse
CLI.evaluate.py
is a simple evaluation script featuring anargparse
CLI to evaluate on the test dataset.
- Distributing computations:
computers_name
is the list of the adresses of computers usable for training, one on each line. It is not included here.distrib_train.py
is a more advanced distributed training script using Pytorchtorch.nn.parallel
module andDistributedDataParallel
function. It features anargparse
CLI, but should be launched using Pytorch'slaunch.py
script. See alsolaunch.sh
for launching.launch.sh
is a bash script to launch a worker on a specified number of nodes, taking node adresses fromcomputers_name
. It spawns a tmux on each node to allow for easily attaching to its shell and easy killing, and logs to the folderslogs/stdout
andlogs/stderr
kill.sh
does the inverse oflaunch.sh
, it kills workers on a specified number of nodes.
- Visualising features
visualise_features.py
is a script to visualise the outputs of a neural network on the dataset using PCA and t-SNE. It uses the modelNet
defined infeaturizer.py
. I used it to visualise the activations of the layer just before classification, in order to understand better the inner workings of my models.featurizer.py
defines the model used for this. Usually a symlink to a model inmodels
.TSNE_embeddings
is a folder containing pictures of such embeddings.
workshop.ipynb
is a notebook that I used to quickly try different things.MVA_RecVis_TD3_report.pdf
is my formal report where I detail the methods I used.