【论文笔记】ZFNet论文笔记

ZFNet论文笔记

引言

Contribution

  • 提出了一套通过可视化卷积网络中间层特征图的方法,证明了特征图不是随机,不可解释的模式.
  • 通过可视化进行对模型debug,指导网络设计,并通过实验验证了有效性
  • 证明了迁移学习的有效性

摘要

Large Convolutional Network models have recently demonstrated impressive classification performance on the ImageNet benchmark (Krizhevsky et al., 2012). However there is no clear understanding of why they perform so well, or how they might be improved. In this paper we address both issues. We introduce a novel visualization technique that gives insight into the function of intermediate feature layers and the operation of the classifier. Used in a diagnostic role, these visualizations allow us to find model architectures that outperform Krizhevsky et al. on the ImageNet classification benchmark. We also perform an ablation study to discover the performance contribution from different model layers. We show our ImageNet model generalizes well to other datasets: when the softmax classifier is retrained, it convincingly beats the current state-of-the-art results on Caltech-101 and Caltech-256 datasets.

Method

反卷积可视化

  • 为了了解CNN中间层的特征图激活情况,作者提了一种方法,将给定的特征图通过反卷积网络(deconvolutional network)反向映射回输入空间,获得和输入相同大小的图片

    • CNN:像素->特征
    • 反卷积网络:特征->像素
  • 反卷积网络不需要训练,利用训练好的卷积网络的参数即可

  • 这一部分作者对卷积神经网络的正向传播过程中卷积,激活函数以及池化三个部分分别设计了逆操作

  • 整体架构如图所示,网络的每一层都有对应的反卷积网络(左边)

    • image-20221216002330626
  • 操作流程

    • 每次丢进一张图,然后进行前向卷积运算,每一层都会有相应的特征
    • 选定某一层的特征**,选出这一层特征感兴趣的激活(某一个卷积核对应的特征图)**,并将其余的值为零,将这个特征输入反卷积网络,得到重建后的图像
    • 个人理解为,每一个卷积核会提取出对应的特征图,而不同层的不同的卷积对应提取的语义特征也是不同的,比如某些卷积核对轮胎的响应比较大,有的神经元对人的响应比较大
上池化 unpooling
  • 由于max pooling过程中会丢失信息(比如4个pixel取最大的,其余信息丢掉)会导致其不可逆,作者采用了记录最大值的位置(开关变量,switch variables)
  • 在恢复池化时,通过将池化后的每个pixel的值还原到开关变量对应的位置上去(下图左下)
  • image-20221215225135884
relu激活函数
  • 在网络正向传播的时候,采用relu非线性激活函数将特征图的映射为正的
    • What is ReLU and Sigmoid activation function? - Nomidl
  • 在重建信号的过程中,作者仍然采用了relu
    • 个人感觉严谨一点应该使用relu的反函数,但其实无所谓,因为要重建的信号默认是正的,不会用到负的定义域
转置卷积
  • 网络正向传播过程使用带参数的卷积核对上一层输入的特征图进行卷积得到这一层的输出特征图
  • 为了逆操作,这里采用同一卷积核的转置
原理
  • 首先看一个卷积的例子,其通过滑动窗口在图片上进行滑动
    • img
  • 可以将这个过程展开成两个矩阵相乘 A x = b Ax=b Ax=b
    • img
    • 其实将原图拉直,看原图像素的每个pixel会和卷积核的哪个位置相乘
  • 按理来说,如果要恢复原图 x x x,应该使用 A A A矩阵的逆矩阵, x = A − 1 b x=A^{-1}b x=A1b,但是原文中采用了卷积核的转置,即 A T A^T AT,只恢复了原图的形状.
    • 只用在矩阵为正交矩阵时才满足 A − 1 = A T A^{-1}=A^T A1=AT
    • 这篇文章中作者认为用反卷积(deconvolution)去形容转置卷积是不合理的,反卷积是卷积的逆操作(inverse of convolution)
小结
  • 特征图通过反卷积重建得到的元素图像只会与原图的局部相似,这是因为正向的pooling会丢失一些信息
  • 重建的图是根据输入的图对选出的特征图贡献加权的,如果原图某一部分对应和这个选出的特征图匹配程度越大,这一部分在重建的图像上也就越亮
    • 比如有一个卷积核提取的是轮胎的语义,那么将这个卷积核对应的特征图(其余的特征图都置为0)反向输入到反卷积网络重建的图片中,含有轮胎部分的图片也就越亮

可视化

这篇文章的实验很丰富,作者在ImageNet的验证集上进行了实验

特征可视化

  • 作者对不同层(1,2,3,4,5)的不同卷积核,从数据集找出了使得这些卷积核响应最大的9个图片,并将其对应的特征图重建后的图和原图进行了比较
  • image-20221216012311791
    • 比如这个例子里,对应了第二层的某16个卷积核,红框的九张图是对应某个卷积核响应最大的,右边是其对应的原图patch,左边是重建后的图
  • 通过这个实验说明了高层的特征图能对输入的变换具有不变形
    • 高层特征都提取了相似的语义,即使输入图片不完全相同
  • 特定的卷积核得到的特征图会抽取特定的部分的特征
    • 通过重建的图可以看到除了局部是亮的,其余都是暗的

训练过程过程的特征变换

image-20221216014155652

  • 通过对比不同层的收敛情况可以看到,越低层的只需要几个epoch就能收敛,而高层的收敛的慢(前几个epoch的特征图重建几乎没有东西),需要几十个epoch才能收敛

特征不变形

image-20221216014812210

  • 作者通过对比图像patch的平移(a1),缩放(b1),旋转(c1)对比了
    • 变换前和变换后得到的特征向量(特征图reshape)计算欧式距离
      • 第二列是第一层的,第三列是第七层的
    • (第四列) 预测概率的变化
  • 可以看到,第一层对图像变换后的得到的特征向量距离较大,而第七层在图像发生剧烈变换后改变的距离很小(注意量纲的不一致)

网络架构选择 Architecture Selection

todo

遮挡敏感性 Occlusion Sensitivity

todo

关联性分析 Correspondence Analysis

todo

猜你喜欢

转载自blog.csdn.net/u011459717/article/details/128337667