在激活最大化和显着性检测程序中查找图像索引

时间:2018-09-15 12:20:28

标签: python tensorflow keras

我正在通过herehere的代码来可视化激活最大化和显着性。在此示例中,给出的MNIST数据很容易低于0、1、2,... 10。但是,如果我们使用诸如医学图像之类的复杂数据图像,则很难按我们自己的方式对图像进行分类。所以下面的代码显示如何知道哪个图像的激活和显着性。

from vis.visualization import visualize_activation
from vis.utils import utils
from keras import activations

from matplotlib import pyplot as plt
%matplotlib inline
plt.rcParams['figure.figsize'] = (18, 6)

# Utility to search for layer index by name. 
# Alternatively we can specify this as -1 since it corresponds to the last layer.
layer_idx = utils.find_layer_idx(model, 'preds')

# Swap softmax with linear
model.layers[layer_idx].activation = activations.linear
model = utils.apply_modifications(model)

# This is the output node we want to maximize.
filter_idx = 0
img = visualize_activation(model, layer_idx, filter_indices=filter_idx)
plt.imshow(img[..., 0])

为突出起见:

    class_idx = 0
    indices = np.where(y_test[:, class_idx] == 1.)[0]

    # pick some random input from here.
    idx = indices[0]

    # Lets sanity check the picked image.
    from matplotlib import pyplot as plt
    %matplotlib inline
    plt.rcParams['figure.figsize'] = (18, 6)

    plt.imshow(x_test[idx][..., 0])


from vis.visualization import visualize_saliency
from vis.utils import utils
from keras import activations

# Utility to search for layer index by name. 
# Alternatively we can specify this as -1 since it corresponds to the last layer.
layer_idx = utils.find_layer_idx(model, 'preds')

# Swap softmax with linear
model.layers[layer_idx].activation = activations.linear
model = utils.apply_modifications(model)

grads = visualize_saliency(model, layer_idx, filter_indices=class_idx, seed_input=x_test[idx])
# Plot with 'jet' colormap to visualize as a heatmap.
plt.imshow(grads, cmap='jet')

0 个答案:

没有答案