论文笔记 Visualizing and Understanding Convolutional Networks

  之前,我知道可以可视化CNN,也只是知道有这么一回事情。至于它是“怎么做的、其原理是什么、给我们的指导意义是什么”,也不清楚。说白了,就是我知道有“CNN可视化”,仅仅停留在“知道”层面!但当自己需要运用、理解其他CNN可视化技术时,才晓得将这篇paper精读一下。

Background

1)在很多分类任务中(如手写字符识别、人脸识别,以及极具挑战性的Imagenet Classification),CNN取得了极好的性能。但是,CNN是怎么做到的呢?她内部的工作工作机理是什么?又该如何进一步提升其性能呢?引用论文中的一句话就是“Without clear understanding of how and why they work, the development of better models is reduced to trial-and-error”。

2)在一副图像当中,它的不同部分对于分类准确率的影响相同吗?

3)CNN的不同层,它们的泛化能力相同吗?

作者在这篇论文中提出了一种可视化的技术用以分析CNN的“Why and how they work”,并通过该技术回答了问题2),也对问题3)做了明确的回答!这个可视化技术的要点可以简单理解如下:

假设 B=f(A),可以将A理解为输入图像、B理解为feature map、f理解为CNN(为简单起见,这里认为A、B都是二维的矩阵,即输入是灰度图像、输出是只有一个channel的feature map,请注意这只是为了陈述问题方便)。一般情况是,给定输入A,我们得到feature map B。现在我们想了解一下对于B中一个元素Bij,A中的各个元素对其的“贡献”。我们可以直接令除Bij之外的所有B中元素为0,然后将Bij逆影射到输入空间,得到A‘(如果这样不好理解的话,可以认为是由Bij重构出A‘)。这个A‘就反映了A中各个像素对Bij的“贡献”,或者换句话说,Bij是被A中 “A‘ pattern”激活的。

Main Points

1)首先图示一下作者提出的可视化技术

Fig 1左侧是作者提出的可视化网络,用来将feature maps上的某个activation影射到输入空间,对应背景介绍中A‘。右侧对传统的CNN一个小小改进,也就是在做max pooling时进行用“Switches”记录一下最大值的位置。我们重点分析左侧的网络结构:

  • 如何对pool进行“逆操作”,也就是上图中的Unpooling。其实做法很简单,在我们进行max pooling的时候,我们通过“Switches”记录下是哪个位置取得了最大值,在unpooling的时候,按照这个“Switches”将pooling后的结果放回原来的位置(剩余的直接填充0就好了)。Fig 1 Bottom很好的示意了上述过程。
  • 如果我们得到了卷积核的权重,我们是可以进行反卷积的。这个卷积核的权重,我们可以直接从右侧的传统CNN得到。因此,可视化的网络是不需要训练的。
  • 上图左侧之所以加上Relu,论文中是这样解释的“To obtain valid feature reconstructions at each layer (which also should be positive), we pass the reconstructed signal through a relu non-linearity”

在CNN中,每一层的feature maps有很多个channel,下面我们做的就是从中选择一个feature map,从该feature map选择一个activation,然后令除了该activation之外的所有feature map activations为0,之后,用上述选择重构出A‘。由于每一个activation在输入图像中的receptive field有限、确定,因此作者也将该activation对应的image patch裁了出来,组成了下图(作者是这样选择activation的,For a given feature map, we show the top 9 activations)

由该图可以得出结论

2)有了上述可视化的分析工具,我们可以实时追踪在训练过程中feature 的 evolution。这一部分请大家参考原始论文,我就不赘述了。

3)有了上述可视化的分析工具,我们还可以将引起最大响应的patch遮住,看看不同patch对分类结果的影响。结论就是“the model is truly identifying the location of the object in the image”。

4)有了上述可视化的分析工具,我们还可以将引起最大响应的patch遮住,看看最大响应的是不是消失了,以此验证,特定的pattern激活相应的activation。

5)当然了,我们还可以利用上述可视化分析工具,分析一下Alexnet模型的缺点,并且提出改进的办法,这篇paper也做了这样的事情。

6)此外,作者做了实验,通过移除Alexnet的一些层或者改变某一层的width,看看不同层、width对分类精度的影响,结论就是:模型的深度是影响性能一个很重要的因素,增加模型width能够提升网络的性能。

7)作者还验证了,小数据集不太适合训练大的网络如Alexnet。

8)网络的高层feature泛化能力较强,但其在PASCAL数据集上表现不佳,原因可能是:存在data-bias(Imagenet和PASCAL中的图像差异较大)

Summary

1)一个简单的可视化技术,让我们能够从各个角度审视“How and why CNN works”。“小改进、大智慧”,或许这应该成为科研的指导思想吧!

2)作者详细分析网络深度、宽度、数据集大小对网络性能的影响,也分析了网络输出特征的泛化能力以及泛化过程中出现的问题(如果另一个数据集与Imagenet差异较大,泛化能力相对较弱出现的原因)。

时间: 2024-12-23 14:58:40

论文笔记 Visualizing and Understanding Convolutional Networks的相关文章

[论文解读]CNN网络可视化——Visualizing and Understanding Convolutional Networks

概述 虽然CNN深度卷积网络在图像识别等领域取得的效果显著,但是目前为止人们对于CNN为什么能取得如此好的效果却无法解释,也无法提出有效的网络提升策略.利用本文的反卷积可视化方法,作者发现了AlexNet的一些问题,并在AlexNet基础上做了一些改进,使得网络达到了比AlexNet更好的效果.同时,作者用"消融方法"(ablation study)分析了图片各区域对网络分类的影响(通俗地说,"消融方法"就是去除图片中某些区域,分析网络的性能). 反卷积神经网络(D

0 - Visualizing and Understanding Convolutional Networks(阅读翻译)

卷积神经网络的可视化理解(Visualizing and Understanding Convolutional Networks) 摘要(Abstract) 近来,大型的卷积神经网络模型在Imagenet数据集上表现出了令人印象深刻的效果,但是现如今大家并没有很清楚地理解为什么它们有如此好的效果,以及如何改善其效果.在这篇文章中,我们对这两个问题均进行了讨论.我们介绍了一种创新性的可视化技术可以深入观察中间的特征层函数的作用以及分类器的行为.作为一项类似诊断性的技术,可视化操作可以使我们找到比

ZFNet: Visualizing and Understanding Convolutional Networks

目录 论文结构 反卷积 ZFnet的创新点主要是在信号的"恢复"上面,什么样的输入会导致类似的输出,通过这个我们可以了解神经元对输入的敏感程度,比如这个神经元对图片的某一个位置很敏感,就像人的鼻子对气味敏感,于是我们也可以借此来探究这个网络各层次的功能,也能帮助我们改进网络. 论文结构 input: \(3 \times 224 \times 224\), filter size: 7, filter count: 96, stride: 2, padding: 1, 我觉得是要补一层

RCNN学习笔记(8):Fully Convolutional Networks for Semantic Segmentation(全卷积网络FCN)

[论文信息] <Fully Convolutional Networks for Semantic Segmentation> CVPR 2015 best paper Reference link: http://blog.csdn.net/tangwei2014 http://blog.csdn.net/u010025211/article/details/51209504 概览&主要贡献 提出了一种end-to-end的做semantic segmentation的方法,简称FC

【阅读笔记】3D Densely Convolutional Networks for Volumetric Segmentation

3D Densely Convolutional Networks for Volumetric Segmentation  Toan Duc Bui, Jitae Shin, and Taesup Moon? School of Electronic and Electrical Engineering, Sungkyunkwan University, Republic of Korea 任务: 六个月婴儿脑部分割(四分类)white matter (WM), gray mater (GM)

[论文理解] Why do deep convolutional networks generalize so poorly to small image transformations?

Why do deep convolutional networks generalize so poorly to small image transformations? Intro CNN的设计初衷是为了使得模型具有微小平移.旋转不变性,而实际上本文通过实验验证了现在比较流行的神经网络都已经丧失了这样的能力,甚至图像只水平移动一个像素,预测的结果都将会发生很大的变化.之所以如此,作者认为CNN的下采样背离了隆奎斯特采样定理,就连augmentation也并不能缓解微小变化不变性的丧失. I

论文笔记之:Fully Convolutional Attention Localization Networks: Efficient Attention Localization for Fine-Grained Recognition

Fully Convolutional Attention Localization Networks: Efficient Attention Localization for Fine-Grained Recognition   细粒度的识别(Fine-grained recognition)的挑战性主要来自于 类内差异(inter-class differences)在细粒度类别中通常是局部的,细微的:类间差异(intra-class differences)由于姿态的变换而导致很大.为了

论文笔记《Notes on convolutional neural networks》

这是个06年的老文章了,但是很多地方还是值得看一看的. 一.概要 主要讲了CNN的Feedforward Pass和 Backpropagation Pass,关键是卷积层和polling层的BP推导讲解. 二.经典BP算法 前向传播需要注意的是数据归一化,对训练数据进行归一化到 0 均值和单位方差,可以在梯度下降上改善,因为这样可以防止过早的饱,这主要还是因为早期的sigmoid和tanh作为激活函数的弊端(函数在过大或者过小的时候,梯度都很小),等现在有了RELU和batch normali

论文讨论&amp;&amp;思考《Deformable Convolutional Networks》

这篇论文真是让我又爱又恨,可以说是我看过的最认真也是最多次的几篇paper之一了,首先deformable conv的思想我觉得非常好,通过end-to-end的思想来做这件事也是极其的make sense的,但是一直觉得哪里有问题,之前说不上来,最近想通了几点,先初步说几句,等把他们的代码跑通并且实验好自己的几个想法后可以再来聊一聊.首先我是做semantic segmentation的,所以只想说说关于这方面的问题. 直接看这篇paper的话可能会觉得ji feng的这篇工作非常棒,但实际上