GoogLeNet网络系列解读

2023-11-17

一、Inception V1

Inception Module是GoogLeNet的核心组成单元。结构如下图:
在这里插入图片描述

Inception Module基本组成结构有四个成分。11卷积,33卷积,55卷积,33最大池化。最后对四个成分运算结果进行通道上组合。这就是Inception Module的核心思想。通过多个卷积核提取图像不同尺度的信息,最后进行融合,可以得到图像更好的表征。
1x1的卷积核作用
1x1卷积的主要目的是为了减少维度,还用于修正线性激活(ReLU)。比如,上一层的输出为100x100x128,经过具有256个通道的5x5卷积层之后(stride=1,pad=2),输出数据为100x100x256,其中,卷积层的参数为128x5x5x256= 819200。而假如上一层输出先经过具有32个通道的1x1卷积层,再经过具有256个输出的5x5卷积层,那么输出数据仍为为100x100x256,但卷积参数量已经减少为128x1x1x32 + 32x5x5x256= 204800,大约减少了4倍。
GoogLeNet的网络结构如下(共22层):
在这里插入图片描述

GoogLeNet网络结构明细表解析如下:
0、输入
原始输入图像为224x224x3,且都进行了零均值化的预处理操作(图像每个像素减去均值)。
1、第一层(卷积层)
使用7x7的卷积核(滑动步长2,padding为3),64通道,输出为112x112x64,卷积后进行ReLU操作
经过3x3的max pooling(步长为2),输出为((112 - 3+1)/2)+1=56,即56x56x64,再进行ReLU操作
2、第二层(卷积层)
使用3x3的卷积核(滑动步长为1,padding为1),192通道,输出为56x56x192,卷积后进行ReLU操作
经过3x3的max pooling(步长为2),输出为((56 - 3+1)/2)+1=28,即28x28x192,再进行ReLU操作
3a、第三层(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
3b、第三层(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,最终输出输出为28x28x4

二、Inception V2

Inception V2和Inception V3的改进,主要是基于V3论文中提到的四个原则:
1、避免表示瓶颈,尤其是在网络的前面。一般来说,特征图从输入到输出应该缓慢减小。
2、高维度特征在网络局部处理更加容易。考虑到更多的耦合特征,在卷积网络中增加非线性。可以让网络训练更快。
3、空间聚合可以以低维度嵌入进行,这样不会影响特征的表达能力。如,在进行大尺度卷积之前,先对输入进行降维。
4、平衡网络的宽度和深度。增加宽度和深度都会带来性能上的提升,两者同时增加带来了并行提升,但是要考虑计算资源的合理分配。
⑴ 使用BN层,将每一层的输出都规范化到一个N(0,1)的正态分布,提高网络收敛速度。
⑵ 使用2个3x3的卷积代替梯度(特征图,下同)为35x35中的5x5的卷积,这样既可以获得相同的视野(经过2个3x3卷积得到的特征图大小等于1个5x5卷积得到的特征图),还具有更少的参数,还间接增加了网络的深度,如下图。(基于原则3)
在这里插入图片描述

三、Inception V3

Inception V3一个最重要的改进是分解(Factorization),将7x7分解成两个一维的卷积(1x7,7x1),3x3也是一样(1x3,3x1),这样的好处,既可以加速计算,又可以将1个卷积拆成2个卷积,使得网络深度进一步增加,增加了网络的非线性(每增加一层都要进行ReLU)。另外,网络输入从224x224变为了299x299。

四、Inception V4

Inception-v4网络,对于Inception块的每个网格大小进行了统一。
下图是Inception-v4的结构:所有图中没有标记“V”的卷积使用same的填充原则,即其输出网格与输入的尺寸正好匹配。使用“V”标记的卷积使用valid的填充原则,意即每个单元输入块全部包含在前几层中,同时输出激活图(output activation map)的网格尺寸也相应会减少。
在这里插入图片描述

Stem模块为:
在这里插入图片描述

Inception V4主要利用残差连接(Residual Connection)来改进V3结构,得到Inception-ResNet-v1,Inception-ResNet-v2,Inception-v4网络。ResNet的残差结构如下:
在这里插入图片描述

Inception-Resnet-v1
Inception-Resnet-v1基本模块:
在这里插入图片描述

  1. Inception module每个分支都没有使用pooling;
  2. 每个Inception module最后都使用了一个1x1的卷积(linear activation),作用是保证identity部分和Inception部分输出特征维度相同,这样才能保证两部分特征能够相加。
    Inception-Resnet-v1网络结构(左),右图为Inception-Resnet-v1的Stem模块:
    在这里插入图片描述

Inception-Resnet-v2
Inception-Resnet-v2基本模块:

Inception-Resnet-v2网络结构 :
Inception-Resnet-v2网络结构同Inception-Resnet-v1,Stem模块同Inception v4

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

GoogLeNet网络系列解读 的相关文章

随机推荐

  • window.history.go(-1)和window.location.go(-1)的区别

    为什么80 的码农都做不了架构师 gt gt gt window history go 1 是返回上一页 window location go 1 是刷新上一页 弹出子页面
  • 安装redis 管理工具、redis扩展服务

    1 查看php 的版本 还有这种方式 在网站根目录下新建一个简单的phpinfo文件 输入phpinfo函数 在浏览器中打开 2 PHP 7 3 4 安装 Redis 4 0 Windows系统 直接在浏览器中搜索下载 Redis 4 0
  • svg怎么转换成png格式?

    svg怎么转换成png格式 在我们日常的工作和学习当中 会使用各种格式的图片 在使用的过程中 我们会发现每种格式的图片所具备的特点是完全不同的 像svg就是一种矢量图 一系列由线连接的点的实体 一般在用在图像 文字以及标志设计等场景 从它的
  • 按键精准控制步进电机起保停,正反转(Arduino+TB6600驱动器)

    精准控制步进电机起保停 正反转 Arduino TB6600驱动器 步进电机和驱动器相关的资料 https pan baidu com s 1udb4MyEOXk4CTO7TKRHj6w 提取码 fuea 步进电机 TB6600驱动器 接线
  • 数据准备(data preparation)

    数据预处理及数据准备 提到数据预处理 首先不得不考虑到pandas库 链接pandas 文章目录 数据预处理及数据准备 数据准备前置知识 数据处理步骤 数据预处理实战 二 使用步骤 1 读入数据 创建一个关于所有变量的分散矩阵 数据准备前置
  • 常用函数和代码

    1 加载数据函数 数据保存 import numpy as np import dill dill dump session GAT pkl dill load session t20 pkl save path data Enron gr
  • pytest测试报告Allure - 动态生成标题生成功能、添加用例失败截图

    一 动态生成标题 默认 allure 报告上的测试用例标题不设置就是用例名称 其可读性不高 当结合 pytest mark parametrize 参数化完成数据驱动时 如标题写死 其可读性也不高 那如果希望标题可以动态的生成 采取的方案是
  • 赋值、浅拷贝与深拷贝

    一 数据类型 数据分为基本数据类型 String Number Boolean Null Undefined Symbol 和引用数据类型 基本数据类型 基本数据类型存储在栈内存中 引用数据类型 存储的是该对象在栈中引用 即引用地址 真实的
  • csv数据筛选 matlab_在matlab中从CSV文件中读取特定列

    I am trying to read a CSV file in matlab I just want to read the second column but the code below prints out everything
  • Unity集成Leap Motion

    转载自 http www cocoachina com game 20150716 12625 html 演示视频文章最后 如果你已经熟悉编程的概念 理解并在C 语言方面有一定的经验 并且对面向对象编程思想和设计概念有所熟悉 如果你了解3D
  • 【Python】pd.read_excel应用

    第一次运行必须带上定义 import pandas as pd 故意报错展现 pd read excel 1 read excel io sheet name header names index col parse cols usecol
  • 毕业设计 树莓派视觉远程监控遥控小车设计与实现 - 嵌入式 物联网

    文章目录 0 前言 1 简介 2 实现效果 3 树莓派视觉环境搭建 3 1 树莓派安装系统 3 2 设置静态网络 3 3 更换镜像源 3 4 安装中文输入法 3 5 电脑控制树莓派 3 6 OpenCV3 4 1安装 7 设置通用 UART
  • 解决Avalonia UI在一些Linux(UOS、Deepin等)上,窗口启动不居中的问题

    目录 问题描述 解决方式 原因分析 问题描述 使用Avalonia UI开发跨平台桌面应用 设置了窗口启动位置 如下 WindowStartupLocation CenterScreen 程序发布后 在Windows上运行正常 启动位置为屏
  • numpy中数据常用的保存与读取方法

    转自 http www cnblogs com wushaogui p 9142019 html NumPy提供了多种文件操作函数方便我们存取数组内容 文件存取的格式 二进制和文本 二进制格式的文件又分为NumPy专用的格式化二进制类型和无
  • c语言,Easyx实现贪吃蛇

    一 头文件包含 include
  • 深入理解数据结构——关键路径算法AOE

    include
  • Java基础之《mq》

    一 你的项目中有哪些地方用到mq 1 使用mq异步发送优惠券 2 使用mq异步发送短信 3 使用mq异步扣库存 秒杀 总之将执行比较耗时的代码操作 交给mq异步实现接口 4 贷款项目 使用mq异步审核贷款金额 用户提交自己的信息 后台根据用
  • qt中十进制转换为十六进制和二进制字符串,以及二进制字符串转十进制,十六进制字符串

    概述 直接上代码 记录一下 方便日后使用 示例一 将十进制转换为二进制和十六进制字符串 int num 23 QString str QString number num 16 转换为十六进制 str QString number num
  • 动态规划练习一 14:怪盗基德的滑翔翼

    描述 怪盗基德是一个充满传奇色彩的怪盗 专门以珠宝为目标的超级盗窃犯 而他最为突出的地方 就是他每次都能逃脱中村警部的重重围堵 而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼 有一天 怪盗基德像往常一样偷走了一颗珍贵的钻石 不料却被柯
  • GoogLeNet网络系列解读

    一 Inception V1 Inception Module是GoogLeNet的核心组成单元 结构如下图 Inception Module基本组成结构有四个成分 11卷积 33卷积 55卷积 33最大池化 最后对四个成分运算结果进行通道