深度神经网络中的Inception模块介绍

2023-11-11

深度神经网络(Deep Neural Networks, DNN)或深度卷积网络中的Inception模块是由Google的Christian Szegedy等人提出,包括Inception-v1、Inception-v2、Inception-v3、Inception-v4及Inception-ResNet系列。每个版本均是对其前一个版本的迭代改进。另外,依赖于你的数据,低版本可能实际上效果更好。这里是整理的Inception的v1、v2、v3、v4内容。

对于深度神经网络来说,提升网络性能最直接的办法就是增加网络深度和宽度(网络的深度指的是网络的层数,宽度指的是每层的通道数),这就意味着网络的参数数量会非常庞大。但是,海量的参数很容易产生过拟合,同时也会大大增加计算量。2014年,受Network in Network和稀疏网络的启发,Google公司提出了一个深度卷积神经网络来解决这些问题。这个名叫GoogLeNet的网络获得了ILSVRC2014的冠军。这个模型的设计理念认为解决上述两个缺点的根本方法是将全连接甚至一般的卷积结构都转化为稀疏连接。这样做的理由是在现实中生物神经系统的连接也是稀疏的,另外一方面也有许多研究证明了对于大规模的稀疏神经网络,可以通过分析激活值的统计特性和对高度相关的输出进行聚类来逐层构建出一个最优网络。以上这些表明了庞大臃肿的稀疏网络可以被简化并且性能不会受到太多影响。在早期深度学习的一些研究中,为了使打破网络对称性和提高学习能力,很多网络都采用了随机稀疏连接的做法。但是,计算机对非均匀稀疏数据的计算效率很差。于是现在需要一种方法,既能保持网络结构的稀疏性,又能使网络利用到密集矩阵的高计算性能。许多研究已经表明可以将稀疏矩阵聚类为较为密集的子矩阵来提高计算性能,据此GoogLeNet网络采用了Inception-v1模块来实现此目的。GoogLeNet网络有时又称为Inception-v1网络,即GoogLeNet网络中使用的是Inception-v1模块。

Inception模块的核心思想就是将不同的卷积层通过并联的方式结合在一起,经过不同卷积层处理的结果矩阵在深度这个维度拼接起来,形成一个更深的矩阵。Inception模块可以反复叠堆形成更大的网络,它可以对网络的深度和宽度进行高效的扩充,在提升深度学习网络准确率的同时防止过拟合现象的发生。Inception模块的优点是可以对尺寸较大的矩阵先进行降维处理的同时,在不同尺寸上对视觉信息进行聚合,方便从不同尺度对特征进行提取。

Inception-v1论文名为《Going deeper with convolutions》,论文见:https://arxiv.org/pdf/1409.4842.pdf 。此模块使用了3种不同尺寸的卷积核(1*1、3*3、5*5)和1个最大池化核(3*3),增加了网络对不同尺度的适应性,论文截图如下所示:当感兴趣区域分布更全局时,倾向选择一个较大的核;当感兴趣区域分布的更局部时,倾向选择一个较小的核。

上图为Inception模块的原始版本:Inception模块中包含卷积操作,但是不同于传统卷积神经网络,此模块中可以设置多个通路,每个通路可以是不同的操作,相同的操作也可以设置不同的kernel size和stride。不同的卷积尺寸提供了不同的感受野,可以做不同级别上的特征提取,池化操作本身有提取特征的作用,而且因为没有参数不会产生过拟合,所以池化操作也作为此模块的一个通路。

此模块采取了几个措施来使密集的成分能够近似最优的稀疏结构。首先,在同一层中采用了不同大小的卷积核来提取上一层的特征,并在最后进行拼接。这样意味着在同一层中网络就能从感受不同大小的图像局部区域,并对不同尺度的特征进行融合。卷积核大小普遍采用1、3和5,再设定卷积步长为1,只要图像的填充值(padding)分别设置为0、1、2,那么卷积之后便可以得到相同维度的特征,之后便可以将这些特征值直接拼接在一起。此外,由于池化层在很多网络中都起到相当大的作用,因此在Inception模块中也嵌入了这一操作。最后由于神经网络随着深度的增加所提取的特征也逐渐抽象,每个特征涉及到更大的感受区域,因此在网络的深层应该逐渐增加大尺寸卷积核的比例。

上图为降维(dimension reductions)后的最终Inception-v1版本:优点:(1).同时使用不同尺寸的卷积核可以提取到种类更加丰富的特征;(2).使用稀疏矩阵分解为密集矩阵计算的原理,增加了收敛速度。

由于5*5的卷积核仍然会带来巨大的计算量,考虑到这一点,此模块加入了1*1卷积核来进行降维即限制输入通道数量。

Inception-v1中使用了多个1*1卷积核,其作用:(1).在大小相同的感受野上叠加更多的卷积核,可以让模型学习到更加丰富的特征。传统的卷积层的输入数据只和一种尺寸的卷积核进行运算,而Inception-v1结构是Network in Network(NIN),就是先进行一次普通的卷积运算(比如5*5),经过激活函数(比如ReLU)输出之后,然后再进行一次1*1的卷积运算,这个后面也跟着一个激活函数。1*1的卷积操作可以理解为feature maps个神经元都进行了一个全连接运算。(2).使用1*1的卷积核可以对模型进行降维,减少运算量。当一个卷积层输入了很多feature maps的时候,这个时候进行卷积运算计算量会非常大,如果先对输入进行降维操作,feature maps减少之后再进行卷积运算,运算量会大幅减少。

Inception模块中,1*1、3*3、5*5的卷积核并不是固定的,可以根据实验进行调整。

下图来自于https://blog.csdn.net/fengbingchun/article/details/80786455 ,可以形象地说明Inception-v1模块内是如何能够拼接在一起的:

Inception-v2、Inception-v3论文名为《Rethinking the inception architecture for computer vision》,论文见:https://arxiv.org/pdf/1512.00567.pdf 。 此模块在Inception-v1的基础上进行了改进。

Inception-v2:有三种形式,论文截图如下所示:

Figure 5:参考VGG,用两个3*3的卷积核代替5*5的大卷积核,这样在保持相同感受野的同时减少了参数,而且加强了非线性表达能力,还可以提升速度。

Figure 6:引入了factorization into asymmetric convolutions的思想,就是用两个1*n和n*1的卷积核替换一个较大的n*n卷积核。这种分解方法减少了大量参数,并且可以提高运算速度,减轻过拟合,同时给模型增加了一层非线性结构,提升了模型的表达能力,让模型可以处理更丰富的空间特征,增加了特征的多样性。但经过试验发现,在网络的前期用这种分解效果并不好,而且这种分解在中等大小的特征图上使用效果最好,如n=7。

Figure 7:模块中的滤波器组(filter banks)被扩展(使得更宽而不是更深),以消除representational bottleneck(降低representational bottleneck:其思路是,当卷积不会大幅改变输入尺寸,神经网络的性能会更好。减少维度会造成信息大量损失,也就是所说的 representational bottleneck)。如果模块变得更深,尺度将会过度缩小,从而导致信息的丢失。较适合于高维特征。

Inception-v2还提出了Batch Normalization(BN)方法。深度神经网络的训练过程十分复杂,如果前面几层发生微小的变化,这个微小的变化经过后面几层的传递会被放大。神经网络在训练的时候参数会不断更新,前面层训练参数的变化会导致后面层的输入数据分布发生改变。网络中间层在训练过程中数据分布发生改变,这种现象称之为”Internal Covariate Shift”。BN算法就是为了解决这个现象被提出来的。BN算法的核心原理就是:在网络的每一层的前面,插入一个归一化层,也就是上一层的输出数据先经过归一化处理,然后再输入到下一层,但是这个归一化层不是简单的归一化层,而是可以学习并且有参数的归一化层。如果只是使用简单的归一化,就是对网络某一层的输出数据进行归一化处理,然后输入到下一层神经网络,这样会对这一层神经网络学习到的特征造成影响。BN算法对每一个经过激活函数的值都引入了可以学习的参数γ、β,这两个参数可以对经过归一化处理后的输入进行缩放和平移。

Inception-v3:针对Inception-v2的升级,增加了以下内容:(1).RMSProp优化器。(2).分解为7*7卷积。(3).辅助分类BatchNorm。(4).标签平滑(Label Smoothing,添加到损失公式中的正则化组件类型,防止网络过于准确,防止过度拟合)。

Inception-v4、Inception-ResNet论文名为《Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning》,论文见:https://arxiv.org/pdf/1602.07261.pdf

Inception-v4:将原来卷积、池化的顺次连接(网络的前几层)替换为stem模块,即Inception模块之前执行的最初一组操作,来获得更深的网络结构,论文截图如下所示为stem模块结构:

Inception-v4有三个主要的Inception模块,分别为A、B、C,论文截图如下所示:依次为Inception-A、Inception-B、Inception-C

Inception-v4采用专门的Reduction Blocks用于更改网络的宽度和高度。论文截图如下所示:

上图为Reduction Block A,将35*35尺寸缩小至17*17。

上图为Reduction Block B,将17*17尺寸缩小至8*8。

Inception-v4的整个网络布局,论文截图如下所示:

注:以上所有的内容的整理均来自网络,除参考原始论文外,还主要参考:

1. https://medium.com/m/global-identity?redirectUrl=https%3A%2F%2Ftowardsdatascience.com%2Fa-simple-guide-to-the-versions-of-the-inception-network-7fc52b863202

2. https://cloud.tencent.com/developer/article/1166837

3. 《基于卷积神经网络的多目标定位研究》,2019,硕论,长安大学

4. 《基于深度学习的细粒度图像识别研究》,2018,硕论,北京邮电大学

GitHubhttps://github.com/fengbingchun/NN_Test

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

深度神经网络中的Inception模块介绍 的相关文章

  • 如何高速安装jetson-inference,一步到位,避免踩坑!

    踩了很长时间的坑 终于弄明白怎么高速下载jetson inference 来源 安装jetson inference 自动下载模型 满速下载起飞 解决下载模型被墙问题 奈流云何的博客 CSDN博客 需要将Github的仓库复制到Gitee上
  • Bug解决:ModuleNotFoundError: No module named ‘taming‘

    from taming modules vqvae quantize import VectorQuantizer2 as VectorQuantizer ModuleNotFoundError No module named taming
  • 图解NCHW与NHWC数据格式

    图解NCHW与NHWC数据格式 田海立 CSDN CSDN博客 nchw 流行的深度学习框架中有不同的数据格式 典型的有NCHW和NHWC格式 本文从逻辑表达和物理存储角度用图的方式来理解这两种数据格式 最后以RGB图像为例来加深NHWC和
  • 图神经网络(1):图卷积神经网络GCN ICLR 2017

    图卷积神经网络GCN ICLR 2017 是曾经在美国加州大学UCI教授 现在荷兰阿姆斯特丹大学教授 Max Welling团队的大作 Max是图灵奖获得者Hinton的弟子 第一作者T N Kipf已经成为这个领域有名的学者和工程师 如果
  • 半监督目标检测

    有监督目标检测 拥有大规模带标签的数据 包括完整的实例级别的标注 即包含坐标和类别信息 弱监督目标检测 数据集中的标注仅包含类别信息 不包含坐标信息 如图一 b 所示 弱半监督目标检测 数据集中拥有部分实例级别的标注 大量弱标注数据 模型希
  • MLOps极致细节:4. MLFlow Projects 案例介绍(Gitee代码链接)

    MLOps极致细节 4 MLFlow Projects 案例介绍 Gitee代码链接 MLFlow Projects允许我们将代码及其依赖项打包为一个可以在其他平台上以可复制 reproducible 和可重用 reusable 的方式运行
  • 视觉注意力的循环神经网络模型

    我们观察PPT的时候 面对整个场景 不会一下子处理全部场景信息 而会有选择地分配注意力 每次关注不同的区域 然后将信息整合来得到整个的视觉印象 进而指导后面的眼球运动 将感兴趣的东西放在视野中心 每次只处理视野中的部分 忽略视野外区域 这样
  • 联邦学习 深度学习对抗攻击

    联邦学习本身 联邦学习 实际上是一种加密的分布式机器学习技术 参与各方可以在不披露底层数据和底层数据的加密 混淆 形态的前提下共建模型 如果机构之间的数据无法互通 一家企业一家机构数据量有限 或者是少数巨头公司垄断大量数据 而小公司很难获得
  • libsvm库简介及使用

    libsvm是基于支持向量机 support vector machine SVM 实现的开源库 由台湾大学林智仁 Chih Jen Lin 教授等开发 它主要用于分类 支持二分类和多分类 和回归 它的License是BSD 3 Claus
  • Tensorflow错误InvalidArgumentError see above for traceback): No OpKernel was registered to support Op

    调用tensorflow gpu运行错误 错误信息如下 2023 06 21 15 36 14 007389 I tensorflow core platform cpu feature guard cc 141 Your CPU supp
  • PyTorch torch.optim.lr_scheduler 学习率设置 调参-- CyclicLR

    torch optim lr scheduler 学习率设置 CyclicLR 学习率的参数调整是深度学习中一个非常重要的一项 Andrew NG 吴恩达 认为一般如果想调参数 第一个一般就是学习率 作者初步学习者 有错误直接提出 热烈欢迎
  • (#########优化器函数########)TensorFlow实现与优化深度神经网络

    反正是要学一些API的 不如直接从例子里面学习怎么使用API 这样同时可以复习一下一些基本的机器学习知识 但是一开始开始和以前一样 先直接讲类和常用函数用法 然后举例子 这里主要是各种优化器 以及使用 因为大多数机器学习任务就是最小化损失
  • Softmax分类和两层神经网络以及反向传播的代码推导

    发现草稿箱里还有一篇很早之前的学习笔记 希望可以帮助到有需要的童鞋 目录 序 Softmax分类器 反向传播 数据构建以及网络训练 交叉验证参数优化 序 原来都是用的c 学习的传统图像分割算法 主要学习聚类分割 水平集 图割 欢迎一起讨论学
  • 深度学习中的验证集和超参数简介

    大多数机器学习算法都有超参数 可以设置来控制算法行为 超参数的值不是通过学习算法本身学习出来的 尽管我们可以设计一个嵌套的学习过程 一个学习算法为另一个学习算法学出最优超参数 在多项式回归示例中 有一个超参数 多项式的次数 作为容量超参数
  • 深度学习中的优化算法之Adam

    之前在https blog csdn net fengbingchun article details 124909910 介绍过深度学习中的优化算法Adadelta 这里介绍下深度学习的另一种优化算法Adam 论文名字为 ADAM A M
  • 深度学习系统为什么容易受到对抗样本的欺骗?

    转自 https zhuanlan zhihu com p 89665397 本文作者 kurffzhou 腾讯 TEG 安全工程师 最近 Nature发表了一篇关于深度学习系统被欺骗的新闻文章 该文指出了对抗样本存在的广泛性和深度学习的脆
  • PyTorch训练简单的全连接神经网络:手写数字识别

    文章目录 pytorch 神经网络训练demo 输出结果 来源 pytorch 神经网络训练demo 数据集 MNIST 该数据集的内容是手写数字识别 其分为两部分 分别含有60000张训练图片和10000张测试图片 神经网络 全连接网络
  • - UnitBox An Advanced Object Detection Network,arxiv 16.08

    UnitBox An Advanced Object Detection Network arxiv 16 08 download 该论文提出了一种新的loss function IoU loss 这点比较有意思 也容易复现 论文分析了fa
  • 深度学习中的优化算法之AdaGrad

    之前在https blog csdn net fengbingchun article details 123955067 介绍过SGD Mini Batch Gradient Descent MBGD 有时提到SGD的时候 其实指的是MB
  • Anchor是什么?

    1 选择性搜索 Selective Search 先介绍一下传统的人脸识别算法 是怎么检测出图片中的人脸的 以下图为例 如果我们要检测图中小女孩的人脸位置 一个比较简单暴力的方法就是滑窗 我们使用不同大小 不同长宽比的候选框在整幅图像上进行

随机推荐

  • 《解构领域驱动设计》- 领域驱动设计统一过程

    更多内容关注微信公众号 fullstack888 领域驱动设计的核心是模型驱动设计 而模型驱动设计的核心又是领域模型 领域模型必须在统一语言的指导下获得 领域模型又可进一步细分为核心子领域 通用子领域和支撑子域 系统上下文 限界上下文 分层
  • python 中字典{ }的嵌套

    在机器学习中会用字典的嵌套来存储决策树的信息 对绘制树形图有很大的作用 其中嵌套字典的生成是一个递归的过程 如下所示 gt gt gt s a 0 no 1 flippers 0 no 1 maybe b 构造字典 gt gt gt s a
  • VUE element-ui 之table表格导出Excel(自定义表头+自定义导出字段内容)

    导出excel自定义表头及自定义字段步骤 1 安装依赖 npm install save xlsx file saver npm install D script loader 2 下载Blob js export2Excel js 百度网
  • 在BSN武汉链上部署solidity智能合约(转载)

    分享一篇不错的关于武汉链的入门技术文章 原文连接 在BSN武汉链上部署solidity智能合约 登链社区 区块链技术社区 在BSN武汉链上部署solidity智能合约 BSN简介区块链服务网络 Blockchain basedService
  • 【STM32】使用单片机DAC产生噪声群

    前期准备 软件平台 基于KEIL的HAL库开发 硬件平台 正点原子STM32F4探索者开发板 STM32F4 DAC 简介 STM32F4 的 DAC 模块 数字 模拟转换模块 是 12 位数字输入 电压输出型的 DAC DAC 可以配置为
  • Linux系统调用

    一 概述 现代操作系统中 内核提供了用户进程与内核进行交互的一组接口 这些接口让应用程序受限地访问硬件设备 提供了创建新进程并与已有进程进行通信的机制 也提供了申请操作系统其它资源的能力 这些接口就称为系统调用接口 Linux系统也提供了类
  • 7.代理模式

    1 UML 2 代码 include
  • Onvif协议学习:5、设备搜索

    Onvif协议学习 5 设备搜索 文章目录 Onvif协议学习 5 设备搜索 1 前言 2 WS Discovery原理 3 单播 多播 组播 和广播的区别 4 设备搜索 1 搜索IPC 方式1 2 搜索IPC 方式2 原文链接 https
  • Spring Cloud gateway 六 Sentinel nacos存储动态刷新

    微服务当前这么火爆的程度 如果不能学会一种微服务框架技术 怎么能升职加薪 增加简历的筹码 spring cloud 和 Dubbo 需要单独学习 说没有时间 没有精力 要学俩个框架 而Spring Cloud alibaba只需要你学会一个
  • 《区块链开发实战:Hyperledger Fabric关键技术与案例分析》读书笔记

    区块链技术被认为是轮子 铁轨 电力 互联网之后 又一个具备颠覆性的核心技术 区块链改变的将是价值传递的方式 将解决人类社会诞生以来一直在思考的问题 如何获取未知的信任 随着业界对比特币系统技术架构的深入了解 人们发现这些技术除了应用在比特币
  • 【Try to Hack】宽字节注入

    博客主页 开心星人的博客主页 系列专栏 Try to Hack 欢迎关注 点赞 收藏 留言 首发时间 2022年7月4日 作者水平很有限 如果发现错误 还望告知 感谢 导航小助手 编码 魔术引号 宽字节注入产生原因 指定表名时单引号问题 数
  • JS逆向——一个新的视频爬虫

    仅限技术交流和学习记录 严禁用于任何商业用途 否则后果自负 侵删 个人觉得坑还挺多 但难度不算大的一篇js逆向 来吧 先分析 起初解析pc网页端 感觉有点难度 然后就转到移动网页端了 其实是一模一样的 除了接口和接口非加密参数不一样 所以没
  • html页面刷新或关闭前的操作

    页面会触发beforeunload或者pagehide事件 1 代码实现 const listenerCallbacks new Set const listenerCenter add listener listenerCallbacks
  • python unpack infinity,Python-输入包含NaN、infinity或对于dtype(“float64”)来说太大的值...

    我是新来的Python 我正在尝试使用sklearn cluster 这是我的代码 from sklearn cluster import MiniBatchKMeans kmeans MiniBatchKMeans n clusters
  • 安装JAVA 并配置环境变量

    1 在官网下载安装包 这里选择的是Java8 选择对应版本 本人使用的windows10 x86系统 JDK1 8官网下载地址 https www oracle com java technologies downloads java8 2
  • poi 导出word工具类,支持模板内容换行

    package com sinosoft sinoep modules taskOrder common import org apache poi xwpf usermodel import java util List import j
  • Log4j详细使用教程

    林炳文Evankaka原创作品 转载请注明出处http blog csdn net evankaka 日志是应用软件中不可缺少的部分 Apache的开源项目Log4j是一个功能强大的日志组件 提供方便的日志记录 在apache网站 jaka
  • 关于设计与实现毕业设计题目

    设计与实现毕业设计题目1 10题 1 基于知识图谱构建人物关系的设计与实现 2 电子资源使用统计平台USSER的设计与实现 3 工业机器人焊缝跟踪与自动涂胶系统的设计与实现 4 初中语文微课的设计与实现研究 5 新型5G红外热成像测温系统设
  • pimpl 惯用法

    现在这里有一个名为 CSocketClient 的网络通信类 定义如下 网络通信的基础类 SocketClient h zhangyl 2017 07 11 class CSocketClient public CSocketClient
  • 深度神经网络中的Inception模块介绍

    深度神经网络 Deep Neural Networks DNN 或深度卷积网络中的Inception模块是由Google的Christian Szegedy等人提出 包括Inception v1 Inception v2 Inception