从Lenet 到incepetion-resnet v2

Lenet

  • LeNet 交替使用卷积层和最大池化层后接全连接层来进行图片分类。
  • 相邻两个卷积层之间包含了一个2*2的maxpooling层

 

Alexnet

AlextNet 与 LeNet 的设计理念非常相似。但也有非常显著的区别。

  1. 与相对较小的 LeNet 相比,AlexNet 包含 8 层变换,其中有五层卷积和两层全连接隐含层,以及一个输出层。
  2. 将 sigmoid 激活函数改成了更加简单的 relu 函数 f(x)=max(x,0)f(x)=max(x,0)。它计算上更简单,同时在不同的参数初始化方法下收敛更加稳定。
  3. 通过丢弃法来控制全连接层的模型复杂度。
  4. 引入了大量的图片增广,例如翻转、裁剪和颜色变化,进一步扩大数据集来减小过拟合。

VGG网络

VGG16结构图

 

VGG19网络结构图

特点:

AlexNet 在 LeNet 的基础上增加了三个卷积层。但作者对它们的卷积窗口、通道数和构造顺序均做了大量的调整。VGG 模型的基础组成规律是:连续使用数个相同的填充为 1 的 3×33×3 卷积层后接上一个步幅为 2 的 2×22×2 最大池化层。卷积层保持输入高宽,而池化层则对其减半。每次我们将长宽减半,直到最后高宽变成 7 后进入全连接层。与此同时输出通道数每次都翻倍。因为每个卷积层的窗口大小一样,所以每层的模型参数大小和计算复杂度跟 高 ×× 宽 ×× 输入通道数 ×× 输出通道数 成正比。VGG 这种高宽减半和通道翻倍的设计使得每个卷积层都有相同的模型参数大小和计算复杂度。

 

NIN(network in network)

我们看到 LeNet、AlexNet 和 VGG 均由两个部分组成:以卷积层构成的模块充分抽取空间特征,然后以全连接层构成的模块来输出最终分类结果。AlexNet 和 VGG 对 LeNet 的改进主要在于如何加深加宽这两个模块。这一节我们介绍网络中的网络(NiN)。它提出了另外一个思路,即串联多个由卷积层和“全连接”层构成的小网络来构建一个深层网络。

                                                                            å¯¹æ¯NiNï¼å³ï¼åå¶ä»ï¼å·¦ï¼ã

                                                                        其他网络(左)NIN(右)

  • NiN 提供了两个重要的设计思路:(1) 重复使用由卷积层和代替全连接层的 1×11×1 卷积层构成的基础块来构建深层网络;(2) 去除了容易造成过拟合的全连接输出层,而是替换成输出通道数等于标签类数的卷积层和全局平均池化层。
  • 虽然因为精度和收敛速度等问题,NiN 并没有像本章中介绍的其他网络那么被广泛使用,但 NiN 的设计思想影响了后面的一系列网络的设计
  • 这里解释下为什么NIN网络需要两个
  • image
  • 引自liuguochao

GoogleNet

Googlenet V1

Inception 里有四个并行的线路。前三个线路里使用窗口大小分别是 1×1、3×3 和 5×5 的卷积层来抽取不同空间尺寸下的信息。其中中间两个线路会对输入先作用 1×11×1卷积来减小输入通道数,以此降低模型复杂度。第四条线路则是使用 3×33×3 最大池化层,后接 1×11×1 卷积层来变换通道。四条线路都使用了合适的填充来使得输入输出高宽一致。最后我们将每条线路的输出在通道维上合并,输入到接下来的层中去。最后的输出层用全局池化接上一个Dense层。

googlenet V2

Inception V2 学习了 VGG 用两个3´3的卷积代替5´5的大卷积,在降低参数的同时建立了更多的非线性变换,使得 CNN 对特征的学习能力更强

此外在V2网络中进入了batch normalization解决内部协变量偏移情况导致的影响训练速度的问题,通过减少内部协变量的偏移,也就是通过归一化来将输入的均值和方差固定,Batch Normalization也能通过减小梯度对参数和初始值的依赖,从而使得减少梯消失,梯度爆炸的问题,从而使得我们能够用更快的学习率(原来使用太快的学习率就是怕不能收敛,梯度消失\爆炸)。不仅如此,Batch Normalization还对网络进行了正则化处理,减小了对dropout的需要,还能使用饱和非线性防止网络陷入饱和状态。

googlenet V3

一是引入了 Factorization into small convolutions 的思想,将一个较大的二维卷积拆成两个较小的一维卷积,比如将7´7卷积拆成1´7卷积和7´1卷积,或者将3´3卷积拆成1´3卷积和3´1卷积,如上图所示。一方面节约了大量参数,加速运算并减轻了过拟合(比将7´7卷积拆成1´7卷积和7´1卷积,比拆成3个3´3卷积更节约参数),同时增加了一层非线性扩展模型表达能力。论文中指出,这种非对称的卷积结构拆分,其结果比对称地拆为几个相同的小卷积核效果更明显,可以处理更多、更丰富的空间特征,增加特征多样性。

另一方面,Inception V3 优化了 Inception Module 的结构,现在 Inception Module 有35*35、17*17和8*8三种不同结构。这些 Inception Module 只在网络的后部出现,前部还是普通的卷积层。

googlenet V4

Figure 3 为stem模块,Figure 4 为inceptionA 模块,Figure 5 为Reduction-A模块,Figure 6 为inception-B模块,Figure 7为Reduction-B模块, Figure-8为Incepetion-C模块。

 

  • 1、在Inception v3的基础上发明了Inception v4,v4比v3更加复杂
  • 2、结合ResNet与GoogLeNet,发明了Inception-ResNet-v1、Inception-ResNet-v2,其中Inception-ResNet-v2效果非常好,但相比ResNet,Inception-ResNet-v2的复杂度非常惊人,跟Inception v4差不多
  • 3、加入了Residual Connections以后,网络的训练速度加快了
  • 4、在网络复杂度相近的情况下,Inception-ResNet-v2略优于Inception-v4
  • 5、Residual Connections貌似只能加速网络收敛,真正提高网络精度的是“更大的网络规模

Incepetion-ResNet V1

Figure 14 为stem模块,Figure 10 为Inception-ResNet-A 模块,table 1 为Reduction-A模块,Figure 11 为Inception-ResNet-B模块,Figure 12为Reduction-B模块, Figure-13为Incepetion-C模块。

Inception-ResNet V2

 

Figure 3 为stem模块,Figure 16 为Inception-ResNet-A 模块,table 1 为Reduction-A模块,Figure 17 为Inception-ResNet-B模块,Figure 18为Reduction-B模块, Figure-19为Incepetion-C模块。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章