A blog post describing the library: https://medium.com/@falaktheoptimist/want-to-look-inside-your-cnn-we-have-just-the-right-tool-for-you-ad1e25b30d90
tf_cnnvis is a CNN visualization library which you can use to better understand your own CNNs. We use the TensorFlow library at the backend and the generated images are displayed in TensorBoard. We have implemented 2 CNN visualization techniques so far:
1) Based on the paper Visualizing and Understanding Convolutional Networks by Matthew D. Zeiler and Rob Fergus. The goal here is to reconstruct the input image from the information contained in any given layers of the convolutional neural network. Here are a few examples
Figure 1: Original image and the reconstructed versions from maxpool layer 1,2 and 3 of Alexnet generated using tf_cnnvis.
2) CNN visualization based on Deep dream by Google. Here's the relevant blog post explaining the technique. In essence, it attempts to construct an input image that maximizes the activation for a given output. We present some samples below:
Carbonara | Ibex | Elephant | Ostrich |
Cheese burger | Tennis ball | Fountain pen | Clock tower |
Cauliflower | Baby Milk bottle | Sea lion | Dolphin |
If you are using pip you can install these with
pip install tensorflow numpy scipy h5py wget Pillow six scikit-image
Clone the repository
#!bash
git clone https://github.com/InFoCusp/tf_cnnvis.git
And run
#!bash
sudo pip install setuptools
sudo pip install six
sudo python setup.py install
sudo python setup.py clean
If you use this library in your work, please cite
@misc{tf_cnnvis,
author = {Bhagyesh Vikani, Falak Shah},
title = {CNN Visualization},
year = {2017},
howpublished = {\url{https://github.com/InFoCusp/tf_cnnvis/}},
doi = {10.5281/zenodo.2594491}
}
tf_cnnvis.activation_visualization(graph_or_path, value_feed_dict, input_tensor=None, layers='r', path_logdir='./Log', path_outdir='./Output')
The function to generate the activation visualizations of the input image at the given layer.
graph_or_path (tf.Graph object or String) – TF graph or [Path-to-saved-graph] as String containing the CNN.
value_feed_dict (dict) – Values of placeholders to feed while evaluating the graph
input_tensor (tf.tensor object (Default = None)) – tf.tensor (input tensor to the model - where images enter into the models) Note: This is not a standalone tensor/placeholder separate from the model
layers (list or String (Default = 'r')) –
path_outdir (String (Default = "./Output")) – [path-to-dir] to save results into disk as images
path_logdir (String (Default = "./Log")) – [path-to-log-dir] to make log file for TensorBoard visualization
tf_cnnvis.deconv_visualization(graph_or_path, value_feed_dict, input_tensor=None, layers='r', path_logdir='./Log', path_outdir='./Output')
The function to generate the visualizations of the input image reconstructed from the feature maps of a given layer.
graph_or_path (tf.Graph object or String) – TF graph or [Path-to-saved-graph] as String containing the CNN.
value_feed_dict (dict) – Values of placeholders to feed while evaluating the graph
input_tensor (tf.tensor object (Default = None)) – tf.tensor (input tensor to the model - where images enter into the models) Note: This is not a standalone tensor/placeholder separate from the model
layers (list or String (Default = 'r')) –
path_outdir (String (Default = "./Output")) – [path-to-dir] to save results into disk as images
path_logdir (String (Default = "./Log")) – [path-to-log-dir] to make log file for TensorBoard visualization
tf_cnnvis.deepdream_visualization(graph_or_path, value_feed_dict, layer, classes, input_tensor=None, path_logdir='./Log', path_outdir='./Output')
The function to generate the visualizations of the input image reconstructed from the feature maps of a given layer.
graph_or_path (tf.Graph object or String) – TF graph or [Path-to-saved-graph] as String containing the CNN.
value_feed_dict (dict) – Values of placeholders to feed while evaluating the graph
layer (String) - name of a layer in TF graph
classes (List) - list featuremap index for the class classification layer
input_tensor (tf.tensor object (Default = None)) – tf.tensor (input tensor to the model - where images enter into the models) Note: This is not a standalone tensor/placeholder separate from the model
path_outdir (String (Default = "./Output")) – [path-to-dir] to save results into disk as images
path_logdir (String (Default = "./Log")) – [path-to-log-dir] to make log file for TensorBoard visualization
To start Tensorflow, run the following command on the console
#!bash
tensorboard --logdir=./Log
and on the TensorBoard homepage look under the Images tab
Performs Min-Max image normalization. Transforms the pixel intensity values to range [0, ubound]
Convert 4-D numpy array into a grid of images for display