This blog is dedicated to the third week of Google Summer of Code (i.e June 24 - July 1). This week was concentrated on cross-testing and analysis of the API with some challenging tests.
The paper proposed a solution for semi-supervised learning which is based on variational autoencoders (VAEs) approach. The current model of VAE is defined as:
The approach leverages the variational lower bound. Maximizing the ELBO is equivalent to minimizing the KL divergence, this is what we need.
We can also take the labels explicitly into account for out training, this is a better approach. The pipeline can be given as follows :
For the classifier part, I will be using my VGG16 fine-tuned model. Code with the architecture :
While the encoders decoders will be 4 convolutional layers and 2 dense layers.
We have 2 classes (nazi-elements and non-nazi-elements), however, there are various sub-classes in them (like nazi-salute, propganda, cross-grenade, etc:), which are very different from each other. So, in my opinion it will be better to classify based on the sub-classes along with the main classes rather than a binary classifier only. This part needs to be discussed.
Also, the VAE parts given in the papers are mainly directed towards MNIST and SVHN datasets which are very simple but our dataset is a bit complex and contains less examples. So, this can cause issues with accuracy and reconstructions.