GoogLeNet论文详解

2023-11-19

GoogLeNet


1. Introduction

得益于深度学习的优势和更强大的卷积神经网络的出现,图像分类和目标检测的准确率发生了令人意想不到的进步。在2014年的ILSVRC比赛中,GoogLeNet取得了第一名的成绩,所用模型参数不足AlexNet(2012年冠军)的1/12。论文题目《Going deeper with convolutions》中的deeper有两层含义,一是指本文引入了一种新的结构“Inception module”,二就是其直接含义——网络深度(depth)的增加。

2. Relative work

相比传统的网络架构设计——由多个卷积层堆积,选择性的使用Normalization和maxpool,然后经过一层或多层的全连接层输出,由于模型参数主要集中在全连接层,可选择在全连接层使用dropout来降低过拟合的风险。
  但是Maxpool可能会导致空间信息的损失,降低神经网络的表现力。为了解决这个问题,Lin等人在2013年提出了inception——“Network in Network”的想法。在卷积网络中的实现方法就是添加一个额外的1X1卷积层,使用Relu作为激活函数。其主要作用是降维(dimension reduction),在不牺牲模型表现的前提下,可以大量减少计算量,有利用训练更深更广的网络。
  前沿的目标检测方法是R-CNN,主要思想是将目标检测问题划分为两个子问题:首先利用低级的特征比如颜色和超像素的一致性来得到潜在的object proposals。然后利用CNN分类器对这些位置上的proposals进行分类识别。GoogLeNet对这两步分别进行了优化,取得了令人惊喜的结果。

3. Motivation

通常来说要想提高网络性能,常用的方法就是提高神经网络层数和宽度,但是会带来两个严重的缺陷:一是更深的网络意味着会有更多的参数,这样很容易导致过拟合;二是更深的网络会带来更多计算上的开支,减缓训练周期。而参数又主要集中在全连接层,于是就想到了用稀疏连接来取代全连接层的方法,是解决这两个问题的关键。
  在《Provable bounds for learning some deep representations》中提到**“如果用大而稀疏的CNN来表示数据集的概率分布,那么可以通过逐层分析最后一层的Activation和具有高度相关的输出的聚类神经的相关统计数据来构建最优的网络拓补结构。”**,尽管没有严格的数学证明,但是这很符合Hebbian principle的说法,这为网络架构的设计提供了有力的理论保障!

4. Inception Module

Inception的主要观点是弄明白卷积视觉网络中的一个局部最优稀疏结构是如何被一个可轻易获取的密集结构去逼近和覆盖的。
  Inception model 的结构如下;左边是初期版本,这里使用三个不同的patch size,1X1 3X3 5X5,主要是为了避免patch alignment问题和减少计算量。比如对三个patch分别使用padding=0,1,2进行卷积就可以让卷积后的输出具有相同的尺寸,而patch size较小的时候对应的参数相应也小一些,比如1x1=1,3x3=9,5x5=25,再往后参数数量的增长速度就更快了。由于池化层在卷积神经网络中的作用往往都是起关键作用的,所以Inception model里也加入了一个池化层。但这种设计不是必须的,只是为了更方便。
Inception Module   
  但是初级的版本有个很大的缺点就是参数量和计算量会很大,而且将三个卷积层和一个池化层的输出拼接后的feature map数量会变得很大,随着网络层数的增加,模型会变得很复杂,变得难以训练。以GoogLeNet的3a模块为例,输入的feature map是28×28×192,3a模块中1×1卷积通道为64,3×3卷积通道为128,5×5卷积通道为32,如果是左图结构,那么卷积核参数为 1 × 1 × 192 × 64 + 3 × 3 × 192 × 128 + 5 × 5 × 192 × 32 1×1×192×64+3×3×192×128+5×5×192×32 1×1×192×64+3×3×192×128+5×5×192×32,而右图对3×3和5×5卷积层前分别加入了通道数为96和16的1×1卷积层,这样卷积核参数就变成了 1 × 1 × 192 × 64 + ( 1 × 1 × 192 × 96 + 3 × 3 × 96 × 128 ) + ( 1 × 1 × 192 × 16 + 5 × 5 × 16 × 32 ) 1×1×192×64+(1×1×192×96+3×3×96×128)+(1×1×192×16+5×5×16×32) 1×1×192×64+1×1×192×96+3×3×96×128+1×1×192×16+5×5×16×32,参数大约减少到原来的三分之一。同时在并行pooling层后面加入1×1卷积层后也可以降低输出的feature map数量,左图pooling后feature map是不变的,再加卷积层得到的feature map,会使输出的feature map扩大到416,如果每个模块都这样,网络的输出会越来越大。而右图在pooling后面加了通道为32的1×1卷积,使得输出的feature map数降到了256。GoogLeNet利用1×1的卷积降维后,得到了更为紧凑的网络结构,虽然总共有22层,但是参数数量却只是8层的AlexNet的十二分之一(当然也有很大一部分原因是去掉了全连接层)。
   另外一个值得注意的地方是:为了避免网络过深引起的浅层梯度消失问题,GoogLenet在中间层的Inception module加入了两个辅助分类器(softmax),训练时在进行梯度下降求导的时候,将辅助分类器的损失函数(cost function)乘以0.3的权重加到总的损失函数上,这样可以有效避免梯度消失的问题。做预测的时候就不管这两个辅助分类器。

5. GoogleNet

GoogLeNet

6. Conclusion

GoogLeNet最终在2014年的ILSVRC Classification & Detection均斩获冠军,取得了惊人的成绩。相比第二名的VGGNet,GoogLeNet拥有更深的网络结构和更少的参数和计算量,主要归功于在卷积网络中大量使用了1x1卷积,以及用AveragePool取代了传统网络架构中的全连接层,当然这需要精心设计Inception architecture 才能取得最后这优异的成绩。

7. Reference

(1)Going deeper with convolutions https://arxiv.org/pdf/1409.4842.pdf
(2)Network in Network https://arxiv.org/pdf/1312.4400.pdf
(3)https://blog.csdn.net/mounty_fsc/article/details/51746111
(4)https://blog.csdn.net/qq_31531635/article/details/72232651

附录

《Going deeper with convolutions》论文中计算量表的修正版
纠正
图片来源:http://www.xue63.com/toutiaojy/20180102G0RYYR00.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GoogLeNet论文详解 的相关文章

随机推荐

  • 持久化RDB/AOF-Redis(三)

    上篇文章说了数据持久化 这里再学习一个命令 数据结构 Redis 二 https blog csdn net ke1ying article details 131118016 一 查询所有key scan 0 match zhuge co
  • 【动态规划】从入门到实践---动态规划详解

    目录 1 动态规划概念 一 定义数组元素的含义 二 找到数组元素之间的关系表达式 三 找到初始值 2 案例详解 一 爬楼梯 1 定义数组元素的含义 2 找到数组元素之间的关系表达式 3 找到初始值 案例二 最短路径 题目 做题步骤 1 定义
  • eclipse项目上出现两个红点(类似两个红心)的标志

    找了老久 浪费光阴 肯定引用的jar包有问题 大不了重新引用一下
  • 基于内容的图像检索系统设计与实现--颜色信息--纹理信息--形状信息--PHASH--SHFT特征点的综合检测项目,包含简易版与完整版的源码及数据!

    百度云提取源码以及数据包 直接下载压缩包解压就可以使用 数据就在压缩包文件dataset中 简化版 只有 颜色信息 纹理信息 形状信息 PHASH SHFT特征点的综合检测 百度云链接 提取码 6666 戳我 完整版 包含只有 颜色信息 纹
  • python3 字符串format 输出

    gt gt gt help FORMATING Traceback most recent call last File
  • 潜艇来袭(Qt官方案例-2维动画游戏)

    一 游戏介绍 1 开始界面 启动程序 进入开始界面 2 开始新游戏 点击菜单 File New Game 或者Ctrl N 进入新游戏 开始新游戏之后 会有一个海底的潜艇 和水面舰艇对战 计算机 自动控制潜艇 海底潜艇会隔段时间发射一枚鱼雷
  • Node输出日志的正确姿势

    背景 每个程序员都喜欢在有问题的代码中插入一些日志的方法来帮助调试程序 比如System out println或console log 解决后 就会将这些语句删除 周而复始 但是通过系统日志输出的日志格式都是这种 output conso
  • Android加载webView--setWebChromeClient默认不会显示弹窗

    1 设置自定义浏览器客户端 webView setWebChromeClient new MyWebChromeClient 2 onJsAlert就是弹窗 只会有一个 自定义弹出框 class MyWebChromeClient exte
  • VSCode关闭vue语法检查

    今天碰到一个这样的错误 Component name School should always be multi word 意思是组件名称 School 应该总是多个单词 解决办法 在vue config js中添加这样一句代码 lintO
  • QT实现动态翻译和语言切换

    QT GUI提供语言动态转换机制并辅以相应的工具方便programmer实现界面的多语言实时动态切换功能 实现语言动态切换的方法 一个注意 五个步骤 一个注意 实现QT工程的语言切换功能的一个关键点是所有的字符串都需要tr修饰符 例如 m
  • 【数据结构初阶】第七节.树和二叉树的基本操作

    作者简介 大家好 我是未央 博客首页 未央 303 系列专栏 Java初阶数据结构 每日一句 人的一生 可以有所作为的时机只有一次 那就是现在 文章目录 前言 一 二叉树的快速构建 二 二叉树的遍历 2 1 前序遍历 2 2 中序遍历 2
  • 从计数器到分频电路

    一 计数器 1 计数器代码 计数器 顾名思义就是在时钟的节拍下进行计数 一个简单的N位计数器的代码如下所示 这个计数器从0计数到2 N 1 共计数了2 N个数 也就是N位计数器 1 module count parameter N 8 2
  • 微信小程序登录弹框问题

    1 getUserInfo 相信刚接触微信小程序开发的人都在想 官方给出的这个是什么意思 我来解释一下吧 还记得我们在最开始使用微信小程序的时候吗 第一次进一个微信小程序的时候会直接弹出来个框 询问我们是否允许哟用户获取信息 微信官方觉得这
  • C++11 之 std::function & std::bind & lambda 表达式

    文章目录 std function std bind lambda 表达式 总结 c 11新增了 std function std bind lambda 表达式等封装使函数调用更加方便 std function 讲 std functio
  • 生活之你为什么不学习

    最近在别人的空间 我看到了八句话 你有什么理由不学习 感觉说得挺有鸡血的 1 你不能把这个世界让给你所鄙视的人 2 成功的速度一定要超过父母老去的速度 3 可怕的不是别人比你优秀 而是比你优秀的人比你还努力 4 我努力的目的是让我的妈妈买东
  • 【华为OD机试python】按身高和体重排队【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 某学校举行运动会 学生们按编号 1 2 3 n 进行标识 现需要按照身高由低到高排列 对身高相同的人 按体重由轻到重排列 对于身高体重都相同的人 维持原有的编号顺序关
  • 最全的交叉编译Makefile讲解

    最近正在搞交叉编译 参考很多博客 学习了一下Makefile的编写 记录一下Makefile内代码是什么意思 代码如下 简单的hello ko的makefile ifneq KERNELRELEASE obj m hello o else
  • [CUDA] 快速入门CUDA(1)-基本了解和HelloWorld

    CUDA基础 文章目录 CUDA基础 1 CUDA简介 2 GPU和CPU架构的不同之处 3 查看GPU硬件信息 4 需要建立的基本概念 5 总结 1 CUDA简介 CUDA的全程是Computer Unified Device Archi
  • 树莓派4B(buster)的源更换为北外(清华)国内源

    树莓派4B buster 的源更换为北外 清华 国内源 1 登陆到树莓派 ssh pi your raspi IP 2 备份源文件 sudo cp etc apt sources list etc apt sources list bak
  • GoogLeNet论文详解

    GoogLeNet 1 Introduction 得益于深度学习的优势和更强大的卷积神经网络的出现 图像分类和目标检测的准确率发生了令人意想不到的进步 在2014年的ILSVRC比赛中 GoogLeNet取得了第一名的成绩 所用模型参数不足