Visualizing and Understanding Convolutional Networks
可视化并理解卷积网络;
ZFNet(作者:Zeiler和Fergus)是2013ImageNet分类任务的冠军,其网络结构没什么改进,只是在AlexNet的基础上调参,性能提升;
ZF-Net只是将AlexNet第一层卷积核由11变成7,步长由4变为2,第3,4,5卷积层转变为384,384,256;
本文主要贡献在于可视化方面的工作,人们第一次开始理解网络,打开黑盒子;
发表时间:[Submitted on 12 Nov 2013 (v1), last revised 28 Nov 2013 (this version, v3)];
发表期刊/会议:European Conference on Computer Vision;
论文地址:https://arxiv.org/abs/1311.2901;
0 摘要
大型卷积网络模型最近在ImageNet基准测试中展示了令人印象深刻的分类性能(Krizhevsky et al, 2012,就是AlexNet)。然而,人们还不清楚为什么它们表现得这么好,或者如何才能提高它们。在本文中,将解决这两个问题。
本文介绍了一种新的可视化技术,可以深入了解中间特征层的功能和分类器的操作。
1 简介
自LeNet(LeCun et al, 1989)引入卷积网络以来,卷积网络在手写数字分类和人脸检测等任务中表现出出色的性能;后AlexNet又刷新了记录;
几个因素导致了对卷积网络的兴趣(深度学习的三驾马车):
- (i)更大的训练集的可用性,有数百万个标记的示例;
- (ii)强大的GPU实现,使得非常大的模型的训练变得实用;
- (iii)更好的模型正则化策略,如Dropout,防止过拟合;
但对于这些复杂模型的内部操作和行为,以及它们如何实现如此良好的性能,人们仍然知之甚少。本文介绍了一种可视化技术,该技术揭示了在模型的任何层激发单个特征图的输入刺激。
1.1 相关工作
(Erhan et al, 2009)通过在图像空间中进行梯度下降来寻找每个单元的最佳刺激,使单元的激活最大化;
(Le et al, 2010)(扩展了(Berkes & Wiskott, 2006)的想法)展示了给定单元的海森矩阵如何围绕最佳响应进行数值计算,并对不变性提供了一些见解;
(Donahue et al, 2013)展示了识别数据集中负责模型中较高层强激活的patch的可视化;
2 方法
本文使用标准的全监督卷积模型,如LeNet、AlexNet;
这些模型通过一系列层将彩色2D输入图像 x i x_i xi映射到C个不同类别上的概率向量 y i y_i yi;
图3显示了本文在许多实验中使用的模型(在AlexNet上略微改动):
ZFNet(
(features): Sequential(
(0): Conv2d(3, 48, kernel_size=(7, 7), stride=(2, 2), padding=(1, 1))
(1): ReLU(inplace=True)
(2): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)
(3): Conv2d(48, 128, kernel_size=(5, 5), stride=(2, 2))
(4): ReLU(inplace=True)
(5): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)
(6): Conv2d(128, 192, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(7): ReLU(inplace=True)
(8): Conv2d(192, 192, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(9): ReLU(inplace=True)
(10): Conv2d(192, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(11): ReLU(inplace=True)
(12): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)
)
(classifier): Sequential(
(0): Dropout(p=0.5, inplace=False)
(1): Linear(in_features=4608, out_features=2048, bias=True)
(2): ReLU(inplace=True)
(3): Dropout(p=0.5, inplace=False)
(4): Linear(in_features=2048, out_features=2048, bias=True)
(5): ReLU(inplace=True)
(6): Linear(in_features=2048, out_features=1000, bias=True)
)
)
2.1 Visualization with a Deconvnet 用反卷积可视化
本文使用反卷积网络(deconvnet)执行映射(Zeiler et al, 2011)。deconvnet可以被认为是使用相同组件(过滤,池化)但相反的convnet模型,所以不是将像素映射到特征,而是相反;
反卷积 = 正向卷积的反向操作,由特征到像素图像;
图1(top)显示了反卷积的过程:
首先,将图像输入进卷积网络,并在整个层中计算特征(图右),计算出每层的feature map。为了检查给定的convnet激活(也就是feature map),将该层中的所有其他激活设置为零,然后将特征映射(feature map)作为输入传递给附加的反卷积层。依次计算:
- (i) unpool(反池化);
- (ii) rectify(反激活);
- (iii) filter to reconstruct(反卷积);
重复这个过程,直到到达输入像素空间为止。
Unpooling 反池化
在卷积网络中,最大池化操作是不可逆的,然而,可以通过记录一组switch变量中每个池化区域内最大值的位置来获得近似的逆;
在反卷积中,反池化操作使用这些switch将来自上面一层的重建放置到适当的位置(下图灰色格子),保留刺激的结构。如图1(下)所示:
Rectification 反激活
卷积网络使用ReLU来校正feature maps,从而确保feature maps总是正的。为了在每一层获得有效的特征重建(也应该是正的),我们将重建的信号通过一个ReLU(保证是正的);
Filtering 反卷积
卷积网络使用学习滤波器来卷积前一层的特征映射。为了扭转这种情况,反卷积使用相同过滤器的转置(就是矩阵转置),但应用于校正后的映射,而不是下面一层的输出。
从更高的层向下投影使用卷积网络中最大池化生成的switch设置。由于这些switch设置是特定于给定输入图像的,因此从单个激活获得的重建类似于原始输入图像的一小部分,结构根据其对特征激活的贡献进行加权(就是反池化会丢失信息,但可以保留主要结构)。
3 Training Details
与AlexNet一致,但不把模型分布在两个GPU上;
数据集:
- 该模型在ImageNet 2012训练集(130万张图像,分布在1000个不同的类别中)上进行训练;
- 每个RGB图像都经过预处理,将最小维度调整为256(resize);
- 减去每像素的平均值(所有图像,就是0归一化);
- 然后使用10个不同的224x224大小的子作物(角+中心与(外)水平翻转)(就是数据增量 随机裁剪);
- SGD优化器;
- mini-batch:128;
- init learning rate:10−2;
- 动量momentum为0.9;
- 当验证错误达到平稳期时,减小学习率;
- dropout用于全连接层(6和7),概率为0.5;
- 所有权重初始化为10−2,偏差设置为0;
在训练过程中,对第一层的过滤器进行可视化显示,其中一些过大,如图6(a)所示;
为了解决这个问题,将卷积层中RMS值超过10−1的每个过滤器重新调整到一个固定的值。这是至关重要的,特别是在模型的第一层,其中输入图像大致在[-128,128]范围内,卷积核过大会对输入造成影响。和AlexNet一样,用裁剪和翻转来扩增数据集;
4 Convnet Visualization
使用第3节中描述的模型,现在使用deconvnet来可视化ImageNet验证集上的特征激活。
Feature Visualization
图2显示了训练完成后我们的模型的特征可视化。
第一层卷积核提取的大多是边缘、颜色等基础特征;
第二层卷积核可以学到一些形状的特征;
Layer4、Layer5图略;
底层网络:基础特征如边缘、颜色等;
中层网络:状态特征等;
高层网络:物体,高级特征;
层次越深越能提取到不变高级语义的特征(不同类的图像,相同的特征);
Feature Evolution during Training
图4可视化了在投影回像素空间的给定特征图中最强激活(在所有训练示例中)的训练过程;
从图中可以看出,底层的网络收敛比较快,越到高层收敛越慢;
Layer2在小epoch(1,2,5)就能收敛,Layer5在epoch=40后才能收敛;
Feature Invariance
图5显示了5张不同程度平移、旋转和缩放的样本图像,同时观察模型顶层和底层的特征向量相对于未转换的特征的变化;
在网络底层,小的变换(平移、旋转、缩放)会造成很大的影响,如图5第2列;
在网络顶层,小的变换造成的影响较小,如图5第3列;
网络对于平移、缩放不太敏感(第一行和第二行),对于旋转是敏感的(第三行);
4.1 Architecture Selection模型优化
以上的可视化结果可以提供对网络操作的观察,还可以帮助选择更好的网络架构;
通过将AlexNet的第一层和第二层可视化(图6(b)和(d)),可以显现出AlexNet的一些问题。
第一层滤波器是高频和低频信息的混合,很少覆盖中频(图6b,灰色的卷积核没有提取到有效特征);
第二层可视化显示了由第一层卷积中使用的大步幅4引起的混叠伪影(图6d,一些滤波器提取到了没有用的网格特征);
为了解决这些问题:
- (i)将第一层滤波器的大小从11x11减小到7x7;
- (ii)使卷积的步幅为2,而不是4;
这种新的架构在第1层和第2层特征中保留了更多的信息,如图6©和(e)所示。更重要的是,它还提高了分类性能,如章节5.1所示。
4.2 Occlusion Sensitivity局部遮挡敏感性分析
图像分类,一个自然的问题是,模型是否真正识别了图像中物体的位置,还是仅仅使用了周围的上下文。图7试图用一个灰色方块系统地遮挡输入图像的不同部分,并监测分类器的输出,来回答这个问题。
比如第一行图b:如果灰色区域挡住了狗脸,特征图的值会迅速降低(蓝色区域),如果遮挡其他区域,特征图的值不会降低反而会升高(红色区域);
第一行图c:黑框圈的是图像输入网络,第五层最大激活值,其他三个图像是能该该过滤器最大的三张图象;
4.3 Correspondence Analysis图像局部相关性分析
深度模型没有明确的机制来建立不同图像中特定物体部分之间的对应关系(例如,面部具有眼睛和鼻子的特定空间配置),但是,深度模型可能会隐式地计算它们;为了探索这一点,随机抽取了5张正面姿势的狗图像,并系统地遮住每张图像中面部的同一部分(例如全部左眼,见图8)。
遮挡测试结果见表1;
前三行,不管是第5层还是第7层,Δ都是比较小的,随机遮挡的Δ是非常大的,说明深度学习隐式的定义了图像局部相关性;
5 Experiments
5.1 ImageNet 2012
5.2 Feature Generalization特征泛化
在ImageNet上学到的特征泛化到其他数据集;
Caltech-101
Caltech-256
PASCAL 2012
5.3 Feature Analysis
验证网络不同层的有效性;