首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用反卷积(Deconvnet)可视化和理解卷积网络

用反卷积(Deconvnet)可视化和理解卷积网络

作者头像
用户1737318
发布2018-06-05 11:46:50
1.3K0
发布2018-06-05 11:46:50
举报
文章被收录于专栏:人工智能头条人工智能头条

Visualizing and understandingConvolutional Networks

本文是Matthew D.Zeiler 和Rob Fergus于(纽约大学)13年撰写的论文,主要通过Deconvnet(反卷积)来可视化卷积网络,来理解卷积网络,并调整卷积网络;本文通过Deconvnet技术,可视化Alex-net,并指出了Alex-net的一些不足,最后修改网络结构,使得分类结果提升。

摘要:

CNN已经获得很好的结果,但是并没有明确的理解为什么CNN会表现的这么好,或者CNN应该怎样修改来提升效果。同构本文的可视化技术,可以很好地“理解”中间的特征层和最后的分类器层。通过类似诊断(可视化+“消除”研究ablation study)的方式,这种可视化技术帮助我们找到了超越Alex-net的结构,本文还通过在ImageNet上训练,然后在其他数据集上finetuning获得了很好的结果。

一,介绍

多项技术帮助CNN复兴(最早是98年,LeCun提出的):1,大的标定数据集;2,Gpu使得大规模计算成为可能;3,很好的模型泛化技术

本文的可视化方法是一种非参数化的可视化技术。

二,方法

首先通过监督的方式利用SGD来训练网络,要了解卷积,需要解释中间层的特征激活值;我们利用Deconvnet来映射特这激活值返回到初始的像素层。

2.1利用Deconvnet

1正常卷积过程convnet:

如图右侧黑框流程图部分,上一层pooled的特征图,通过本层的filter卷积后,形成本层的卷积特征,然后经过ReLU函数进行非线性变换的到Recitifed特征图,再经过本层的max-pooling操作,完成本层的卷积池化操作;之后传入下一层。本层需要记录在执行max-pooling操作时,每个pooing局域内最大值的位置

2选择激活值:

为了理解某一个给定的pooling特征激活值,先把特征中其他的激活值设置为0;然后利用deconvnet把这个给定的激活值映射到初始像素层。

3反卷积过程deconvnet:

3.1Unpooling

顾名思义就是反pooling过程,由于pooling是不可逆的,所以unpooling只是正常pooling的一种近似;通过记录正常pooling时的位置,把传进来的特征按照记录的方式重新“摆放”,来近似pooling前的卷基层特征。如图中彩色部分

3.2Recitfication

通过ReLU函数变换unpooling特征。

3.3Filtering

利用卷积过程filter的转置(实际上就是水平和数值翻转filter)版本来计算卷积前的特征图;从而形成重构的特征。

从一个单独的激活值获得的重构图片类似原始图片的一个部分。

总是感觉这个过程好熟悉,利用SGD训练卷进网络时,误差的反向传递就是这么计算的,如果是mean-pooling就把残差平均分分配到pooling局域,如果是max-pooling只把残差反馈到记录的max-pooling最max的那个位置。

三,训练细节

本文训练的网络,就是把Alex-net的3,4,5层只连接同一个GPU的特征图的局部连接方式,换成了全连接的形式。

参数设置,除了把bias全部设置为0外(Alex-net为了让ReLU尽可能多的提取特征,把一些bias设置为1),其他都和Alex-net一样。

四,CNN可视化

特征可视化

完成训练后,对于一个特征图,选择最大的9个激活值分别进行可视化;

每层可视化特征特点:

1,每张特征图激活值有聚集性;2,高层具有更好的不变性;3,“夸张”的图像判别部分(估计应该是高层特征可视化后能够还原原图的大部分);4,每层的卷积结构能够学习分层的特征。

训练阶段特征演变:

上图展示了各层特征在训练步骤增加时激活值对应特征变化情况;一个比较有意思的现象是底层的卷积最先收敛,高层的特征需要在充分训练后才能收敛。这个和深度网络的梯度弥散现象正好相反,说明ReLU这中非线性函数能够很好的传递误差梯度。这种底层先收敛,高层后收敛比较符合人的直观。

特征不变性

1,对比2,3列图像,2列中的第1层特征对变换前后的欧氏距离相对3列中第7层中变换前后欧氏距离普遍比较大(纵坐标分别为10和0.8相差很大),说明高层更具有特征不变性。

2,从每行对比中,发现卷积对于平移和缩放的不变形更好,对于旋转的不变性较差。高层对于平移的尺度,缩放的倍数与特征改变量成线性增长;对于旋转变换,随着旋转角度的变化,促增长较大外,规律性并不明显。

3,从列7正确标签概率图可以得出,不同类别正确标签的概率不一样,在平移和缩放变换中,其中鹦鹉和鳄鱼的概率比较低,其他种类类别概率比较高。这是为啥?

4.1结构选择

通过可视化Alex-net网络的第1,2层(图中的b和d),发现了各种问题。

问题1:第一层filter是非常高频和低频的信息,中间频率的filter很少覆盖

问题2:第二层的可视化比较混淆,由于第一层比较大的间隔。

为了解决这个问题:

1,减小第一层的filter的尺寸从11*11到7*7

2,缩小间隔,从4变为2。

这两个改动形成的新结构,获取了更多的信息,而且提升了分类准确率。

4.2 遮盖敏感性

对于图像分类,一个自然的想法就是这个模型是真正鉴别了物体在图像中的位置,还是只是使用了周围的场景。本文通过一个灰色方块,遮盖物体的不同位置,然后监控分类器的输出。最后结果证明模型定位了场景中的物体(图示没太看明白)。

4.3关联性分析

深度模型不同意其他识别方法,它没有明显建立对应关系的机制(脸中有鼻子和眼);但是深度模型可能隐士地建立了对应机制。

为了验证这一点,我们随机选择了5张包含狗正脸的图片;然后遮蔽相同的部分来观察。

观察方法:首先计算图片遮蔽前后特征,两个特征向量做差,通过sign来确定符号;然后通过海明距离来计算5张照片两两之间的一致性,然后求和。

有实验结果可以得出,layer-5的特征一致性中,眼和鼻子的数值较低,说明眼和鼻子比其他部分,有更强的相关性,这也说明深度网络能够隐式地建立对应关系。但是在layer-7中眼,鼻子和随机的数值较为相似,可能是因为高层尝试去区分狗的种类。

五,实验

新的结构

Input(224,224,3)→96F(7,7,3,2)→LRN→max-p(3,3,2)→256F(5,5,96,2)→LRN→max-p(3,3,2)→384F(3,3,256,1)→384F(3,3,384,1)→256F(3,3,384,1)→max-p(3,3,2)→4096fc→4096fc→softmax

对比Alex-net本文的结构改进汇总:

1,layer-1的filter尺寸7*7

2,layer-1的间隔距离 S=2

3,全连接,而不是局部连接

4,初始化偏执bias=0.

本文在只用ILSVRC2012数据集的情况下,单个网络获得了16.5%的识别率;超越Alex-net网络1.7%。

变化Alex-net结构:

首先探讨Alex-net,移除的层数越多,对于结果的损害就越大,说明深度很重要。

调整6,7层隐单元的个数,同时减少一倍,导致结果增加;同时增加一倍,结果没有明显变化。同样的调整,在作者的网络上,错误率有一些增加。

调整中间卷基层特征图的个数,结果有一些增加;但是同时增加卷基层和fc层,最后导致过拟合。

感觉网络结构真是一门艺术,多了不行,少了也不行;后面的论文会详细介绍结构调整的各种方案。

5.2 特征推广

探索在ImageNet数据集上通过监督学习到的特征,推广到其他数据集上。具体方法是保持网络的1到7层不变,改变softmax层最终的类别数。

才caltech101和caltech256上都达到了state-of-the-art的准确率;即使在使用很少的训练集的情况下。说明ImageNet特征提取具有很好的特征提取能力。但是在pascal上却比当前最好成绩差3.2%,这是由于pascal数据集和ImageNet数据集有很大的不通过,pascal数据集上有多个物体。

六,讨论

1,提出了一个新颖的可视化方法,通过可视化证明了卷积网络的一些特征,复合性,特征不变性和网络深度的关系;

2,通过可视化还可以调试网络结构,通过遮蔽实验证明网络学习到一种隐士的相关性,通过削减实验证明深度很重要

3,特征推广

七,一些困惑和理解

本文提出了一种新的卷积特征可视化技术,帮助理解卷积网络的特性,以及根据可视化来调整卷积网络。例如训练过程中,层数越深需要迭代的次数越多才能使学习到的特征收敛;卷积网络对于平移和缩放具有很好的不变形,对于旋转的不变形较差;但是在平移和缩放不变形实验中狗和鳄鱼(红线和绿线)的标签概率曲线都比较低,这个平移和缩放不变性对不同的物体差别有些大,到底为啥,没想明白?

本文单个网络比Alex-net提高了1.7%,感觉并不单单是改变filter大小和间隔这两个因素决定,因为作者的参数设置,连接方式都和Alex-net有改变,感觉都有共享。

这个类似迁移学习的特征生成器的方式比较好,由于小数据不能够训练大网络,但是大网络有很好的性能,所以通过类似的数据集来训练大网络来学习到特征提取器,然后改变分类器,在小数据集上微调。感觉作者的想法来源于上一篇博客中,为了提高ImageNet比赛的识别率,有些队伍现在一个比ImageNet比赛数据集还大的数据上训练,然后在比赛数据集上训练;本文作者在ImageNet比赛数据集上训练,然后在其他小数据集上训练,得到了很好的结果。说明数据集很重要,网络深度很重要;若是有更大的数据集,更好的网络,是不是可以建立一个公共的特征提取器,这个很类似余凯提出的公共特征集的概念。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 人工智能头条 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档