常用卷积神经网络 -- GoogLeNet

GoogLeNet团队提出了Inception网络结构,就是构造一种“基础神经元”结构,来搭建一个稀疏性、高计算性能的网络结构。

Inception历经了V1、V2、V3、V4等多个版本的发展。

 

1、Inception V1

(1)Inception块

常用卷积神经网络 -- GoogLeNet_第1张图片

Inception块里有4条并行的线路。前3条线路使用窗口大小分别是1 × 1、3 × 3和5 × 5的卷积层来抽取不同空间尺寸下的信息,其中中间2个线路会对输入先做1 × 1卷积来减 少输入通道数,以降低模型复杂度。第四条线路则使用3 × 3最大池化层,后接1 × 1卷积层来改变通道数。4条线路都使用了合适的填充来使输入与输出的高和宽一致。最后我们将每条线路的输出在通道维上连结,并输入接下来的层中去。Inception块中可以自定义的超参数是每个层的输出通道数,我们以此来控制模型复杂度。

(2)GoogLeNet模型

GoogLeNet跟VGG一样,在主体卷积部分中使用5个模块(block),每个模块之间使用步幅为2的3 × 3最大池化层来减小输出高宽。

第一模块使用1个64通道的7 × 7卷积层。

第二模块使用2个卷积层:首先是64通道的1 × 1卷积层,然后是将通道增大3倍的3 × 3卷积层。它对应Inception块中的第二条线路。

第三模块串联2个完整的Inception块。第一个Inception块的输出通道数为64+128+32+32 = 256。第二个Inception块输出通道数增至128 + 192 + 96 + 64 = 480。

第四模块串联了5个Inception块,其输出通道数分别是192 + 208 + 48 + 64 = 512、 160+224+64+64 = 512、128+256+64+64 = 512、112+288+64+64 = 528和256+320+128+128 = 832。

第五模块有输出通道数为256 + 320 + 128 + 128 = 832和384 + 384 + 128 + 128 = 1024的2个Inception块。第五模块的后面紧跟输出层,该模块同NiN一样使用全局平均池化层来将每个通道的高和宽变成1。最后我们将输出变成二维数组后接上一个输出个数为标签类别数的全连接层。

 

2、Inception V2

Inception V2版本的解决方案就是修改Inception的内部计算逻辑,提出了比较特殊的“卷积”计算结构。

(1)卷积分解(Factorizing Convolutions)

大尺寸的卷积核可以带来更大的感受野,但也意味着会产生更多的参数。因此,GoogLeNet团队提出可以用2个连续的3x3卷积层组成的小网络来代替单个的5x5卷积层,即在保持感受野范围的同时又减少了参数数量。

常用卷积神经网络 -- GoogLeNet_第2张图片

(2)降低特征图大小

一般情况下,如果想让图像缩小,可以有两种方式,先池化再作Inception卷积,或者先作Inception卷积再作池化。但是先作pooling会导致特征缺失,而先做Inception计算量很大。为了同时保持特征表示且降低计算量,使用两个并行化的模块来降低计算量(卷积、池化并行执行,再进行合并)。

常用卷积神经网络 -- GoogLeNet_第3张图片

 

3、Inception V3

Inception V3一个最重要的改进是分解(Factorization),将7x7分解成两个一维的卷积(1x7,7x1),3x3也是一样(1x3,3x1)。这样做的好处,特征大量减少,可以加速计算;又可以将1个卷积拆成2个卷积,使得网络深度进一步增加。

 

4、Inception V4

Inception V4主要利用残差连接(Residual Connection)来改进V3结构,得到Inception-ResNet-v1,Inception-ResNet-v2,Inception-v4网络。

常用卷积神经网络 -- GoogLeNet_第4张图片

参考地址:https://my.oschina.net/u/876354/blog/1637819

 

 

 

 

你可能感兴趣的:(深度学习)