Visualizing and Understanding Convolutional Networks
Last updated
Last updated
大型卷积网络模型最近在ImageNet基准测试中表现出了令人印象深刻的分类性能(Krizhevsky等,2012)。但是,他们对于为什么它们如此良好地表现或者如何改进它们并不清楚。 在本文中,我们解决了这两个问题。我们介绍了一种新颖的可视化技术,可以深入了解中间特征层的功能和分类器的操作。 这些可视化用于诊断角色,使我们能够找到比ImageNet分类基准更优于Krizhevskyet的模型架构。 我们还进行消融研究,以发现不同模型层的性能贡献。 我们展示了我们的ImageNet模型能够很好地推广到其他数据集:当softmax分类器被重新训练时,它令人信服地胜过了当前最先进的结果:Caltech-101和Caltech-256数据集。
为了检查convnet,如图1所示,将一个解卷积网络连接到它的每一层,提供一条返回图像像素的连续路径。
在convnet中,最大池化运算是不可逆的,但是我们可以通过在一组switch variables中记录每个池区域内最大值的位置来获得近似逆运算。在deconvnet中,unpooling操作使用这些switch将重建从上面的层放到适当的位置,保持激活的结构。有关该程序的说明,请参见图1 (底部)。
该网络使用了Relu非线性激活函数,它可以纠正特征图,从而确保特征图始终为正。 为了在每一层获得有效的特征重建(也应该是正的),我们通过Relu重建信号。
convnet使用学习的filter来与前一层的特征图卷积。为了反转这个,deconvnet使用相同filter的转置版本,但应用于rectified后的特征图,而不是之前层的输出。 实际上,这意味着垂直和水平翻转每个filter。
从较高层向下投影使用convneton中最大池在向上投影时产生的switch settings。由于这些switch settings特定于给定的输入图像,因此从单次激活获得的重建类似于原始输入图像的一小部分,其结构根据它们对特征激活的贡献而被加权。由于模型是有判别式训练的,因此它们隐含地显示输入图像的哪些部分是有区别的。 请注意,这些预测不是来自模型的样本,因为不涉及生成过程。
我们将显示前9个激活,而不是显示给定特征图的单个最强激活。将每个单独投影到像素空间显示激发特征图的不同结构,从而显示其对输入变形的不变性。
图4可视化了在投射回像素空间的给定特征图内的强激活(跨越所有训练示例)训练期间的进展
图5示出了5个样本图像,在观察来自模型顶层和底层的特征向量相对于不变形特征的变化时,这些样本图像被平移、旋转和缩放不同程度。
使用图像分类方法,一个自然的问题是模型是否真实地识别了图像中对象的位置,或者只是使用周围环境。 图7试图通过用灰色方块系统地遮挡输入图像的不同部分并监视分类器的输出来回答该问题。
深度模型与许多现有的识别方法的不同之处在于,没有明确的机制来建立不同图像中特定对象部分之间的对应关系(例如,面部具有眼睛和鼻子的特定空间配置)。然而,一个有趣的可能性是深度模型可能会隐式计算它们。为了探索这一点,我们采用具有正面姿势的5个随机绘制的狗图像并且系统地屏蔽每个图像中的面部的相同部分(例如,所有左眼,参见图8)。
较低的输出值变化表示由掩蔽操作导致的变化的一致性较高,因此不同图像中相同对象部分之间的对应关系更紧密(即,遮挡左眼以一致的方式改变特征表示)。