《What Do We Understand About Convolutional Networks》-part 3
CNN综述文章《What Do We Understand About Convolutional Networks?》2.2部分总结
Chapter 2 Multilayer Networks
本章简要概述了计算机视觉中使用的最著名的多层体系结构。本章的目的是为本文其余部分的详细介绍和目前人们对卷积网络在视觉信息处理上的详细应用打下基础。
2.2空间卷积网络
从理论上讲,卷积网络可以应用于任意维度的数据。 借助大规模数据集和功能强大的计算机进行训练,在各种应用中使用ConvNets的研究数量激增。 本节描述了最杰出的2D ConvNet体系结构,这些体系结构在2.1.3节中描述的原始LeNet基础上引入了新组件。
2.2.1ConvNet发展过程中的关键架构
· AlexNet
重新引起人们对ConvNet体系结构兴趣的Krishevsky的AlexNet。AlexNet打破了ImageNet数据集上的识别记录。它共8层,5卷积层,3全连接层,在两个不同的GPU上并行训练。
AlexNet成功的关键有四点:
(1)AlexNet使用ReLU代替饱和非线性函数(例如Sigmoids),后者在以前的ConvNet体系结构中使用过(例如LeNet )。ReLU的使用减少了梯度消失的问题,并加快训练。
(2)AlexNet首次使用Dropout,随机删除(即设置为零)给定百分比的图层参数。此技术允许在每次训练略有不同的体系结构,并人为地减少每要学习的参数,最终可以帮助打破单元之间的相关性,从而避免过度拟合。
(3)依靠数据增强来提高网络学习能力。例如,通过随机移动和翻转训练图像扩充训练集。
(4)依靠几种技术来使训练过程收敛得更快,例如使用momentum和随时间降低学习率。
· VGG
更深层的网络可以获得更好的结果,这首先在深层VGG-Net 中得到了证明。 VGG-Net遵循AlexNet引入的标准实践,通过简单堆叠更多的层来增加深度。
VGG-Net的新颖之处在于使用了较小的filters(即整个网络中的3×3filters,而不是AlexNet中使用的11×11filters),增加深度而不会显着增加数量网络需要学习的参数。
· GoogLeNe
后来提出了一种更深的体系结构,通常称为GoogLeNet,具有22层,是第一个运用简单堆叠卷积和池化层策略的网络。 尽管比VGG-Net更深,但GoogLeNet所需的参数要少得多,这要归功于使用的inception模块。
在一个inception模块中,不同规模的卷积和池化操作并行进行。该模块还增加了1×1conv用于降低维度,保持网络规模可管理。 堆叠许多inception model构成现在广泛使用的GoogLeNet。
· ResNet
紧随其后的是迄今为止最深的架构之一,ResNet残差网络,其主要贡献在于残差模块
H
(
x
)
=
F
(
x
)
+
x
H(x) = F(x) + x
H(x)=F(x)+x。
通过使用跳跃式连接不同层的组件。 信号x的直接传播解决了反向传播过程中的梯度消失问题,从而可以训练非常深的网络。
· DenseNet
最近在ResNet的成功基础上建立DenseNet 。 在DenseNet中,每一层都连接到所有后续层。
因为将一层提取的特征推到其他层,这种策略允许denseNet在每一层使用较少的过滤器,可以避免可能的冗余信息,同时减少的参数和过拟合。
2.2.2 ConvNet 不变性
· 数据增强
使用ConvNets的挑战之一是需要非常大的数据集来学习所有底层参数。即使是像ImageNet 这样的大型数据集,有超过一百万张图像,对于训练某些深度架构来说也太小了。应对大型数据集需求的一种方法是,通过随机翻转,旋转等来更改图像,从而人为地扩充数据集。
这些扩充的主要优点是,所得网络对于各种变化变得更加稳定。实际上,这项技术是AlexNet取得巨大成功的主要原因之一。
· 空间变化网络
STN是显着解决网络不变性问题的著名卷积网络。在任何ConvNet体系结构的任意层添加这样的模块,就可以从输入中自适应地学习各种转换,提高其不变性,从而提高其准确性。
如下图所示,STN的输入为U,输出为V,因为输入可能是中间层的feature map,所以画成了立方体(多channel),STN主要分为下述三个步骤
1.Localisation net:是一个自己定义的网络,它输入U,输出变化参数Θ,这个参数用来映射U和V的坐标关系
2.Grid generator:根据V中的坐标点和变化参数Θ,计算出U中的坐标点。这里是因为V的大小是自己先定义好的,当然可以得到V的所有坐标点.
3.Sampler:要做的是填充V,根据Grid generator得到的一系列坐标和原图U来填充,因为计算出来的坐标可能为小数,要用另外的方法来填充,比如双线性插值。
· Deformable ConvNet和Active ConvNet
引入了一种灵活的卷积模块。 它向标准卷积中中添加了2D偏移。
(a) 所示的正常卷积规律的采样 9 个点(绿点),(b) © (d) 为可变形卷积,在正常的采样坐标上加上一个位移量(蓝色箭头),其中 © (d) 作为 (b) 的特殊情况,展示了可变形卷积可以作为尺度变换,比例变换和旋转变换的特殊情况
一个3X3的变形卷积 ,首先通过一个小卷积层(绿色)的输出得到可变形卷积所需要的位移量,然后将其作用在卷积核(蓝色)上,达到可变形卷积的效果
与空间变化网络交替学习子模块参数和网络权重的方法不同,Deformable network同时学习权重和偏移量,因此可以更快,更轻松地在各种体系结构中进行部署。
2.2.3 ConvNet 定位
除了简单的分类任务(例如对象识别)以外,最近,ConvNets在要求精确定位的任务(例如语义分段和对象检测)上也表现出色。
· FCN
在最成功的语义分割网络中,有所谓的完全卷积网络。 FCN对图像进行像素级的分类。
与CNN在卷积层使用全连接层得到固定长度的特征向量进行分类不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷基层的feature map进行上采样,使它恢复到输入图像相同的尺寸,从而可以对每一个像素都产生一个预测,同时保留了原始输入图像中的空间信息,最后在上采样的特征图进行像素的分类。FCN将传统CNN中的全连接层转化成一个个的卷积层。所有的层都是卷积层,故称为全卷积网络。
在上采样步骤中使用体系结构较低层的feature起着重要作用, 低层特征倾向于捕获更细粒度的细节。
· 区域卷积神经网络
在对象定位方面,ConvNet框架内最早的方法之一就是区域卷积神经网络
以下参考CSDN博主「六月的雨唯你」的原创文章https://blog.csdn.net/u013187057/article/details/84023468
目标检测三阶段:
(1)区域选择:利用不同尺寸的滑动窗口框住图中的某一部分作为候选区域。
(2)特征提取:由于目标的形态多样性,光照、背景多样性等因素使得设计一个鲁棒的特征并不是那么容易,然而提取特征的好坏直接影响到分类的准确性。
(3)分类器:进行识别,比如SVM
R-CNN
流程:
(1)用selective search(选择性搜索)算法在图像中提取多个侯选框,通常是在多个尺度下选取的,每个提议区域将被标注类别
(2)把所有候选框缩放(wrap)成固定大小,并进行归一化后输入CNN(AlexNet)网络,提取特征
(3)将提取到的特征用SVM分类,用线性回归模型来微调边框位置与大小,其中每个支持向量机用来判断样本是否属于某一个类别
(4)非极大值值抑制(NMS)来滤除IOU较大的区域
问题:训练时间长、测试时间长、占用磁盘空间大
SPP-Net
主要贡献:
(1)结合空间金字塔池化(SPP)方法实现
CNNs的对尺度输入一般CNN需要固定的输入尺寸,因此不得不对输入数据进行crop或者warp,而这些预处理会造成数据的丢失或几何的失真。SPP-Net在卷积层和全连接层之间加入了SPP layer,此时网络的输入可以是任意尺度的,在SPP layer中每一个pooling的filter会根据输入调整大小,而SPP的输出尺度始终是固定的。
(2)只对原图提取一次卷积特征
在R-CNN中,每个候选框先resize到统一大小,然后分别作为CNN的输入.SPP Net只对原图进行一次卷积得到整张图的feature map,然后找到每个候选框上的映射patch,节省了大量的计算时间。
问题:
继承R-CNN的剩余问题:需要存储大量特征,复杂的多阶段训练
带来新的问题:SPP层之前所有conv参数不能fine-tune
Fast R-CNN
主要贡献:
(1)用ROI pooling layer替换SPP-Net中的SPP层,使得conv层参数可以进行fine-tune
(2)用softmax替代SVM分类,采用多任务损失函数(Multi-task loss),将分类loss和回归loss统一,不用再保存提取特征,减小存储压力,可以实现“end-to-end”的全参数训练
问题:
选择性搜索提取候选框的方法非常耗时
Faster R-CNN (RPN+Fast R-CNN)
主要贡献:
为解决Fast R-CNN的候选框提取的耗时问题,引用RPN网络(将RPN网络放在最后一个conv层后面),得到量少质优的约300个候选框。