IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【论文笔记】—特征可视化—ZFNet—2014-ECCV -> 正文阅读

[人工智能]【论文笔记】—特征可视化—ZFNet—2014-ECCV

题目:Visualizing and Understanding Convolutional Networks

纽约大学ZFNet,2013年ImageNet图像分类竞赛冠军模型(top5-error 11.7%)。

对AlexNet进行改进的基础上,提出了一系列可视化卷积神经网络中间层特征的方法,并巧妙设置了对照消融实验,从各个角度分析卷积神经网络各层提取的特征及对变换的敏感性。

DOI10.1007/978-3-319-10590-1_53

时间:2013-11-12上传于arxiv
会议:2014-ECCV
机构:美国-纽约大学

论文链接:https://arxiv.org/abs/1311.2901

关键词:特征可视化;

提出问题:

  1. 大型卷积网络网络究竟为什么能表现的这么好?
  2. 以及怎样能变得更好?

解决方案:

ZFNet可视化卷积神经网络各层各卷积核提取的特征,对深度学习模型赋予可解释性。

创新点:

  1. 通过反卷积可视化,
  2. 验证了神经网络对遮挡的敏感性和相关性分析。

通过反卷积可视化:

可视化可以理解卷积网络的操作需要解释中间层的特征活动。ZFNet提出了一种新颖的方法来将这些活动映射回输入像素空间,显示最初在特征映射中引起给定激活的输入模式。ZFNet使用反卷积网络(deconvnet)实现此映射。反卷积网络可以被认为是一个使用相同组件(过滤,池化)的逆向的卷积模型,即不是将像素映射到特征,而是将特征映射到像素。,它们不会用于任何学习能力,仅作为对已经训练好的卷积网络的探索。

反池化:

池化的逆运算,但可以用一组转换变量switch在每个池化区域中通过记录最大值的位置来获得一个近似逆。在反卷积网中,反池化操作使用这些转换来放置上述最大值的位置,保存激活的位置,其余位置都置0。

反卷积:

反卷积就是将卷积操作中的卷积核矩阵进行了转置,也称转置卷积。

1、卷积:输入通过卷积核的透视

3x1+5x2+2x1+4x2+1x1+3x2+6x1+3x1+8x2=55

2、反卷积:输出通过卷积核的透视

比如左上角的图,将输出的55按照绿色的线的逆方向投影回去,可以得到[[55,110,55],[110,55,110],[55,55,110]]的结果;

3、我们将得到的四张特征图进行叠加(重合的地方其值相加),可以得到下图:

最终我们得到的特征图与卷积输入的特征图值的大小并不相同,说明卷积和反卷积并不是完全对等的可逆操作(因为采用相同的卷积核,卷积和反卷积得到的输入输出不同),也就是反卷积只能恢复尺寸,不能恢复数值。

可视化的步骤:

  1. 找到能使layer3卷积核激活最大的原始输入图片;
  2. 把找到的原始输入图片喂到网络中;
  3. 把layer3卷积核生成的feature map用反卷积的技巧重构回原始输入像素空间,即得到layer3。

可视化结果:

图2显示了培训完成后模型的特征可视化。 可以发现通过CNN学习后,学习到的是具有辨别性的特征,比如要我们区分人脸和狗,那么通过CNN学习后,背景部位的激活度基本很少,我们通过可视化就可以看到我们提取到的特征忽视了背景,而是把关键的信息给提取出来了。Layer 1、Layer 2学习到的特征基本上是颜色、边缘等低层特征;Layer 3学习到的是纹理特征,比如上面的一些网格纹理;Layer 4学习到的则是比较有区别性的特征,比如狗;Layer 5学习到的则是具有辨别性关键特征。

ZFNet网络模型:

ZFNet网络结构和AlexNet保持一致,但是卷积核的大小和步长发生了变化。

主要改进:

  1. 将第一个卷积层的卷积核大小改为了7×7。
  2. 将第二、第三个卷积层的卷积步长都设置为2。
  3. 增加了第三、第四个卷积层的卷积核个数。
  4. ZFNet再一张GPU上训练,AlexNet再两张GPU上训练。

ZFNet预处理:

网络对输入图片进行预处理,裁剪图片中间的256x256区域,并减去整个图像每个像素的均值,然后用10个不同的对256x256图像进行224x224的裁剪(中间区域加上四个角落,以及他们的水平翻转图像),对以128个图片分的块进行随机梯度下降法来更新参数。起始学习率为10?2,动量为0.9,当验证集误差停滞时,手动调整学习率。在全连接网络中使用概率为0.5的dropout,并且所有权值都初始化为10?2,偏置设为0。

两个网络的结构对比:

实验结果:

4-通过训练随机选择的模型特征子集的进化。

训练时的特征演变过程:外表突然的变化导致图像中的一个变换即产生了最强烈的激活。模型的底层在少数几个epoches就能收敛聚集,然而上层在一个相当多的epoches(40-50)之后才能有所变化,这显示了让模型完全训练到完全收敛的必要性。可以由下图看到颜色对比度都逐步增强。

结论:低层特征收敛很快,高层特征收敛很慢。

5-特征不变性:

一般来说,小的变化对于模型的第一层都有非常大的影响,但对于最高层的影响却几乎没有。对于图像的平移、尺度、旋转的变化来说,网络的输出对于平移和尺度变化都是稳定的,但却不具有旋转不变性,除非目标图像时旋转对称的。下图为分别对平移,尺度,旋转做的分析图。

6-分类性能提升了,下图为AlexNetZFNet网络结构可视化特征图。

图(a)为没有经过裁剪的图片经过第一个卷积层后的特征可视化图,注意到有一个特征全白,(b)为AlexNet中第一个卷积层特征可视化图,(c)为ZFNet中第一个卷积层可视化图,可以看到相比前面有更多的独特的特征以及更少的无意义的特征,如第3列的第3到6行,(d)为AlexNet中第二个卷积层特征可视化图,(e)为ZFNet中的第二个卷积层特征可视化图,可以看到(e)中的特征更加干净,清晰,保留了更多的第一层和第二层中的信息。

可能看到现在,我们一直存在一个疑问,那就是,整个模型它自己清楚目标在图像中的具体位置吗?

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

7-遮挡的敏感性分析:

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

第一列(a)为原始测试图片,第二列(b)为某个区域被灰色小方块掩盖后的网络结构中第五层的特征图,第三列(c)为将第五层的特征图投影到输入图像的可视化图像,第一行表明最强烈的特征表现在狗狗的面部区域,(d)为正确分类概率的图,(e)为最有可能的标签。

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

为了更进一步探究在深度模型中如何对同一类物体的不同图像进行一致性分析。

对五张小狗(同一类)的不同图片的不同区域进行掩盖,然后进行分析观察探究深度模型是对一类物体的那部分进行一致性分析的过程。

?8-1-遮挡的相关性分析:

?表1对第5层和第7层的特征图中为2,3,4列以及其他随机遮挡情况进行分析的Delta的得分情况,得分越低代表有更好的一致性。

在第5层随机遮挡的情况比其他眼睛鼻子被遮挡的情况一致性分析较差,而第7层中,这四类却都差不多,那是因为底层判别的是一类物体共有的部分,而高层判别的是类别中不同的品种这种更高维的部分了。

3-消融实验

通过移除不同层,或者调整每层特征图个数,来观察对识别准确率产生的影响。

可以发现只移除最后两层全连接层或者只移除最后的两层卷积层,并不会对结果产生特别大的影响,但是同时移除掉,就会使误差产生巨大的上升,可见总体的深度对于获得好的效果是重要的。还发现,增加中间卷积层的大小确实可以降低错误,但是导致的扩大的全连接层会导致过拟合。

9-5-迁移学习

ZFNet(保留ImageNet训练权重)在Caltech-256数据集上只用少量数据就可以达到好的效果。

7-网络中不同层提取的特征对分类的有效性

网络越深越好,模型越深越具有分类的有效性。

ZFNet的结构与AlexNet一致,为什么能够下降五个点?这让我们对神经网络里面的每一个神经元或者卷积在做什么有了更深入的理解。

ZFNet将第一个卷积层大小改成7×7了,原来是11×11,第一个卷积层大大小改小了以后,最大作用就是能感受更细致的东西,我们知道11×11是大尺度的模板,它检测的一般都是比较粗旷粒度的系列的特征,比较细节的特征一般不太看,所以这个时候呢第一层卷积用大模板去套的时候就丢掉了很多细节信息。所以ZFNet将第一个卷积层大小改成7×7为后面层的更好的特征学习奠定了基础。

ZFNet增加了第三层和第四层卷积核个数。通过反卷积可视化以后发现,第三层、第四层的卷积核已经有一些语义概念的这种结构元素了,就是他那个描述的元素,就像前面几幅图刚才看到前面那个他们有一定的结构,有意义、有语义信息了。如果这个时候我的卷积核的个数太少了,能记住的语义结构就很少,就是能学习到的语义结构就很少,如果这一层有512个卷积核的话,就能描述512种模式结构。如果这一层只有384个卷积核,那我能描述的结构只有384个,这么多物体只记得384个模板不太够用。所以ZFNet扩张了这一层的卷积核的个数,当然这不是拍脑袋想的,是他发现了这一层第三层和第四层已经开始不再是基元,结果我们认为世界的基元总是很少的,它的组合能组合出任意复杂的东西,所以基元不需要那么多东西,但是到了高层概念以后,他已经有基元组合的概念。已经有很多了,组合起来东西有很多种,结果你仅靠384个是记不住的。

总体上来说,ZFNet反卷积操作实现对中间层的可视化,ZFNet针对可视化结果对网络结构进行改进。

参考资料:

SVM反卷积转置卷积

参考博客:参考博客1参考博客2参考博客3参考博客4

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:23:46  更:2022-07-17 16:25:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:49:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码