GoogLeNet论文详解[通俗易懂]

GoogLeNet论文详解[通俗易懂]GoogLeNet1.Introduction  得益于深度学习的优势和更强大的卷积神经网络的出现,图像分类和目标检测的准确率发生了令人意想不到的进步。在2014年的ILSVRC比赛中,GoogLeNet取得了第一名的成绩,所用模型参数不足AlexNet(2012年冠军)的1/12。论文题目《Goingdeeperwithconvolutions》中的deeper有两层含义…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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较小的时候对应的参数相应也小一些,比如1×1=1,3×3=9,5×5=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拥有更深的网络结构和更少的参数和计算量,主要归功于在卷积网络中大量使用了1×1卷积,以及用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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170441.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PHP OpenSSL扩展 – 对称加密

    PHP OpenSSL扩展 – 对称加密

    2022年2月14日
    34
  • 双目测距理论及其python实现

    双目测距理论及其python实现一、双目测距基本流程双目测距属于双目SLAM的一个应用领域。关于双目测距的基本原理,其实并不复杂,但说起来内容也不少,其核心原理就是三角测量,三角测量在土地测量、天文测量等领域都得到了广泛应用,是一种很好的测距方法。为了对双目测距的内容有一个很好的认识大家可以先看一下这个博客,讲的挺的不错的:https://blog.csdn.net/piaoxuezhong/article…

    2022年7月15日
    19
  • centos7 配置lamp 环境[通俗易懂]

    centos7 配置lamp 环境[通俗易懂]搭建版本版本组合php5.6+apache/2.4.6(centos7)+mysql5.7.24因为新系统不能确认哪些指令已经搭建所以安装前需要确认下是否拥有检测是否已经安装过Vimrpm-qa|grepvim显示出完整的包名:vim-common,vim-enhanced,vim-minimal,vim-filesystem表示安装成功若是缺少Vim包名:则使用命令:比如说:vim-enhanced这个包少了,执行:yum-yinstallvim-enha..

    2022年5月29日
    36
  • 前端面试选择题_vue最新面试题

    前端面试选择题_vue最新面试题面试题集合1、v-model是什么?vue中标签怎么绑定事件?答:v-model这个指令只能用在表单元素上,可以用他进行双向数据绑定。绑定事件:<input@click=doLog()/>2、mvvm框架是什么?说说对双向数据绑定的理解?它和其它框架(jquery)的区别是什么?哪些场景适合?答:mvvm的m模型就是用来定义驱动的数据、v经过数据改变后的html、vm就是连接数据…

    2022年9月3日
    4
  • db4o发布7.2,出现.NET 3.5版本,支持LINQ「建议收藏」

    db4o发布7.2,出现.NET 3.5版本,支持LINQ「建议收藏」db4o发布7.2,出现.NET3.5版本,支持LINQDb4Object刚刚发布了db4o的7.2beta,除了以前支持如下的平台:.NET1.1,.NET2.0,Mono外,现在还支持.NET3.5了。当然支持.NET3.5,最主要的时候要来支持LINQ。关于LINQ,我稍后再讲。现在讲讲7.2中最大的新特性——TransparentActivation(透明…

    2022年7月21日
    11
  • pycharm社区版安装教程 2019_pycharm安装教程2020社区版

    pycharm社区版安装教程 2019_pycharm安装教程2020社区版首先进入JetBrain的官网(国内正常访问):https://www.jetbrains.com/第一眼看到的界面如下图所示:然后找到我们的Pycharm专题页:进入Pycharm的专题页面之后,点击下载按钮(这里有两个按钮,点任何一个都行):然后进入到真正的下载页面你会发现有两个版本的Pycharm,一个是Professional版本(收费),另外一个是Community版本是永久免费的,而且后续升级什么的也都是免费的,我们下载这个就行了,Comm…

    2022年8月28日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号