赞
踩
自AlexNet网络在ImageNet LSVRC-2012的比赛中,取得了top-5错误率为15.3%的成绩后卷积神经网络CNN在图像深度学习中成为不可缺少的大杀器。以图像分类任务为例在对最后一个卷积层进行池化后一般会再接2~3个全连接层(Full Connected Layer),这是一个高维向低维特征映射的过程,多个全连接层的作用是增加函数非线性,可以理解为提升分类的准确度。这种结构在VGG(2014)系列中仍有使用,
但是全连接层的加入会使模型带产生过量参数,之后的网络都在想办法减少和避免全连接层的使用(全卷积),本文主要是对比全连接层和卷积层的转化方式,以及在模型中的实际作用。
首先引用CS231n中的内容:
全连接层和卷积层之间不同在于:卷积核中的权值每次滑动计算时只是局部连接,且在卷积列中的神经元共享参数——计算局部信息,而全连接层神经元的权值与所有输入相连——计算全局信息。但二者都是采用的矩阵的点积运算,具有相似的函数计算形式,因此能够实现互相转换。
二者间互相转化的特点为:
现以图像分类问题为例,最后需要得到的是所属类别的得分,输出应该是一个向量的表示形式。假设经过多个卷积与池化层后准备输入到全连接的是,是一个4x4x3的一般特征图(或理解为一张彩色图片),如果进行全连接操作,我们需要先将特征图reshape到1x1x48,下图给出了一次全连接的图像,然后再接softmax,最后一层全连接网络一般不使用激活函数和批归一化BN,而其他的所有层目前的做法是首先尝试BN+ReLU进行激活,两者的先后顺序不一定,一般是激活在前。参考实验:caffenet-benchmark-batchnorm。
回到刚才的问题,将这一步全连接转化为全卷积操作时,以相同的输出作为比较,卷积神经网络的输入是4x4x3的图像,使用10个与原特征图一致的卷积核操作变为1x1x10的输出。实际上,我们可以将这全连接层中的任意一个转化为卷积层,见下图示意图:
显然最后得出的结果都是一个1x1x10的向量,分析上面计算的参数量,对于reshape的全连接参数量为48x10,全卷积操作的计算量为4x4x3x10,因此参数量相等,看起来似乎没有改的必要,但是问题就出现了reshape后的第一个全连接,这里训练出来的权重矩阵是48x10,如果我们要使用模型训练的参数进行推理(测试)的话,我们最后一层卷积池化后的特征图大小只能够是4x4x3,也就是说我们在起始处输入的图像大小必须固定(因为训练后的模型固定了),那问题来了,如果我们仍想使用训练好的模型进行前向传播获得分类结果的话该怎么办呢?
我们需要对图片进行分区域计算,就是说对原始图片进行剪裁,使其成为满足要求的图片后才可以进行输入。举个例子,加入我们训练时候的图片大小为32x32x1,如果你手上准备测试64x64x1的图像,那么你需要进行滑窗采样。由于全连接的参数不共享,所以最后分类的结果和准确度需要先后进行多次计算然后取平均。
再看看使用卷积层替代的效果,最后一次卷积后的特征图变为8x8x3(32/4=8,所以new size=64/8=8)对于4x4x3的卷积核设计完全可以通过一次滑动操作处理这个特征图。由于(8-4)/ 1 + 1 = 5,现在我们将得到最终大小为[5x5x10]的分类矩阵,为了做比较,我们需要以8像素为步长跨64x64图像上的每32x32区域,及一共5x5个区域进行独立地评估原始使用FC层的网络,输入为25张32x32x1的区域图像进行评价(允许出现重叠部分)其结果与一次转发转换后的ConvNet相同操作次数一样。
但是使用转化后的卷积神经网络进行一次前向传播计算要高效得多,因为25次计算都在共享计算资源。另外使用全连接的设计对于采样的相同区域进行了多次重复池化操作,因此会耗费了更多的时间。
减少和避免全连接层的使用能够有效降低模型的参数,也已在VGG后的多数网络里得到使用。
将全连接层转化为卷积层的作用:
补充: 使用用11卷积层代替全连接层的好处:
1、不改变图像空间结构,对于特征的升维/降维知识改变的channels的大小;
全连接层会破坏图像的空间结构,而11卷积层不会破坏图像的空间结构。
2、整合多通道的信息,进行信息交换
在通道channels C C C的维度上做线性组合,图像的 W W W与 H H H仍然是共享权值的滑窗。
3.输入可以是任意尺寸
卷积核滑动采样的特点决定了不限制输入图像的尺寸大小。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。