GoogLeNet笔记

来源:互联网 发布:rt809f编程器 自制 编辑:程序博客网 时间:2024/06/05 23:58

1.介绍

GoogLet是ILSVRC-2014分类任务和目标检测任务的冠军,又称为Inception-v1,有22层。在增加网络深度和宽度的同时,能够保持计算预算恒定。

2.NiN

自从LeNet以来,卷积神经网络有个主流的结构是一系列卷积层(+normalization/max-pooling)和全连接层,这样的结构在MNIST和Cifar等数据集上取得了很好的结果。对于像Imagenet这样的大数据集,趋势是网络变得更深、更宽,使用dropout避免过拟合。

GoogLeNet借鉴了Network-in-Network的思想.NiN有两个很重要的观点:

  1. 1×1卷积的使用
    文中提出使用mlpconv网络层替代传统的convolution层。mlp层实际上是卷积加传统的mlp(多层感知器),因为convolution是线性的,而mlp是非线性的,后者能够得到更高的抽象,泛化能力更强。在跨通道(cross channel,cross feature map)情况下,mlpconv等价于卷积层+1×1卷积层,所以此时mlpconv层也叫cccp层(cascaded cross channel parametric pooling)。

  2. CNN网络中不使用FC层(全连接层)
    文中提出使用Global Average Pooling取代最后的全连接层,因为全连接层参数多且易过拟合。做法即移除全连接层,在最后一层(文中使用mlpconv)层,后面加一层Average Pooling层。

以上两点,之所以重要,在于,其在较大程度上减少了参数个数,确能够得到一个较好的结果。而参数规模的减少,不仅有利用网络层数的加深(由于参数过多,网络规模过大,GPU显存等不够用而限制网络层数的增加,从而限制模型的泛化能力),而且在训练时间上也得到改进。

  • 传统的卷积层

这里写图片描述

  • 单通道mlpconv层
    这里写图片描述

  • 跨通道mlpconv层(cccp层)
    这里写图片描述

3.网络结构

3.1 Inception结构

这里写图片描述

nception module的提出主要考虑多个不同size的卷积核能够hold图像当中不同cluster的信息,为方便计算,paper中分别使用1*1,3*3,5*5,同时加入3*3 max pooling模块。 然而这里存在一个很大的计算隐患,每一层Inception module的输出的filters将是分支所有filters数量的综合,经过多层之后,最终model的数量将会变得巨大,naive的inception会对计算资源有更大的依赖。 前面我们有提到Network-in-Network模型,1*1的模型能够有效进行降维(使用更少的来表达尽可能多的信息),所以文章提出了”Inception module with dimension reduction”,在不损失模型特征表示能力的前提下,尽量减少filters的数量,达到减少model复杂度的目的。

3.2 整体结构

这里写图片描述

4.效果

针对分类问题,与其他队伍的模型比较
这里写图片描述

采用不同数据处理方法和模型组合,效果不同
这里写图片描述
top-5的6.67%的错误率是集成7个模型的结果。

参考文献:
1.论文Going Deeper with Convolutions
2.http://www.duanshishi.com/?p=1678

0 0
原创粉丝点击