小马&博客

不爱码字的小懒马儿

GoogLeNet


关于

  • 个人微信公众号: Mn2+
  • 个人博客首页
  • 注:学习交流使用!
  • 本文简介:GoogLeNet结构详解

正文

1、关于GoogLeNet网络
(1)GoogLeNet在2014年由Google团队提出(与VGG网络同年,注意GoogLeNet中的L大写是为了致敬LeNet),斩获当年ImageNet竞赛中Classification Task (分类任务) 第一名。
(2)GoogLeNet 的创新点:
  * 引入了 Inception 结构(融合不同尺度的特征信息)
  * 使用1x1的卷积核进行降维以及映射处理 (虽然VGG网络中也有,但该论文介绍的更详细)
  * 添加两个辅助分类器帮助训练
  * 丢弃全连接层,使用平均池化层(大大减少模型参数,除去两个辅助分类器,网络大小只有vgg的1/20)

2、inception 结构
(1)传统的CNN结构如AlexNet、VggNet都是串联的结构,即将一系列的卷积层和池化层进行串联得到的结构。
(2)GoogLeNet 提出了一种并联结构,下图是论文中提出的inception原始结构,将特征矩阵同时输入到多个分支进行处理,并将输出的特征矩阵按深度进行拼接,得到最终输出。
inception
  * inception的作用:增加网络深度和宽度的同时减少参数。
  * 注意:每个分支所得特征矩阵的高和宽必须相同(通过调整stride和padding),以保证输出特征能在深度上进行拼接。

3、inception + 降维
(1)在 inception 的基础上,还可以加上降维功能的结构,如下图所示,在原始 inception 结构的基础上,在分支2,3,4上加入了卷积核大小为1x1的卷积层,目的是为了降维(减小深度),减少模型训练参数,减少计算量。
inception + 降维
(2)1×1卷积核的降维功能
  同样是对一个深度为512的特征矩阵使用64个大小为5x5的卷积核进行卷积,不使用1x1卷积核进行降维的 话一共需要819200个参数,如果使用1x1卷积核进行降维一共需要50688个参数,明显少了很多。
降维功能
  * 注:CNN参数个数 = 卷积核尺寸×卷积核深度 × 卷积核组数 = 卷积核尺寸 × 输入特征矩阵深度 × 输出特征矩阵深度

4、辅助分类器(Auxiliary Classifier)
(1)AlexNet 和 VGG 都只有1个输出层,GoogLeNet 有3个输出层,其中的两个是辅助分类层。
(2)如下图所示,网络主干右边的 两个分支 就是 辅助分类器,其结构一模一样。在训练模型时,将两个辅助分类器的损失乘以权重(论文中是0.3)加到网络的整体损失上,再进行反向传播。
GoogLeNet


关注

  • 个人微信公众号:Mn2+

  • 哔哩哔哩:不爱码字的小懒马儿

  • GitHub

-------------本文结束感谢您的阅读-------------