Visualizing filters by finding images that maximize their outputs
This is a utility for visualizing convolution filters in a Keras CNN model. Check this blog post.
By default this uses VGG16. Get the reduced model without the fully connected layers from here: https://github.com/awentzonline/keras-vgg-buddy
You can use the utility to project filters on a random image initial image, or on your own image to produce deep-dream like results.
This is quite compute intensive and can take a few minutes depending on image sizes and number of filters. An intermediate image is written to disk so you can see the progress done so far.
usage: viz.py [-h] [--iterations ITERATIONS] [--img IMG] [--weights_path WEIGHTS_PATH] [--layer LAYER] [--num_filters NUM_FILTERS] [--size SIZE]
optional arguments: -h, --help show this help message and exit --iterations ITERATIONS Number of gradient ascent iterations --img IMG Path to image to project filter on, like in google dream. If not specified, uses a random init --weights_path WEIGHTS_PATH Path to network weights file --layer LAYER Name of layer to use. Uses layer names in model.py --num_filters NUM_FILTERS Number of filters to vizualize, starting from filter number 0. --size SIZE Image width and height