【深度学习】GoogLeNet系列解读 —— Inception v2

版权声明:本文为博主原创文章,请尊重原创,转载请注明原文地址和作者信息! https://blog.csdn.net/zzc15806/article/details/83472329

目录

GoogLeNet系列解读

Inception v1

Inception v2

Inception v3

Inception v4


简介

GoogLeNet凭借其优秀的表现,得到了很多研究人员的学习和使用,因此Google又对其进行了改进,产生了GoogLeNet的升级版本,也就是Inception v2。

论文地址:Rethinking the Inception Architecture for Computer Vision


网络通用设计准则

GoogLeNet设计的初衷是既要保证识别精度,又要速度快。虽然像VGGNet这样通过堆叠卷积层可以提高识别精度,但是会增加对计算资源的要求。我们知道,GoogLeNet的参数量只有Alexnet的1/12,而VGGNet的参数量却是Alexnet的3倍。因此,我们需要考虑这样一个问题——如何在不提高网络参数量的前提下提升网络的表达能力?作者给出了一些通用的网络设计准则:

1. 避免表达瓶颈,尤其是网络早期。前馈网络在向后传递信息时,通过瓶颈层(高度压缩的层)时,会损失大量的有用信息,也就是遇到了表达瓶颈。当信息向后传播时,特征尺寸一般是要逐渐减小的,但是不要急剧减少,比如feature map直接从128x128减小到3x3,这样的网络是很难训练的。另外,特征维度(通道数)一般会逐渐增加,但是维度只是作为一种估计的手段,并不代表信息的多少,因为会丢弃相关结构等重要信息。

2. 高维特征更易处理。高维特征(多次非线性映射)带有更多的判别信息,网络也会更容易训练。

3. 可以在低维特征时进行空间聚合,而不必担心会损失太多信息。这句话的意思是在网络前几层的时候可以考虑降低特征维度,不会损失太多信息,反而还能加速训练。例如,在低维特征时,我们在进行3x3卷积前,可以先使用pooling操作,加速训练。

4. 平衡网络的宽度与深度。过深或过宽的网络都会使网络性能达不到最优。

上面几点只是对网络设计提供一个大方向的指导,让设计者避免走一些不必要的弯路,但是想让你的网络性能得到直接提升还需自己在算法上和实验中进行尝试。


卷积分解

大尺度的卷积可以获得更大的感受野,但是也会带来参数量的增加。比如通道数相同的5x5卷积核参数量是3x3卷积核的25/9 = 2.78倍,因此作者提出使用两个3x3卷积代替5x5卷积,在保证感受野相同的前提下减少参数量。实际上,这和VGG堆叠卷积的想法是相通的。

 除了减少参数量,这种做法的另一个好处是增加了一层非线性映射,是特征信息更加具有判别性。而且实验结果表明,这种替代方法不会造成表达缺失,降低网络性能。

我们知道,3x3卷积是能够完全获取上下文信息的最小卷积核(上、下、左、右)。那么是不是能把小卷积核分解的更小呢?作者提出使用1x3和3x1卷积替代3x3卷积,

 推广,可以得到任意nxn卷积均可由1xn和nx1卷积替代。但是作者发现这种替代方案在网络前几层的表现并不好,而在特征图尺寸在12-20之间有很好的效果。

将inception v2设计过程总结如下:

 

对上图进行说明:

1. Figure 4 表示Inception v1的结构。

2. Figure 5 表示将5x5卷积替代为两个3x3卷积的结构。

3. Figure 6 表示将nxn卷积替代为1xn卷积和nx1卷积。

4. Figure 7 的结构主要应用在高维特征上,文中为8x8的feature map。


Inception v2

GoogLeNet v2最终的网络结构如下:


代码实现

Keras 实现Inception v2请参考Inception v1的写法。

猜你喜欢

转载自blog.csdn.net/zzc15806/article/details/83472329