【CNN模型笔记(三)】ZFNet模型

一.简介

ILSVRC2013分类任务的冠军,使用反卷积对CNN的中间特征图进行可视化分析,通过分析特征行为找到提升模型的办法,微调Alexnet提升了表现。

该论文最大的贡献在于通过使用可视化技术揭示了神经网络各层到底在干什么,起到了什么作用。

从科学的观点出发,如果不知道神经网络为什么取得了如此好的效果,那么只能靠不停的实验来寻找更好的模型。

使用一个多层的反卷积网络来可视化训练过程中特征的演化及发现潜在的问题;同时根据遮挡图像局部对分类结果的影响来探讨对分类任务而言到底那部分输入信息更重要。

ZFNet的Z和F指的是Zeiler和Fergus,曾是hinton的学生,后在纽约大学读博的Zeiler,联手纽约大学研究神经网络的Fergus提出了ZFNet。

二.网络结构

【CNN模型笔记(三)】ZFNet模型_第1张图片

 非池化:池化操作是非可逆的,但是我们可以用一组转换变量switch在每个池化区域中通过记录最大值的位置来获得一个近似逆。在解卷积网中,非池化操作使用这些转换来放置上述最大值的位置,保存激活的位置,其余位置都置0。
纠正:卷积网中使用非线性的ReLU来修改特征图来确保特征图总是正值。为了获得在每层的有效(也应该是正值)的特征重建,也在解卷积网中利用了ReLU。
滤波:解卷积网中利用卷积网中的相同的滤波器的转置应用到纠正过的特征图中,而不是上层的输出。也就是对滤波器进行水平方向和垂直方向的翻转。从高层向下投影使用转换变量switch,这个转化变量switch产生自向上的卷积网的最大池化操作。由于重建由一个单独的激活获得,因此也就只对应于原始输入图像的一小块。

【CNN模型笔记(三)】ZFNet模型_第2张图片

上图左半部分是一个解卷积层,右半部分为一个卷积层。解卷积层将会重建一个来自下一层的卷积特征近似版本。图中使用switc来记录在卷积网中进行最大池化操作时每个池化区域的局部最大值的位置,经过非池化操作之后,原来的非最大值的位置都置为0。

预处理:网络对输入图片进行预处理,裁剪图片中间的256x256区域,并减去整个图像每个像素的均值,然后用10个不同的对256x256图像进行224x224的裁剪(中间区域加上四个角落,以及他们的水平翻转图像),对以128个图片分的块进行随机梯度下降法来更新参数。起始学习率为10−2,动量为0.9,当验证集误差停滞时,手动调整学习率。在全连接网络中使用概率为0.5的dropout,并且所有权值都初始化为10−2,偏置设为0。
  在训练时第一层的可视化揭露了一些占主导的因素,为了了解这些,我们采用重新归一化每个卷积层的滤波器,这些滤波器的均方根值超过了一个固定半径的10−1。这是非常关键的,尤其是在模型中的第一层,因为输出图片大约在[-128,128]的范围内。
特征可视化:每个特征单独投影到像素空间揭露了不同的结构能刺激不同的一个给定的特征图,因此展示了它对于变形的输入内在的不变性。下图即在一个已经训练好的网络中可视化后的图。

【CNN模型笔记(三)】ZFNet模型_第3张图片

上图

(a)为没有经过裁剪的图片经过第一个卷积层后的特征可视化图,注意到有一个特征全白,

(b)为AlexNet中第一个卷积层特征可视化图,

(c)为ZFNet中第一个卷积层可视化图,可以看到相比前面有更多的独特的特征以及更少的无意义的特征,如第3列的第3到6行,

(d)为AlexNet中第二个卷积层特征可视化图,

(e)为ZFNet中的第二个卷积层特征可视化图,可以看到 中的特征更加干净,清晰,保留了更多的第一层和第二层中的信息

整个模型它自己清楚目标在图像中的具体位置吗?

可以用实验来证明一下,即用一个灰色小方块来挡住图像中的目标,然后再观测输出的分类情况来分析,如下图

【CNN模型笔记(三)】ZFNet模型_第4张图片

图为对三个不同的测试图片中的不同位置用灰色小方块进行掩盖后,观测分类输出的改变情况。

第一列(a)为原始测试图片, 第二列(b)为某个区域被灰色小方块掩盖后的网络结构中第五层的特征图,

第三列(c)为将第五层的特征图投影到输入图像的可视化图像, 第一行表明最强烈的特征表现在狗狗的面部区域,          

(d)为正确分类概率的图,          

(e)为最有可能的标签。 上述结果表明,如果图像中的目标被遮挡,那么被正确分类的概率会显著降低,这表明这种可视化与激发特征图的图像结构式真正对应上的,即大概能知道位置。

 

 遮挡实验:遮挡实验说明图像的关键区域被遮挡之后对分类性能有很大的影响,说明分类过程中模型明确定位出了场景中的物体。        为了更进一步探究在深度模型中如何对同一类物体的不同图像进行一致性分析。 对五张小狗(同一类)的不同图片的不同区域进行掩盖,然后进行分析观察探究深度模型是对一类物体的那部分进行一致性分析的过程。如下图【CNN模型笔记(三)】ZFNet模型_第5张图片

三.可视化部分总结

特征可视化:通过对各层卷积核学习到的特征进行可视化发现神经网络学习到的特征存在层级结构。第二层是学习到边缘和角点检测器,第三层学习到了一些纹理特征,第四层学习到了对于指定类别图像的一些不变性的特征,例如狗脸、鸟腿,第五层得到了目标更显著的特征并且获取了位置变化信息。

训练过程中的特征演化:低层特征经过较少epoch的训练过程之后就学习的比较稳定了,层数越高越需要更多的epoch进行训练。因此需要足够多的epoch过程来保证顺利的模型收敛。

特征不变性:卷积神经网络具有平移和缩放不变性,并且层数越高不变性越强。但是不具有旋转不变性。

特征结构选择:作者通过可视化AlexNet第一层和第二层的特征,发现比较大的stride和卷积核提取的特征不理想,所以作者将第一层的卷积核从11*11减小到7*7,将stride从4减小到2,实验说明,这样有助于分类性能的提升。

遮挡实验:遮挡实验说明图像的关键区域被遮挡之后对分类性能有很大的影响,说明分类过程中模型明确定位出了场景中的物体。

一致性分析:不同图像的指定目标局部块之间是否存在一致性的关联,作者认为深度模型可能默认学习到了这种关联关系。作者通过对五张不同的狗的图像进行局部遮挡,然后分析原图和遮挡后的图像的特征之间的汉明距离的和值,值越小说明一致性越大。实验表明,对不同的狗的图像遮挡左眼、右眼和鼻子之后的汉明距离小于随机遮挡,证明存在一定的关联性。

四.总结

AlexNet的改进,改动不大,主要是引入了可视化,使用了解卷积和反池化(无法实现,只能近似)的近似对每一层进行可视化,并采用一个GPU进行训练


【参考】

详解深度学习之经典网络架构(三):ZFNet

https://blog.csdn.net/chenyuping333/article/details/82178769

ZFNet论文学习

https://blog.csdn.net/cdknight_happy/article/details/78855172

论文笔记:CNN经典结构1(AlexNet,ZFNet,OverFeat,VGG,GoogleNet,ResNet)

https://www.cnblogs.com/liaohuiqiang/p/9606901.html

https://www.cnblogs.com/liaohuiqiang/p/9356753.html

 

你可能感兴趣的:(深度学习)