GoogLeNet
GoogLeNet网络
GoogLeNet是2014年Christian Szegedy提出的一种全新的深度学习结构,ImageNet-2014竞赛第一。在这之前的AlexNet、VGG等结构都是通过增大网络的深度(层数)来获得更好的训练效果,但层数的增加会带来很多负作用,比如overfit、梯度消失、梯度爆炸等。inception的提出则从另一种角度来提升训练结果:能更高效的利用计算资源,在相同的计算量下能提取到更多的特征,从而提升训练结果。
进化顺序: InceptionV1 -> InceptionV2 -> InceptionV3 -> InceptionV4
为了提升网络的性能,深度网络的发展一般都是通过减少参数,降低计算,增加宽度、深度来提高网络的性能。GoogLeNet网络的深度、宽度也在增加,从V1到V4Inception网络在不断的完善。
- 宽度:增加了多种核1×1,3×3,5×5和max pooling,增加网络的厚度,也就是宽度,但是考虑到简单的拼接到一起的话参数太多,计算量的问题,在,3×3,5×5和max pooling前加入了1×1的卷积核,以起到降低输入特征网络的厚度,通过降维这样就可以起到降低计算量的作用。
-> InceptionV1
核心组件Inception Architecture(稀疏连接结构)
① 提供多尺度特征:输出通道多尺度化(感受野)
- 首个Split-Merge思想
- 串接合并所有分支输出
② Bottleneck Layer 的 1×1 卷积解决多尺度带来的高额参数及计算问题
V1结构
通过设计一个稀疏网络结构,但是能够产生稠密的数据,既能增加神经网络表现,又能保证计算资源的使用效率。谷歌作者提出了最原始Inception的基本结构:
结构说明:
1 . 采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合。
2 . 之所以卷积核大小采用1、3和5,主要是为了方便对齐。设定卷积步长stride=1之后,只要分别设定pad=0、1、2,那么卷积之后便可以得到相同维度的特征,然后这些特征就可以直接拼接在一起了。
3 . 文章说很多地方都表明Pooling挺有效,所以Inception里面也嵌入了,同时Pooling池化也起到减少空间大小,降低过度拟合的作用。
4 . 网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3x3和5x5卷积的比例也要增加。
但是在上面的结构中使用 5×5 的网络结构仍然会带来很大的计算量,因此Inception借鉴了其他的网络结构,在3×3,