InceptionV1_V2

news2025/1/28 11:27:28

目录

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

经典 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 通过稳定输入分布,使得激活函数的输入值落在其敏感区间内,从而避免了梯度饱和,缓解了梯度消失问题。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ORB-SLAM2源码学习:Initializer.cc⑧: Initializer::CheckRT检验三角化结果

前言 ORB-SLAM2源码学习:Initializer.cc⑦: Initializer::Triangulate特征点对的三角化_cv::svd::compute-CSDN博客 经过上面的三角化我们成功得到了三维点,但是经过三角化成功的三维点并不一定是有效的,需要筛选才能作为初始化地图点。 …

【ArcGIS微课1000例】0141:提取多波段影像中的单个波段

文章目录 一、波段提取函数二、加载单波段导出问题描述:如下图所示,img格式的时序NDVI数据有24个波段。现在需要提取某一个波段,该怎样操作? 一、波段提取函数 首先加载多波段数据。点击【窗口】→【影像分析】。 选择需要处理的多波段影像,点击下方的【添加函数】。 在多…

一文大白话讲清楚webpack基本使用——17——Tree Shaking

文章目录 一文大白话讲清楚webpack基本使用——17——Tree Shaking1. 建议按文章顺序从头看,一看到底,豁然开朗2. 啥叫Tree Shaking3. 什么是死代码,怎么来的3. Tree Shaking的流程3.1 标记3.2 利用Terser摇起来 4. 具体使用方式4.1 适用前提…

PyCharm配置Python环境

1、打开PyCharm项目 可以从File-->Open-->选择你的项目路径-->OK,或者直接点击Open,找到项目路径-->OK,如图所示(点击Ok后可能有下面的弹窗,选择“Trust Project”即可,然后选择“New Window”打开项目) …

c#配置config文件

1,引用命名空间 Configuration 及配置信息

RDMA 工作原理 | 支持 RDMA 的网络协议

注:本文为 “RDMA” 相关文章合辑。 英文引文机翻未校。 图片清晰度受引文所限。 Introduction to Remote Direct Memory Access (RDMA) Written by: Dotan Barak on March 31, 2014.on February 13, 2015. What is RDMA? 什么是 RDMA? Direct me…

01-硬件入门学习/嵌入式教程-CH340C使用教程

前言 CH340C广泛应用于DIY项目和嵌入式开发中,用于USB数据转换和串口通信。本文将详细介绍CH340C的基本功能、引脚接线及使用方法。 CH340C简介 CH340C是一款USB转TTL电平转换器,可以将电脑的USB数据转换成串口数据,方便与单片机&#xff…

STM32——LCD

一、引脚配置 查看引脚 将上述引脚都设置为GPIO_Output 二、导入驱动文件 将 LCD 驱动的 Inc 以及 Src 中的 fonts.h,lcd.h 和 lcd.c 导入到自己工程的驱动文件中。 当然,后面 lcd 的驱动学习可以和 IMX6U 一块学。 三、LCD函数 void LCD_Clear(u16 Color); 功能…

操作系统(Linux Kernel 0.11Linux Kernel 0.12)解读整理——内核初始化(main init)之内存的划分

前言 MMU:内存管理单元(Memory Management Unit)完成的工作就是虚拟地址到物理地址的转换,可以让系统中的多个程序跑在自己独立的虚拟地址空间中,相互不会影响。程序可以对底层的物理内存一无所知,物理地址可以是不连续的&#x…

.NET MAUI进行UDP通信(二)

上篇文章有写过一个简单的demo&#xff0c;本次对项目进行进一步的扩展&#xff0c;添加tabbar功能。 1.修改AppShell.xaml文件&#xff0c;如下所示&#xff1a; <?xml version"1.0" encoding"UTF-8" ?> <Shellx:Class"mauiDemo.AppShel…

社区养老服务平台的设计与实现(代码+数据库+LW)

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差&#…

生信软件管家——conda vs pip

pip vs conda&#xff1a; 安装过python包的人自然两种管理软件都用过&#xff0c; Pip install和Conda install在Python环境中用于安装第三方库和软件包&#xff0c;但它们在多个方面存在显著的区别 总的来说&#xff1a; pip是包管理软件&#xff0c;conda既是包管理软件&…

项目文章 | PNAS 斑马鱼转录因子ChIP-seq助力解析GATA6突变相关的肝脏疾病机制

近日&#xff0c;西南大学阮华/黄红辉团队联合重庆大学邱菊辉/王贵学团队在PNAS发表了题为“An animal model recapitulates human hepatic diseases associated with GATA6 mutations”的研究论文。该研究构建了一个gata6敲除斑马鱼模型&#xff0c;它重现了gata6突变患者的大…

iOS 权限管理:同时请求相机和麦克风权限的最佳实践

引言 在开发视频类应用时&#xff0c;我们常常会遇到需要同时请求相机和麦克风权限的场景。比如&#xff0c;在用户发布视频动态时&#xff0c;相机用于捕捉画面&#xff0c;麦克风用于录制声音&#xff1b;又或者在直播功能中&#xff0c;只有获得这两项权限&#xff0c;用户…

【深入理解FFMPEG】命令行阅读笔记

这里写自定义目录标题 第三章 FFmpeg工具使用基础3.1 ffmpeg常用命令3.1.13.1.3 转码流程 3.2 ffprobe 常用命令3.2.1 ffprobe常用参数3.2.2 ffprobe 使用示例 3.3 ffplay常用命令3.3.1 ffplay常用参数3.3.2 ffplay高级参数3.3.4 ffplay快捷键 第4章 封装与解封装4.1 视频文件转…

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

1、二叉树的最近公共祖先 习题链接https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/description/ 描述&#xff1a; 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点…

【C++高并发服务器WebServer】-6:信号

本文目录 信号的概念1.1 core文件1.2 kill命令1.3 alarm函数1.4 setitimer调用1.5 signal捕捉信号1.6 信号集1.7 内核实现信号捕捉的过程1.8 sigaction1.9 sigchld 信号的概念 信号是 Linux 进程间通信的最古老的方式之一&#xff0c;是事件发生时对进程的通知机制&#xff0c…

【数据分享】1929-2024年全球站点的逐月平均能见度(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff01;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2024年全球气象站点…

【PyTorch】3.张量类型转换

个人主页&#xff1a;Icomi 在深度学习蓬勃发展的当下&#xff0c;PyTorch 是不可或缺的工具。它作为强大的深度学习框架&#xff0c;为构建和训练神经网络提供了高效且灵活的平台。神经网络作为人工智能的核心技术&#xff0c;能够处理复杂的数据模式。通过 PyTorch&#xff0…

不解释快上车

聊一聊 最近有小伙伴问我有小红书图片和短视频下载的软件吗&#xff0c;我心想&#xff0c;下载那上面的图片和视频做什么&#xff1f;也许是自己没有这方面的需求&#xff0c;不了解。 不过话又说回来&#xff0c;有些很多下载器可能作者没有持续的维护&#xff0c;所以可能…