InceptionV1_V2

目录

不同大小的感受野去提取特征

经典 Inception 网络的设计思路与运行流程

背景任务:图像分类(以 CIFAR-10 数据集为例)

Inception 网络的设计思路

Inception 网络的运行流程

打个比方

多个损失函数的理解

1. 为什么需要多个损失函数?

2. 如何实现多个损失函数?

结合图片

通俗一点

流程

inception_v2相较于v1

Inception_v2 相较于 Inception_v1 的改进

1. 引入 Batch Normalization(应该叫层标准化)

2. 分解大卷积核

3. 使用 1x1 卷积进行降维

4. 优化 Inception 模块

5. 减少计算量

Inception_v2 的网络结构

通俗一点

不同大小的感受野去提取特征

多路并行训练计算多个loss多个相同重复

对于复杂网络架构神经网络来说反向传播过程中靠近输入层参数(存在梯度消失问题)靠近输出(参数震荡幅度大,或者说相对幅度较大,因为最先)

|

|

|

经典 Inception 网络的设计思路与运行流程
背景任务:图像分类(以 CIFAR-10 数据集为例)

CIFAR-10 是一个包含 10 类彩色图像的数据集,每张图像大小为 32x32。我们的任务是训练一个模型,能够准确分类这些图像。

Inception 网络的设计思路

Inception 网络的核心思想是 “多尺度特征提取”。传统的卷积网络通常在同一层只使用一种尺寸的卷积核(如 3x3 或 5x5),而 Inception 网络在同一层中并行使用多种尺寸的卷积核(如 1x1、3x3、5x5),并通过 1x1 卷积核进行降维和特征融合。这种设计可以捕捉不同尺度的特征,同时减少计算量。

1. 多尺度卷积

  • Inception 模块在同一层中并行使用:
    • 1x1 卷积:捕捉局部特征。
    • 3x3 卷积:捕捉中等范围特征。
    • 5x5 卷积:捕捉更大范围特征。
    • 最大池化:保留最显著的特征。
  • 这种设计让网络能够同时捕捉不同尺度的特征,提高特征提取的多样性。

2. 1x1 卷积降维

  • 在 3x3 和 5x5 卷积之前,使用 1x1 卷积减少通道数,降低计算量。
  • 1x1 卷积还可以增加非线性,提升模型的表达能力。

3. 特征融合

  • 将不同尺度的卷积结果在通道维度上拼接(concat),融合多尺度特征。
  • 这种融合方式让网络能够综合利用不同层次的信息。

Inception 网络的运行流程

以下是一个简化的 Inception 模块在 CIFAR-10 分类任务中的运行流程:

1. 输入层

  • 输入图像:32x32x3(CIFAR-10 的图像尺寸)。

2. 初始卷积层

  • 使用一个 7x7 卷积层提取低级特征(如边缘、颜色)。
  • 输出特征图:32x32x64。

3. Inception 模块

  • 分支 1:1x1 卷积
    • 使用 1x1 卷积提取局部特征。
    • 输出特征图:32x32x64。
  • 分支 2:3x3 卷积
    • 先使用 1x1 卷积降维,再使用 3x3 卷积提取中等范围特征。
    • 输出特征图:32x32x128。
  • 分支 3:5x5 卷积
    • 先使用 1x1 卷积降维,再使用 5x5 卷积提取更大范围特征。
    • 输出特征图:32x32x32。
  • 分支 4:最大池化
    • 使用 3x3 最大池化保留显著特征,再通过 1x1 卷积调整通道数。
    • 输出特征图:32x32x64。
  • 特征融合
    • 将四个分支的输出在通道维度上拼接。
    • 最终输出特征图:32x32x288(64+128+32+64)。

4. 重复 Inception 模块

  • 堆叠多个 Inception 模块,逐步提取更高级的特征。
  • 每个模块的输出特征图尺寸逐渐减小,通道数逐渐增加。

5. 全局平均池化

  • 使用全局平均池化将特征图压缩为固定长度的特征向量。
  • 输出特征向量:288 维。

6. 全连接层

  • 添加一个全连接层,将特征向量映射到 10 个类别(CIFAR-10 的 10 类)。
  • 使用 Softmax 激活函数输出类别概率。

打个比方

想象一下,Inception 网络就像一个 多功能的侦探团队

  • 1x1 卷积:像是一个“细节专家”,专注于捕捉图像的局部细节(如边缘、颜色)。
  • 3x3 卷积:像是一个“区域侦探”,负责分析中等范围的特征(如形状、纹理)。
  • 5x5 卷积:像是一个“全局侦探”,负责捕捉更大范围的特征(如对象整体)。
  • 最大池化:像是一个“总结专家”,负责保留最显著的特征。

这些侦探各自独立工作,然后将他们的发现(特征)汇总到一起,形成一个全面的报告(多尺度特征融合)。最后,这个报告被送到“决策层”(全连接层),由它来判断图像属于哪一类。

多个损失函数的理解
1. 为什么需要多个损失函数?
  • 梯度消失问题:在深层网络中,梯度在反向传播过程中可能会逐渐变小,导致靠近输入层的参数更新缓慢,训练效果不佳。
  • 更好的梯度传播:通过在网络的中间层添加辅助分类器,可以引入额外的损失函数,帮助梯度更好地传播到浅层,缓解梯度消失问题。
  • 正则化效果:多个损失函数可以看作一种正则化方法,防止网络过拟合。
2. 如何实现多个损失函数?
  • 辅助分类器:在网络的中间层(如 Inception 模块的某些阶段)添加一个额外的全连接层和 Softmax 层,用于计算辅助损失。
  • 总损失:将主分类器的损失和辅助分类器的损失加权求和,作为最终的总损失。

结合图片

Inception 网络的结构中可能包含以下部分:

  1. 主分类器
    1. 通过多个卷积层(如 1x1、3x3、5x5)提取特征。
    2. 使用全局平均池化或全连接层(FC)生成最终的分类结果。
    3. 计算主损失(如交叉熵损失)。
  2. 辅助分类器
    1. 在网络的中间层(如某个 Inception 模块后)添加一个辅助分类器。
    2. 辅助分类器通常包括:
      1. 一个 1x1 卷积层(用于降维)。
      2. 一个全连接层(FC)。
      3. 一个 Softmax 层(用于计算类别概率)。
    3. 计算辅助损失(如交叉熵损失)。
  3. 总损失
    1. 将主损失和辅助损失加权求和,作为最终的总损失。
    2. 公式:总损失 = 主损失 + α * 辅助损失,其中 α 是一个权重系数(通常为 0.3 或 0.5)。

通俗一点

Inception 网络比作一个 多层级的工厂生产线

  • 主分类器:是最终的质检部门,负责对成品(最终特征)进行检查,判断产品是否合格(分类是否正确)。
  • 辅助分类器:是中间环节的质检员,负责在半成品(中间特征)阶段进行检查,确保每个环节的质量。

如果在中间环节发现问题(辅助损失),工厂可以及时调整生产流程(更新网络参数),而不是等到最终环节才发现问题(主损失)。这种方式可以提高整体生产效率(训练效果),并减少次品率(过拟合)。

流程
  1. 输入图像
    1. 输入图像经过多个卷积层和 Inception 模块,提取特征。
  2. 辅助分类器 1
    1. 在某个中间层(如第 4 个 Inception 模块后)添加辅助分类器。
    2. 计算辅助损失 1。
  3. 辅助分类器 2
    1. 在另一个中间层(如第 8 个 Inception 模块后)添加辅助分类器。
    2. 计算辅助损失 2。
  4. 主分类器
    1. 在网络的最后,使用全局平均池化和全连接层生成最终分类结果。
    2. 计算主损失。
  5. 总损失
    1. 将主损失和辅助损失加权求和,作为最终的总损失。
    2. 公式:总损失 = 主损失 + 0.3 * 辅助损失 1 + 0.3 * 辅助损失 2
  6. 反向传播
    1. 根据总损失更新网络参数,优化模型。

inception网络里比较多的用交替训练或者total_loss,上面的流程是total_loss,而交替训练:先走input - loss0,再input - loss1..,最后input - loss_last,分块训练,使得前面的input(靠近输入层的数据)被更多的拟合

inception_v2相较于v1

BNbatch_normalization(批)归卷积层池化层之间加入BN

Inception_v2 相较于 Inception_v1 的改进

Inception_v2 是 Inception 系列网络的第二个版本,相较于 Inception_v1(也称为 GoogLeNet),它引入了几项重要的改进,主要集中在 减少计算量 提高特征提取能力 上。

1. 引入 Batch Normalization(应该叫标准化
  • 改进点:Inception_v2 在网络中广泛使用了 Batch Normalization(BN)。

数据分布的变化问题

在深层神经网络中,每一层的输入分布会随着训练的进行而发生变化,这种现象被称为 内部协变量偏移(Internal Covariate Shift)。具体来说:

  • 每一层的参数更新会导致其输出的分布发生变化。
  • 这种变化会传递到下一层,导致下一层的输入分布不稳定。
  • 不稳定的输入分布会使得网络的训练变得困难,尤其是深层网络。

Batch Normalization (BN) 的本质

2. 分解大卷积核
  • 改进点:将大的卷积核(如 5x5)分解为多个小的卷积核(如两个 3x3)。
  • 作用
    • 两个 3x3 卷积核的堆叠可以模拟一个 5x5 卷积核的感受野,但参数数量和计算量更少。
    • 增加了网络的非线性能力,因为每个卷积层后面都有激活函数。
  • 通俗解释
    • 就像用两个小筛子(3x3)代替一个大筛子(5x5),虽然筛子的层数增加了,但整体效率更高,筛出的东西(特征)也更精细。

3. 使用 1x1 卷积进行降维
  • 改进点:在 3x3 和 5x5 卷积之前,使用 1x1 卷积减少通道数。
  • 作用
    • 1x1 卷积可以减少特征图的通道数,从而降低计算量。
    • 同时,1x1 卷积可以增加非线性,提升模型的表达能力。
  • 通俗解释
    • 1x1 卷积就像一个“压缩器”,它先把数据压缩一下,减少不必要的部分,然后再交给后面的工人(3x3 或 5x5 卷积)处理,这样既省力又高效。

4. 优化 Inception 模块
  • 改进点:Inception_v2 对 Inception 模块进行了优化,使其更加高效。
  • 具体优化
    • 使用更多的 1x1 卷积进行降维。
    • 将 5x5 卷积分解为两个 3x3 卷积。
    • 在模块中引入 BN 层。
  • 通俗解释
    • 就像优化一个工厂的生产线,把复杂的工序拆分成更简单、更高效的步骤,同时加入质检员(BN)确保每一步的质量。

5. 减少计算量
  • 改进点:通过上述方法,Inception_v2 显著减少了计算量。
  • 作用
    • 使得网络在保持高性能的同时,计算效率更高。
    • 更适合在资源有限的环境下运行。
  • 通俗解释
    • 就像把一辆耗油的大卡车换成几辆节能的小车,虽然车多了,但整体油耗更低,运输效率更高。(连续使用小的卷积核的好处)

Inception_v2 的网络结构

简化的 Inception_v2 网络结构示例:

  1. 输入层
    1. 输入图像:224x224x3。
  2. 初始卷积层
    1. 使用 7x7 卷积层提取低级特征。
    2. 输出特征图:112x112x64。
  3. Inception 模块 1
    1. 使用 1x1 卷积降维。
    2. 使用 3x3 卷积提取特征。
    3. 使用 BN 层加速训练。
    4. 输出特征图:56x56x192。
  4. Inception 模块 2
    1. 使用 1x1 卷积降维。
    2. 使用两个 3x3 卷积代替 5x5 卷积。
    3. 使用 BN 层加速训练。
    4. 输出特征图:28x28x480。
  5. Inception 模块 3
    1. 使用 1x1 卷积降维。
    2. 使用两个 3x3 卷积代替 5x5 卷积。
    3. 使用 BN 层加速训练。
    4. 输出特征图:14x14x832。
  6. 全局平均池化层
    1. 将特征图压缩为固定长度的特征向量。
    2. 输出特征向量:1024 维。
  7. 全连接层
    1. 添加一个全连接层,将特征向量映射到类别数(如 1000 类)。
    2. 使用 Softmax 激活函数输出类别概率。

通俗一点

Inception_v2 相较于v1好比一个 升级版的工厂

  • BN 工人:确保每个环节的输入都在合理范围内,提高整体效率。
  • 小筛子(3x3 卷积):代替大筛子(5x5 卷积),既省力又高效。
  • 压缩器(1x1 卷积):先把数据压缩一下,减少不必要的部分,提高处理效率。
  • 优化生产线(Inception 模块):把复杂的工序拆分成更简单、更高效的步骤,同时加入质检员(BN)确保每一步的质量。

Inception_v2 引入了 BN,通过批标准化策略,将每一层的输入分布调整为均值为 0、标准差为 1 的分布。这种操作稳定了数据在浅层向深层传递的过程,使得每一层的输入分布更加一致,从而更好地保留了数据间的内部关系。

BN 有效缓解了随着网络加深而出现的梯度消失问题。梯度消失的原因在于,如果不使用 BN,每一层的输入分布可能会随着训练发生变化,导致激活函数的输入值落入饱和区(如 Sigmoid 函数的两端),使得梯度在反向传播过程中逐渐变小,最终导致梯度消失。BN 通过稳定输入分布,使得激活函数的输入值落在其敏感区间内,从而避免了梯度饱和,缓解了梯度消失问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/959500.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

汽车OEMs一般出于什么目的来自定义Autosar CP一些内容

汽车OEMs在使用AUTOSAR CP(Classic Platform)协议时,可能会根据自身的特定需求对标准协议进行修改,形成自己的企业标准(企标)。这种修改通常是为了满足特定的硬件平台、功能需求、安全要求或优化性能。以下是一些常见的修改场景和例子: 1. 硬件平台适配 企业可能会根据…

centos操作系统上以service形式运行blackbox_exporter监控网页端口

文章目录 前言一、blackbox_exporter是什么二、使用步骤1.获取二进制文件2.准备部署脚本3.执行命令,进行部署4.prometheus中增加需要监控页面的job信息 三、查看部署结果四、配置到grafana中总结 前言 记录一下centos操作系统上以简单的service形式运行blackbox_ex…

XML实体注入漏洞攻与防

JAVA中的XXE攻防 回显型 无回显型 cve-2014-3574

解决vsocde ssh远程连接同一ip,不同端口情况下,无法区分的问题

一般服务器会通过镜像分身或者容器的方式,一个ip分出多个端口给多人使用,但如果碰到需要连接同一user,同一个ip,不同端口的情况,vscode就无法识别,如下图所示,vscode无法区分该ip下不同端口的连接&#xff…

dl学习笔记:(7)完整神经网络流程

完整神经网络流程 反向传播链式求导 代码实现反向传播动量法Momentum开始迭代为什么选择小批量TensorDataset与DataLoader 反向传播 由于本节的公式比较多,所以如果哪里写错了漏写了,还请帮忙指出以便进行改正,谢谢。 在前面的章节已经介绍过…

【esp32-uniapp】uniapp小程序篇02——引入组件库

一、引入组件库(可自行选择其他组件库) 接下来介绍colorUI、uview plus的安装,其他的安装可自行查找教程 1.colorUI weilanwl/coloruicss: 鲜亮的高饱和色彩,专注视觉的小程序组件库 下载之后解压,将\coloruicss-ma…

CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测(Matlab完整源码和数据)

CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测(Matlab完整源码和数据) 目录 CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测(Matlab完整源码和数据)预测效果基本介绍 CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测一…

算法中的移动窗帘——C++滑动窗口算法详解

1. 滑动窗口简介 滑动窗口是一种在算法中常用的技巧,主要用来处理具有连续性的子数组或子序列问题。通过滑动窗口,可以在一维数组或字符串上维护一个固定或可变长度的窗口,逐步移动窗口,避免重复计算,从而提升效率。常…

MFC结构体数据文件读写实例

程序功能将结构体内数组数据写入文件和读出 2Dlg.h中代码: typedef struct Student {int nNum[1000];float fScore;CString sss;}stu; class CMy2Dlg : public CDialog { // Construction public:CMy2Dlg(CWnd* pParent NULL); // standard constructorstu stu1; ... } 2Dl…

数据结构:二叉树—面试题(一)

目录 1、相同的树 2、另一棵树的子树 3、翻转二叉树 4、平衡二叉树 5、对称二叉树 6、二叉树遍历 7、二叉树的分层遍历 1、相同的树 习题链接https://leetcode.cn/problems/same-tree/description/ 描述: 给你两棵二叉树的根节点 p 和 q ,编写一…

绘制决策树尝试2 内含添加环境变量步骤

目录 step1 ai码 ai改 step2 下面就是环境配置问题 “ExecutableNotFound: failed to execute WindowsPath(‘dot’), make sure the Graphviz executables are on your systems’ PATH” dot -v愣是没有​编辑 graphviz安装指导 对于Windows用户: 对于Lin…

基于迁移学习的ResNet50模型实现石榴病害数据集多分类图片预测

完整源码项目包获取→点击文章末尾名片! 番石榴病害数据集 背景描述 番石榴 (Psidium guajava) 是南亚的主要作物,尤其是在孟加拉国。它富含维生素 C 和纤维,支持区域经济和营养。不幸的是,番石榴生产受到降…

C++17 命名空间的新特性:简化与优化的典范

文章目录 1. 简化的嵌套命名空间1.1 背景与问题1.2 C17的解决方案1.3 实际应用场景1.4 注意事项 2. 声明多个名称的using声明2.1 背景与问题2.2 C17的解决方案2.3 实际应用场景2.4 注意事项 3. 属性命名空间的简化3.1 背景与问题3.2 C17的解决方案3.3 实际应用场景3.4 注意事项…

【JavaEE】-- 计算机是如何工作的

文章目录 1. 冯诺依曼体系(VonNeumann Architecture)2. CPU 基本工作流程2.1 寄存器(Register)和 内存(RAM)2.2 控制单元 CU(ControlUnit)2.3 指令(Instruction) 3. 操作系统(OperatingSystem)3.1 操作系统的定位3.2 什么是进程/任务(Process…

消融效果

消融效果是模拟物体逐渐从屏幕上消失或溶解的过程,它通常利用噪声纹理实现,使物体按照某种规则逐渐透明或完全不可见。这种效果常用于: 角色死亡、传送场景、 魔法消失,比如燃烧、消失等 1、基本原理 通过对比噪声纹理值与消融进…

java后端之事务管理

Transactional注解:作用于业务层的方法、类、接口上,将当前方法交给spring进行事务管理,执行前开启事务,成功执行则提交事务,执行异常回滚事务 spring事务管理日志: 默认情况下,只有出现Runti…

【Paper Tips】随记2-word版快速删除某字符

写paper时随心记录一些对自己有用的skills与tips。 文章目录 一、待解决问题1.1 问题描述1.2 解决方法 二、方法详述2.1 必要说明2.2 应用步骤2.2.1 CtrlH一键全文替换2.2.2 录制宏 三、疑问四、总结 一、待解决问题 1.1 问题描述 word中粘贴部分文字时,格式不对时…

vite环境变量处理

环境变量: 会根据当前代码环境产生值的变化的变量就叫做环境变量 代码环境: 开发环境测试环境预发布环境灰度环境生产环境 举例: 百度地图 SDK,小程序的SDK APP_KEY: 测试环境和生产环境还有开发环境是不一样的key 开发环境: 110 生产环境:111 测试环境: 112 我们去请求第三…

使用JavaScript实现猜数字小功能

引言: 在学习编程的过程中,通过实际的小项目来巩固知识是非常有效的方法。今天,我们将使用 JavaScript 来实现一个简单的猜数字游戏。这个游戏不仅能让我们熟悉 JavaScript 的基本语法,还能锻炼我们的逻辑思维能力。 游戏规则 …

数据结构——概念与时间空间复杂度

目录 前言 一相关概念 1什么是数据结构 2什么是算法 二算法效率 1如何衡量算法效率的好坏 2算法的复杂度 三时间复杂度 1时间复杂度表示 2计算时间复杂度 2.1题一 2.2题二 2.3题三 2.4题四 2.5题五 2.6题六 2.7题七 2.8题八 四空间复杂度 1题一 2题二 3…