本文主要介绍深度学习种卷积神经网络的发展历史,以及典型的卷积神经网络。

卷积神经网络演变历史

LeNet-雏形网络

第一个真正的卷积神经网络在1998年提出,称为LeNet。模型共有8层(不计输入层),包括3个卷积层、2个下采样层、1个全连接层、1个输出层。模型结构如下:

LeNet LeNet2

AlexLet

AlexLet包含5个卷积层(进行了3次最大池化)、3个全连接层。模型结构如下:

AlexLet

AlexLet与LeNet相比,有了很多的改进:

  1. 使用了ReLU激活函数,提高训练速度(ReLU是一种非饱和函数,在训练时间上比饱和函数sigmoid、tanh快,而且ReLU利用了分片线性结构实现了非线性的表达能力,梯度消失现象较弱,有助于训练更深的网络)
  2. 使用GPU训练(可以提供数十倍乃至于上百倍于CPU的性能)
  3. 使用重叠池化(传统池化窗口没有重叠,不同窗口池化过程分别独立计算,有助于缓解过拟合)
  4. 局部响应归一化(不过后来验证没效果,采用的是BN?)
  5. 数据扩充-图像平移和反转、丢失输出-随即丢弃节点(减少了过拟合)

SPPNet-空间金字塔

空间金字塔池化网络,在最后一个卷积层和第一个全连接层之间插入了一个空间金字塔池化层,用来池化特征并产生固定长度的输出。无需对输入图像进行裁剪和变形,就可以处理输入图像大小不同的情况。

SPPNet

SPP有几个引人注目的特征:

  1. SPP对于任意输入大小都能产生一个固定长度的输出,而滑动窗口池化不能
  2. SPP使用多级大小空间窗口,而滑动窗口池化只使用一个窗口大小
  3. SPP可以在不同尺度上提取特征并进行池化
SPPNet2

VGGNet

有两种基本类型:VGGNet-16、VGGNet-19。VGGNet全部使用3X3的卷积核和2X2的池化核。VGG 块的组成规律是:连续使用若干个相同的填充为 1 、窗口形状为3X3的卷积层后接上一个步幅为 2 、窗口形状为2X2的最大池化层。

对于给定的感受野(与输出有关的输入图片的局部大小),采用堆积的小卷积核优于采用大的卷积核,因为可以增加网络深度来保证学习更复杂的模式,而且代价还比较小(参数更少)。

常见的VGG网络有:VGG-11、VGG-13、VGG-16、VGG-19

VGGNet

GoogLeNet

GoogLeNet专注于如何建立更深的网络结构,通视引入新型的基本结构-Inception模块,以加深网络宽度。GoogLeNet包括V1、V2、V3、V4版本。

Inception的作用: 代替人工确定卷积层中的过滤器类型或者确定是否需要创建卷积层和池化层,即:不需要人为的决定使用哪个过滤器,是否需要池化层等,由网络自行决定这些参数,可以给网络添加所有可能值,将输出连接起来,网络自己学习它需要什么样的参数。

1. Inception V1结构

Inception v1

由上图可以看出,Inception 块里有4条并行的线路,它通过不同窗口形状的卷积层和最大池化层来并行抽取信息,并使用1X1卷积层减少通道数从而降低模型复杂度。

2. Inception V2结构

Inception v2

用2个连续的3x3卷积层(stride=1)组成的小网络来代替单个的5x5卷积层,这便是Inception V2结构,保持感受野范围的同时又减少了参数量

3. Inception V3结构

考虑了 nx1 卷积核,如下图所示的取代3x3卷积:于是,任意nxn的卷积都可以通过1xn卷积后接nx1卷积来替代。

Inception v3 Inception v3-2

4. Inception V4结构
它结合了残差神经网络ResNet。

ResNet-残差网络

随着网络结构的加深, 梯度消失或梯度爆炸问题会越来越严重,可能导致神经网络学习和训练变得越来越困难。通过初始化、随机丢弃、归一化等技巧可以得到一定程度的缓和,而ResNet使用了在网络中增加信息传递快速通道的方法,信息可以无障碍地跨越多层直接传递到后面的层。

残差网络引入了跨层连接,构造了残差模块。基于残差模块,深层残差网络可以具有非常深的结构,深度甚至可以达到1000层以上。

ResNet

DenseNet-密连网络

残差网络在层间加入跨层连接,使得即使成百上千层的网络,也可以得到精准地训练。不过,残差网络一般只采用2~3层的跨层连接形成残差模块,密连卷积网络(DenseNet)通过引入密连模块代替残差模块进一步扩展了残差网络的结构。与残差模块的区别在于,密连模块内部允许任意两个非相邻层之间进行跨层连接。

DenseNet DenseNet2

CatNet-拼接网络

CatNet包含了r个交错的卷积层和池化层,再跟一个全连接层和输出层。其中,全连接层是所有卷积层和池化层通过跨层连接拼接的得到的。

CatNet

目标检测系列

R-CNN-区域卷积网络

R-CNN是一种目标检测模型,目标检测要求在图像中确定多个可能目标的位置。R-CNN采用了华东窗口的策略进行定位,包括3大模块:区域推荐、特征提取、区域分类。

  1. 区域推荐
    给输入图像生成约2000个类别无关的区域推荐构成候选检测集。R-CNN采用的区域推荐方法是选择性搜索(selective search),其他推荐方法包括目标够成度、类别无关目标推荐、受限参数最小割等。
  2. 特征提取
    利用卷积网络计算每个推荐的特征,要求先将推荐转变为卷积网络的输入大小,并且做减均值处理。
  3. 区域分类
    对每个区域进行打分和筛选。R-CNN先采用支持向量机SCM对所提取的特征打分,再根据分支高低,通过贪婪非最大抑制策略进行筛选,保留高分推荐。
RCNN

Fast R-CNN

R-CNN利用深层卷积网络对目标区域推荐进行分类,可以得到较高的检测精度,但也有明显不足:

  1. 训练过程阶段多。先区域推荐、再求特征、再区域分类
  2. 训练时空费用大。支持向量机和边框回归都需要从每幅图像的每个区域推荐提取特征写入硬盘,过程非常耗时。
  3. 目标检测速度慢。

于是有人提出Fast R-CNN网络,优点在于1)检测质量更高 2)训练过程统一 3)网络圈层更新 4)无需磁盘存储

Fast R-CNN的结构如下:

Fast R-CNN0

输入一幅完整图像和多个感兴趣区域(RoI),京埚几个卷积和最大池化层的处理,产生一个共享卷积特征图,用来为每个区域推荐的RoI通过最大池化提取一个固定长度的特征向量。这些特征向量的输入到一系列全连接层后,又分化为两个并列输出层:一个输出类别softmax概率,一个输出目标惊喜边框位置。

Fast R-CNN Fast R-CNN2

Fast R-CNN做了以下改变:

  1. 把最后的最大池化层替换为一个RoI池化层
  2. 把最后的全连接层和softmax层替换为两个兄弟层,分别用来估计每个类别的概率和边框
  3. 把网络改为接收两种数据输入,一是图像列表,二是RoooI列表

Faster R-CNN

Faster R-CNN采用了区域推荐网络(RPN),可以检测网络共享整幅图像的卷积特征,从而产生几乎无代价的区域推荐。

Faseter RCNN

Faster R-CNN有两个模块:一是用来产生区域推荐的RPN,二是使用推荐于去的Fast R-CNN检测器。整个系统是一个统一的目标检测网络,其中RPN采用了attention机制,告诉Fast R-CNN模块应该看什么地方。

Mask R-CNN

Mask R-CNN

RCNN系列算法对比:

RCNN系列算法对比

YOLO

YOLO

SSD

单次检测器(SSD)是一种新型的深度神经网络目标检测器,不用对边框假设重采像素或特征,也不会损失精度,但速度比Faster R-CNN、YOLO都要快。SSD提高速度的根本改进措施是消除边框推荐和随后的像素或特征重采样阶段,还包括使用小卷积核在变量位置预测对象的类别和偏移,使用独立预测器负责不同高度比的检测,并用这些滤波器在网络后期的多个特征图种执行多尺度检测。