深度学习经典网络解析图像分类篇(六):GoogLeNet

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:  GoogLeNet是2014年Christian Szegedy提出的一种全新的深度学习结构,在这之前的AlexNet、VGG等结构都是通过增大网络的深度(层数)来获得更好的训练效果,但层数的增加会带来很多负作用,比如过拟合、梯度消失、梯度爆炸等。

GoogLeNet论文翻译详情见我的博客:


https://blog.csdn.net/muye_IT/article/details/123886132


1.背景介绍


 GoogLeNet是2014年Christian Szegedy提出的一种全新的深度学习结构,在这之前的AlexNet、VGG等结构都是通过增大网络的深度(层数)来获得更好的训练效果,但层数的增加会带来很多负作用,比如过拟合、梯度消失、梯度爆炸等。Inception Architecture的提出则从另一种角度来提升训练结果:能更高效的利用计算资源,在相同的计算量下能提取到更多的特征,从而提升训练结果。


 2014年,GoogLeNet和VGG是当年ImageNet挑战赛(ILSVRC14)的双雄,GoogLeNet获得了第一名、VGG获得了第二名,这两类模型结构的共同特点是层次更深了。VGG继承了LeNet以及AlexNet的一些框架结构,而GoogLeNet则做了更加大胆的网络结构尝试,虽然深度只有22层,但大小却比AlexNet和VGG小很多,GoogleNet参数为500万个,AlexNet参数个数是GoogleNet的20倍,VGGNet参数又是AlexNet的3倍,因此在内存或计算资源有限时,GoogleNet是比较好的选择;从模型结果来看,GoogLeNet的性能却更加优越。


 GoogLeNet这个名字的诞生由两方面促成,一是设计者在Google工作,二是向LeNet致敬。GoogLeNet只是一个名字,它的核心是Inception Architecture。


afb13a2555304ef4844157159bd72e38.png


2.GoogLeNet创新点


 ➢ 提出了一种Inception结构,它能保留输入信号中的更多特征信息;

 ➢ 去掉了AlexNet的前两个全连接层,并采用了平均池化,这一设计使得

GoogLeNet只有500万参数,比AlexNet少了12倍;

 ➢ 在网络的中部引入了辅助分类器,克服了训练过程中的梯度消失问题。


 模型总览图如下:


0a5c4e1eea1b46a3b77b7f42e9c82357.png



01f437f470a24dae9cc9ed54d7f7a044.png


3.串联结构(如VGG)存在的问题


 —后面的卷积层只能处理前层输出的特征图;前层因某些原因(比如感受野限制)丢失重要信息,后层无法找回。


如何解决?


 每一层尽量多的保留输入信号中的信息。


4.GoogLeNet


4.1 网络架构


4.1.1 INPUT层


 原始输入图像为224x224x3,且都进行了零均值化的预处理操作(图像每个像素减去均值)。


4.1.2 Conv 1×1


 使用7x7的卷积核(滑动步长2,padding为3),64通道,输出为112x112x64,卷积后进行ReLU操作


 经过3x3的max pooling(步长为2),输出为((112 - 3+1)/2)+1=56,即56x56x64,再进行ReLU操作


4.1.2 Conv 3×3


 使用3x3的卷积核(滑动步长为1,padding为1),192通道,输出为56x56x192,卷积后进行ReLU操作


 经过3x3的max pooling(步长为2),输出为((56 - 3+1)/2)+1=28,即28x28x192,再进行ReLU操作


4.1.3 Inception 3a层


 分为四个分支,采用不同尺度的卷积核来进行处理


1.64个1x1的卷积核,然后RuLU,输出28x28x64


2.96个1x1的卷积核,作为3x3卷积核之前的降维,变成28x28x96,然后进行ReLU计算,再进行128个3x3的卷积(padding为1),输出28x28x128


3.16个1x1的卷积核,作为5x5卷积核之前的降维,变成28x28x16,进行ReLU计算后,再进行32个5x5的卷积(padding为2),输出28x28x32


4.pool层,使用3x3的核(padding为1),输出28x28x192,然后进行32个1x1的卷积,输出28x28x32。


 将四个结果进行连接,对这四部分输出结果的第三维并联,即64+128+32+32=256,最终输出28x28x256


4.1.4 Inception 3b层


1.128个1x1的卷积核,然后RuLU,输出28x28x128


2.128个1x1的卷积核,作为3x3卷积核之前的降维,变成28x28x128,进行ReLU,再进行192个3x3的卷积(padding为1),输出28x28x192


3.32个1x1的卷积核,作为5x5卷积核之前的降维,变成28x28x32,进行ReLU计算后,再进行96个5x5的卷积(padding为2),输出28x28x96


4.pool层,使用3x3的核(padding为1),输出28x28x256,然后进行64个1x1的卷积,输出28x28x64。


 将四个结果进行连接,对这四部分输出结果的第三维并联,即128+192+96+64=480,最终输出输出为28x28x480


 第四层(4a,4b,4c,4d,4e)、第五层(5a,5b)……,与3a、3b类似,在此就不再重复。


4.2 Inception模块


 首先得说一下Szegedy发明Inception Architectur的动机,他估计是在某天阅读了Provable Bounds for Learning Some Deep Representations这篇论文,又结合自己多年来的经验,发现传统的提高网络精度的方法(扩大网络规模或增大训练数据集)不可靠,而想从本质上提高网络性能,就得用sparsely connected architectures,即“稀疏连接结构”。


 我自己对“稀疏连接结构”的理解是这样的,用尽可能的“小”、“分散”的可堆叠的网络结构,去学习复杂的分类任务,怎么体现“小”、“分散”呢?如下图:


c997c4719e1d4c3da1b3146fbd7daed7.png


 原来造神经网络,都是一条线下来,比如AlexNet、VGG等网络,而IA是“分叉-汇聚”型网络,也就是说在一层网络中存在多个不同尺度的kernels,卷积完毕后再汇聚。汇聚就是简单的在kernel维度把矩阵concatenate起来。但是这么做有一个问题,会产生“维度爆炸”,也就是说假如1x1卷积、3x3卷积、5x5卷积都有256个kernels,加上pool的kernels(假定为256),经过concat操作,最终的kernels是256×4=1024个kernels!这没法接受啊!如果多层IA叠加起来,那kernels的数量岂不上天!!于是Szegedy就改进了一下也就是Inception V1,如下图:


d6c70e4858f44f628e6bc1b9a762bf69.png


 Inception V1加入了kernels数量控制方式,就是那些1×1的卷积层,这些1×1的卷积层输出kernels会比上一层要少,其实就是多了三个1×1的卷积层,这三个卷积层起到了降维的作用。这样即便在经过concat以后,总kernels数量不会增加太多。另外,这些1×1的卷积层还增加了网络的非线性程度。


1×1如何起到降维的作用?


4cb70786e1b84b09957dc9436750b818.png


 如果有一个特征矩阵是channels是512,如果不使用1×1的卷积核,直接使用64个5×5的卷积核进行卷积的话,那么总参数为5×5×512×64=819200,如果使用24个1×1卷积核进行降维,再使用64个5×5的卷积核进行卷积,则所需要的参数就会变为50688,在上图b中加入1×1的卷积结构其目的就是为了减小特征矩阵的深度从而减小卷积参数。


为什么Inception Architecture可以有更好的性能呢?


 它拥有多个不同尺度的kernels,每一个尺度的kernel会学习不同的特征,把这些不同kernels学习到的特征汇聚给下一层,能够更好的实现全方位的学习。


259101fac34c4138ab4f524e6a7e60ee.png


4.3 取消全连接层


 首先看一下GoogLeNet与VGGNet的模型参数对比


c463c53f7d854572860c0eb0639e63ab.png


 VGG网络的参数那么多?就是因为它在最后有两个4096的全连层!为了压缩GoogLeNet的网络参数,他把全连层取消了!GoogLeNet网络详细配置如下:


4250049fa04044a4b487e332bb0eb871.png


d44fc90100a34d39a96d69423f522787.png


 网络的最后几层是AveragePool、Dropout、Liner和Softmax。可能是全连层参数太多,网络深度增加了以后,难以接受吧。但是去年来自谷歌大脑的研究团队在网络架构设计方面挖出新坑,提出 MLP-Mixer ,这是一个纯 MLP 构建的视觉架构。该架构无需卷积、注意力机制,仅需 MLP,在 ImageNet 数据集上就实现了媲美 CNN 和 ViT 的性能表现。所以说神经网络是个玄学~


4.4 辅助分类器


 原因——虽然ReLU单元能够一定程度解决梯度消失问题,但是并不能完全解决深层网络难以训练的问题。离输出远的层就不如靠近输出的层训练得好。

 结果——让低层的卷积层学习到的特征也有很好的区分能力,从而让网络更好地被训练,而且低层的卷积层学到了好的特征也能加速整个网络的收敛。


 当随着网络深度加深是,梯度消失是所有深层网络的通病,往往训练到最后,网络最开始的几层就“训不动了”!于是Szegedy加入了Auxiliary Classifiers(简称AC),用于辅助训练,加速网络收敛。这两个AC在训练的时候也跟着学习,同时把自己学习到的梯度反馈给网络,算上网络最后一层的梯度反馈,GoogLeNet一共有3个“梯度提供商”,它确实提高了网络收敛的速度,因为梯度变大了。但是,GoogLeNet在做预测的时候AC是要被摘掉的。


84aedfaeb22d447983916fde0aee57c3.png


5. 思考


5.1 平均池化向量化与直接展开向量化有什么区别?


 ➢ 特征响应图上每个位置的值反应了图像对应位置的结构与卷积核记录的语义结构的相似程度。

 ➢ 平均池化丢失了语义结构的空间位置信息。

 ➢ 忽略语义结构的位置信息,有助于提升卷积层提取到的特征的平移不变性。


5.2 利用1x1卷积进行压缩会损失信息吗?


1d5eaea8e67e4cb0991a5e61fd8de7fe.png


 如图,把一个64维的向量压缩成32维的向量,位置A的这个64维向量是一个非常稀疏向量,利用1x1卷积进行非线性压缩通常不会损失信息。


6.GoogLeNet相关论文及下载地址

[v1] Going Deeper withConvolutions, 6.67% test error,2014.9

[v2] Batch Normalization:Accelerating Deep Network Training by Reducing Internal Covariate Shift, 4.8% test error,2015.2


[v3] Rethinking theInception Architecture for Computer Vision, 3.5%test error,2015.12


[v4] Inception-v4,Inception-ResNet and the Impact of Residual Connections on Learning, 3.08% test error,2016.2

目录
相关文章
|
8天前
|
监控 安全 网络安全
深入解析PDCERF:网络安全应急响应的六阶段方法
PDCERF是网络安全应急响应的六阶段方法,涵盖准备、检测、抑制、根除、恢复和跟进。本文详细解析各阶段目标与操作步骤,并附图例,助读者理解与应用,提升组织应对安全事件的能力。
158 89
|
8天前
|
机器学习/深度学习 传感器 人工智能
穹彻智能-上交大最新Nature子刊速递:解析深度学习驱动的视触觉动态重建方案
上海交大研究团队在Nature子刊发表论文,提出基于深度学习的视触觉动态重建方案,结合高密度可拉伸触觉手套与视觉-触觉联合学习框架,实现手部与物体间力量型交互的实时捕捉和重建。该方案包含1152个触觉感知单元,通过应变干扰抑制方法提高测量准确性,平均重建误差仅1.8厘米。实验结果显示,其在物体重建的准确性和鲁棒性方面优于现有方法,为虚拟现实、远程医疗等领域带来新突破。
44 32
|
1月前
|
机器学习/深度学习 人工智能 算法
深入解析图神经网络:Graph Transformer的算法基础与工程实践
Graph Transformer是一种结合了Transformer自注意力机制与图神经网络(GNNs)特点的神经网络模型,专为处理图结构数据而设计。它通过改进的数据表示方法、自注意力机制、拉普拉斯位置编码、消息传递与聚合机制等核心技术,实现了对图中节点间关系信息的高效处理及长程依赖关系的捕捉,显著提升了图相关任务的性能。本文详细解析了Graph Transformer的技术原理、实现细节及应用场景,并通过图书推荐系统的实例,展示了其在实际问题解决中的强大能力。
231 30
|
1月前
|
网络协议
TCP报文格式全解析:网络小白变高手的必读指南
本文深入解析TCP报文格式,涵盖源端口、目的端口、序号、确认序号、首部长度、标志字段、窗口大小、检验和、紧急指针及选项字段。每个字段的作用和意义详尽说明,帮助理解TCP协议如何确保可靠的数据传输,是互联网通信的基石。通过学习这些内容,读者可以更好地掌握TCP的工作原理及其在网络中的应用。
|
1月前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
112 3
|
1月前
|
存储 监控 网络协议
一次读懂网络分层:应用层到物理层全解析
网络模型分为五层结构,从应用层到物理层逐层解析。应用层提供HTTP、SMTP、DNS等常见协议;传输层通过TCP和UDP确保数据可靠或高效传输;网络层利用IP和路由器实现跨网数据包路由;数据链路层通过MAC地址管理局域网设备;物理层负责比特流的物理传输。各层协同工作,使网络通信得以实现。
|
1月前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如"How are you"、"I am fine"、"I love you"等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
1月前
|
SQL 安全 算法
网络安全之盾:漏洞防御与加密技术解析
在数字时代的浪潮中,网络安全和信息安全成为维护个人隐私和企业资产的重要防线。本文将深入探讨网络安全的薄弱环节—漏洞,并分析如何通过加密技术来加固这道防线。文章还将分享提升安全意识的重要性,以预防潜在的网络威胁,确保数据的安全与隐私。
81 2
|
1月前
|
机器学习/深度学习 Serverless 索引
分类网络中one-hot编码的作用
在分类任务中,使用神经网络时,通常需要将类别标签转换为一种合适的输入格式。这时候,one-hot编码(one-hot encoding)是一种常见且有效的方法。one-hot编码将类别标签表示为向量形式,其中只有一个元素为1,其他元素为0。
56 2
|
2月前
|
安全 算法 网络安全
网络安全的盾牌与剑:漏洞防御与加密技术深度解析
在数字信息的海洋中,网络安全是航行者不可或缺的指南针。本文将深入探讨网络安全的两大支柱——漏洞防御和加密技术,揭示它们如何共同构筑起信息时代的安全屏障。从最新的网络攻击手段到防御策略,再到加密技术的奥秘,我们将一起揭开网络安全的神秘面纱,理解其背后的科学原理,并掌握保护个人和企业数据的关键技能。
100 3

热门文章

最新文章

推荐镜像

更多