在Inception V3上进行Grad-CAM可视化的倒数第二层是什么?

时间:2018-09-04 08:55:13

标签: machine-learning neural-network keras deep-learning conv-neural-network

我一直在尝试可视化Inception V3的热图。据我了解,倒数第二层应该是最后的卷积层,即conv2d_94(idx 299)。但是,这会产生非常粗糙的地图(大区域)。我尝试使用this notebook中建议的另一层mixed10(idx 310)来解决here中所述的问题,尽管区域较小,但看起来仍然不太好。其他一些人似乎确实使用conv2d_94,例如here

我知道这可能表明我的模型只是没有注意正确的事情,但是从概念上讲,我对应该使用哪一层感到困惑。什么是合适的倒数第二层?

我正在将Keras 2.2.0与visualize_cam中的keras-vis一起使用。

heatmap = visualize_cam(model, layer_idx, filter_indices=classnum, seed_input=preprocess_img, backprop_modifier=None)

layer_idxdense_2的idx。

我尝试不定义penultimate_layer,它根据documentation将参数设置为最接近倒数第二的ConvPooling层。这样得到的结果与penultimate_layer=299相同。

1 个答案:

答案 0 :(得分:6)

无法说出您自己的数据,但是用于Grad-CAM可视化的Inception V3倒数第二层确实是mixed10(idx 310),如您链接到的笔记本中所述:

  

310是在全局平均池化之前的串联

合理性:由于conv2d_94(299)的输出在下游与其他卷积层(或它们的串联)相连,例如mixed9_1concatenate_2等,因此根据定义,它不能是倒数第二个卷积层;另一方面,mixed10不是-相反,它只是最终平均池化之前的一层。根据{{​​3}},建议,倒数第二层应该是卷积层,而不是汇集层,在VGG中,他使用block5_conv3,而不是block5_pool紧随其后(尽管事实是,即使使用block5_pool似乎也能提供非常相似的视觉效果)。

让我详细说明一下,并在上面解释对“建议”的强调...

与当前深度学习研究和实践中的许多其他事情一样,Grad-CAM是一种启发式,而不是“硬性”科学方法。因此,对于如何使用它以及结果可能会有建议和期望,但没有硬性规则(和“适当的”层)。请考虑以下Chollet's exchibition的摘录(第2节的重点):

  

我们期望将最后的卷积层   在高级语义和   详细的空间信息,因此我们使用这些特征图来   计算Grad-CAM和Guided Grad-CAM。

即正如我已经说过的,确实存在一些建议和期望,但是期望会有一定的试验和随心所欲的态度...


现在,假设您在主题上遵循original paper(即使用纯Keras,而不是Keras-vis软件包),这些就是您需要按顺序进行的代码中的更改使其与Inception V3兼容:

# cell 24
from keras import backend as K
from keras.applications.inception_v3 import InceptionV3
K.clear_session()
K.set_learning_phase(0) # needs to be set BEFORE building the model
model = InceptionV3(weights='imagenet')

# in cell 27
from keras.applications.inception_v3 import preprocess_input, decode_predictions
img = image.load_img(img_path, target_size=(299, 299)) # different size than VGG

# in cell 31:
last_conv_layer = model.get_layer('mixed10')
for i in range(2048):  # was 512 for VGG
    conv_layer_output_value[:, :, i] *= pooled_grads_value[i]

原始creative_commons_elephant.jpg图像上产生的叠加热图应如下所示:

Chollet's notebook

可以说,

与Chollet笔记本中的VGG的图像没有什么不同(尽管可以肯定,热图确实散布了很多,而且似乎不符合Chollet关于'专注于耳朵')...