Here we implement state-of-the-art techniques for fine-grained classification.
- Discriminative filter learning within CNN -- CVPR, June 2018
- Bilinear CNN -- ICCV, 2015
To this end, we authored a few notebooks that illustrate both techniques as well as other approaches:
Plain ResNet50, VGG19_bn.ipynb
contain codes and description for our fine-tuned ResNet-50 and VGG-19 models.dfl.ipynb
outlines major components and implementation of the DFL architecture.BilinearPooling with FastAI on Stenford Cars.ipynb
contains a simple implementation of Bilinear CNNResNet34.ipynb
contains a straightforward transfer learning approach using ResNet34.
Datasets:
Implemented using PyTorch. This work is done as part of the final project for Deep Vision, ST2019.
This work is also partly inspired by
- Weakly supervised Data Augmentation Network, ArXiV preprint, March 2019.
To train a DFL model:
# clone this repo
git clone https://github.com/Physicist91/dvfp
# first edit the parameters (e.g. GPU number, batch_size) then execute run.sh
# to load our trained model, specify the path to weights in --resume
./run.sh
Stanford Cars is the primary dataset used in this project. CUB_200_2011 is used only for further comparison and testing. The final results are:
The weights can be downloaded from here. The poster for this project can be found below (note that the numbers/results have been updated -- refer to the table above).