Stochastic Deconvolution

Introduction

In the deep learning literature there have been many methods to produce images that correspond to certain classes or specific neurons in the CNN[Zeiler]. There are two main methods in the literature. Deconvolution methods rely on an input image and highlight pixels in an image that activate a neuron of interest. Deconvolution requires the presence of an image. There are other methods that try maximize the class scores or activations of neurons with respect to pixel intensities[Simonyan]. However these methods only work for lower level features or more shallow neurons. At higher layers, the neurons represent more abstract concepts such as a dog. Thus an optimal image may have 10 dogs all over the image in different orientations and also have tails and dog ears that are actually not part of a dog. We propose several potential methods that do not rely on an input image that can also create realistic abstract concepts that correspond to certain neurons ”deep” in the CNN.

The key reason abstract concepts such as ”dog” can not be generated using the above method is that that there are multiple features in multiple locations that may fire the ”dog” neuron. In real life however dog images do not occur with dogs all over the sky and big gigantic ears that exist by themselves without an attached body. Since intuitively, shallower neurons correspond to smaller features and the higher level neurons correspond to combinations of shallower features, a natural approach to fix the issue of generating unrealistic images would be to gather statistics of joint distributions of shallower features. We could use these statistics in a variety of ways. We could for example, use the optimization method mentioned in class and then look at the activations that the optimization method generates. If the activations of the shallow features seem to be an outlier of the joint distribution , we can decide that we need to reduce the activations of certain neurons. Once those neurons have been decided, we can back propagate from any one of those unneeded neurons, and instead take gradients steps to decrease the activation rather than increase it. This could be seen as a method combining both Deconv and and the method introduced by Simonyan.

One could also conceptually have joint distributions of layer k and layer k+1 for all k less than the number of layers. Now suppose we want to generate the abstract concept that a neuron N represents. Initially, we could find which activations of neurons in the previous layer are associated with N firing. This most likely follows some distribution. Thus we can sample the activations from the joint distribution where we fix the activation of N. Now we can use this same method over and over again and proceed back into the image where each time we fix in the joint distribution the activations of layer k+1, and sample the marginal for layer k.

As one can see many potential ideas seem plausible with the extra information of statistics generated from many images going through the convnet. We aim to try a few methods, improve our understanding, and then iterate to think of improved methods that might generate better images.

Problem Statement

In our problem we will aim to use a pretrained CNN to generate random images corresponding to abstract concepts. We will use the pretrained VGGNET model with 16 layers from Oxford University. We will pass many images corresponding to a specific class (that we will get from ImageNet) to capture statistics of activations for neurons. We then will use our methods to generate random images corresponding to abstract concepts. We expect to be able to generate more realistic images than images generated by Simonyan and we can test this by simply comparing our generated images to created by Simonyan.

Technical Approach

In this section, we describe our approach to the problem. We start with discussing the tools we used(Section 3.1), our technical approach(Section 3.2) and the preliminary results obtained(Section 3.3).

Tools Used

We explored the usage of several deep learning packages - Caffe, Tensor Flow(Keras) and Theano (Keras). We initially decided to use Caffe given the extensive availability of popular training Deep-learning models on the platform. However, we had difficulty setting up Caffe to work on local and cloud machines. We were finally able to setup the VGG model on Keras[] with Theano(Bastien 2012) as the backend. We have been successful in converting the VGG Net model on Caffe to work with Keras and were successful in validating the model with various random test images.

Approach

Our Approach to the Stochastic Deconvolution problem (described in Sec