CV学习笔记-Inception

news2024/9/24 15:26:12

CV学习笔记-Inception

目录

文章目录

  • CV学习笔记-Inception
    • 目录
    • 1. 常见的卷积神经网络
    • 2. Inception
      • (1) Inception提出背景
      • (2) Inception module 核心思想
    • 3. Inception的历史版本
      • (1) InceptionV1-GoogleNet
      • (2) InceptionV2
      • (3) InceptionV3
      • (4) Inception V4
    • 4. Inception模型的特点总结

1. 常见的卷积神经网络

在这里插入图片描述

  卷积神经网络的发展历史如上所示,在AlexNet进入大众的视野之后,卷积神经网络的作用与实用性得到了广泛的认可,由此,对于卷积神经网络的优化进入了快速发展的阶段,经典的里程碑式的优化思想大致归为四大类:

  • 网络加深

表现为在卷积神经网络的网络结构方面,在网络结构上增加卷积激活层,使得网络结构越变越深,深层次的网络在训练学习的过程中所考虑的因素就会更多,理论上会更加准确,但是网络的深度要与实际问题相关,在实践中折衷选取,过深过浅都不利于问题的解决。

  • 增强卷积模块功能

表现为在一个卷积块中对特征提取的方式做出改变(也即变更传统卷积层的结构以获取更多的滤波作用),一般处于对feature map的尺度以及优化计算量的考量。

  • 从分类的目标到检测的目标

同样利用CNN,但是设计网络的目标从分类的任务变更为了检测任务,检测任务不仅需要对图片中的区域进行特征提取、对结果进行分类,还要通过相关性的信息将目标框框出。

  • 增加新的功能单元

丰富网络处理某一层输入或者输出的功能,此处的功能单元指传统卷积(Conv)、激活以及全连接、分类器之外的新增功能模块,例如LSTM增加的遗忘门,能够考虑历史数据,增加神经网络的功能。

2. Inception

(1) Inception提出背景

卷积神经网络(CNN)在发展历程中Inception的出现是具有里程碑式的意义的。此前,主流CNN的优化方式几乎都是堆叠卷积层,致使卷积层数量越来越多,网络深度越来越深,以这种方式优化效果。

以上提到的方式带来了一定的问题:

  1. 存在目标尺度差异过大的问题。图像中的边缘等特征在尺度方面差别较大,上图中的狗在图片中的尺寸较大,而下图中的狗明显尺度小于上图。
  2. 感受野难以标选。在特征提取的过程中,主要是卷积核的卷积操作完成,卷积核的大小表征了感受野的大小,由于信息位置的差异,选择合适的卷积核尺寸是一个非常困难的问题,对于上图更适用大的卷积核,而下图更适用小的卷积核。
  3. 深度过深的网络容易出现过拟合的情况。笔者经常将深度学习的网络比作用不同的次幂项来拟合一个曲线,不同次项项数越多,对于曲线的拟合程度肯定更精确,但是过深的网络相当于项数过多,对于曲线的拟合过于精确,会导致泛化性差的问题,将梯度更新传播到整个网络也是一个很难的问题(偏导数链过长)
  4. 计算资源紧张。过深的网络在参数量方面是爆炸增长的,舍去参数的思路会使信息受损,所以,对于计算资源的消耗仍然是一个比较重要的问题。

在这里插入图片描述
在这里插入图片描述

(2) Inception module 核心思想

  • 将网络“深度”转换为“宽度”

    在同一层级使用多个尺度的滤波器,将增加深度的思想转换到增加卷积层的宽度上,多尺度的考虑图像信息。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CqYNvTvR-1676799649702)(./imgs/image-20230219103407040.png)]

  • 使用卷积核的计算特性优化参数量

    作者采用增加 1 × 1 1\times 1 1×1卷积的方式限制输入的通道数量。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5c6pGX4Y-1676799649702)(./imgs/image-20230219103422753.png)]

三通道卷积过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7ZFvX5QX-1676799649703)(./imgs/image-20230219103506672.png)]

要点: 输入的通道数要与卷积核的通道数相同,输出的通道数等于卷积核的个数

1 × 1 1\times 1 1×1卷积的优化

考虑下列场景计算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lbxd4Kgc-1676799649703)(./imgs/image-20230219104211244.png)]

计算方式以及公式推导请参照笔者之前的文章CV学习笔记-卷积神经网络,在此不再赘述。

输入为 28 × 28 × 192 28\times 28\times 192 28×28×192,通过 32 32 32 5 × 5 5\times 5 5×5的卷积核在same的填补和步长模式下,参数量为
5 × 5 × 192 × 32 = 153600 5\times 5\times 192 \times32=153600 5×5×192×32=153600
1 × 1 1\times 1 1×1的卷积优化计算的场景如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eTNg03sZ-1676799649703)(./imgs/image-20230219110211308.png)]

输入为 28 × 28 × 192 28\times 28\times 192 28×28×192的feature map,经过16个 1 × 1 1\times1 1×1卷积得到输出为 28 × 28 × 16 28 \times 28\times 16 28×28×16,再通过32个 5 × 5 5\times 5 5×5的卷积核得到输出为 28 × 28 × 32 28\times 28 \times 32 28×28×32的feature map,可以看出最后的输出尺寸与优化前是一致的,参数量为:
( 1 × 1 × 192 ) + ( 5 × 5 × 16 ) = 592 (1\times 1\times 192)+(5\times 5 \times 16)=592 (1×1×192)+(5×5×16)=592
可以看出在优化后,保持输出与输入尺寸不变的情况下,参数量大大减少。

1 × 1 1\times 1 1×1卷积在Inception中的主要作用

  • 数据降维
  • 引入更多的非线性,提高泛化能力,因为卷积后要经过ReLU激活函数。

3. Inception的历史版本

(1) InceptionV1-GoogleNet

网络结构如下:

GoogleNet

要点

  • GoogleNet将Inception模块化,网络结构中使用了9个Inception Module,网络结构共22层,上图红色框框出即为Inception模块。
  • 上图绿色框中的softmax块是辅助模块,主要作用是向前传播梯度,避免梯度消失,有暂存的理念。

(2) InceptionV2

优化1:增加BatchNormalization,也即常说的BN

在卷积层后假如BN层,BN层依照下列公式进行标准化:
x ^ ( k ) = x k − E [ x k ] V a r [ x ( k ) ] \hat{x}^{(k)}=\frac{x^{k}-E[x^{k}]}{\sqrt{Var[x^{(k)}]}} x^(k)=Var[x(k)] xkE[xk]

  • 能够保证所有的输出在0~1之间

  • 保证数据服从于标准正态分布,也即均值为0、标准差为1的正态分布 N ( 0 , 1 ) N(0,1) N(0,1),使其落入激活函数的敏感区域,避免梯度消失,防止网络陷入饱和

  • 提高泛化能力与学习速度,能够设置较大的初始学习率,减少了对参数初始化的依赖

  • 减少dropout的使用,降低L2正则约束参数

    正则化参考

实际的卷积过程中,并不是每个神经元都进行了BN,而是使用了类似共享权值的策略,把一整张feature map当作了一个神经元处理

对于每个feature map都只有一对可学习的参数 γ \gamma γ β \beta β,BN的过程相当于求取所有样本所对应的一个特征图的所有神经元的平均值、方差,然后对这个特征图神经元做归一化。
y i ← γ x i ^ + β = B N γ , β ( x i ) y_i\leftarrow \gamma \hat{x_i}+\beta=BN_{\gamma,\beta}(x_i) yiγxi^+β=BNγ,β(xi)
优化2:使用2个连续的 3 × 3 3\times 3 3×3卷积层(步长为1)组成的结构代替 5 × 5 5\times 5 5×5卷积层

通过计算,连续的2个 3 × 3 3\times 3 3×3的卷积与一个 5 × 5 5\times 5 5×5的卷积得到的输出尺寸是一致的,但是 5 × 5 5\times 5 5×5的卷积核参数与 3 × 3 3\times 3 3×3的参数量之比为 25 9 = 2.78 \frac{25}{9}=2.78 925=2.78,在feature map比较大时差异尤为明显。

在这里插入图片描述

优化3:使用 1 × n 1\times n 1×n n × 1 n\times 1 n×1的连续卷积代替 n × n n\times n n×n的卷积核尺寸

在这里插入图片描述

这种处理方式为使用非对称卷积核进行不对称分解,其存在:

  • 节约了大量参数
  • 增加一层非线性,提高了模型的表达能力
  • 可以处理更丰富的空间特征,增加特征的多样性

InceptionV2网络结构图

在这里插入图片描述

(3) InceptionV3

InceptionV3网络结构图

在这里插入图片描述

InceptionV3整合了V2中的所有优化手段,同时还使用了 7 × 7 7\times 7 7×7卷积

设计思想

  • 小卷积核的非对称分解对于降低参数量和减轻过拟合有很大的帮助,同时能够增加网络非线性的表达能力。
  • 在CNN的运作中,应该使feature map的尺寸逐渐减少、通道数逐渐增加,这样做可以使得空间结构化,将空间信息转化为高阶抽象的特征信息。
  • Inception Module用多个分支提取不同程度的高阶特征的思路,丰富了网络的表达能力

(4) Inception V4

Inception V4的论文中没有公式,都是网络结构的展示,Inception V4中基本的Inception Module还是沿袭的InceptionV2和InceptionV3的结构,只是做了统一化标准化改进,并且使用了更多的Inception Module,其实验效果表现良好。

Inception V4的网络结构图

在这里插入图片描述

作者在论文中,也提到了与ResNet的结合,总结如下:

  • Residual Connection

    ResNet的作者认为残差连接为深度神经网络的标准,而作者认为残差连接并非深度神经网络必须的,残差连接可以提高网络的训练速度

  • Residual Inception Block

    1 × 1 1\times 1 1×1的卷积核有妙用,可以做非线性映射,且拥有极小的参数量,卷积核小到一步一步卷全图,在残差Inception块中有的地方 1 × 1 1\times 1 1×1卷积之后并没有激活,主要是在做维度对齐,保证Concat

  • Scaling of the Residual

    当滤波器的数量超过1000个时候,网络会出现“坏死”的情况,在平均池化前都会变成0,此时降低学习率、增加BN层都没有用,这时候在激活函数之前缩小残差可以保持稳定。
    在这里插入图片描述

  • 网络精度提高的原因

    残差连接只能加速网络收敛,真正提高网络精度还是“更大规模的网络”

此处总结借鉴了inception-v1,v2,v3,v4----论文笔记_ Meng的博客-CSDN博客_inception论文

4. Inception模型的特点总结

  1. 采用了 1 × 1 1\times 1 1×1卷积核,既大量节省了参数量,有可以增加一层的特征变换和非线性变换。
  2. 提出了Bacth Normalization,将神经元的输入归一化到了标准正态分布中,避免梯度弥散,使其落入激活函数的敏感区,加快收敛进程
  3. 引入了Inception Module,4个分支结合的结构。

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

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

相关文章

一起学 pixijs(4):如何绘制文字md

大家好,我是前端西瓜哥,今天我们来学 pixijs 如何绘制文字。pixijs 版本为 7.1.2。 使用原生的 WebGL 来绘制文字是非常繁琐的,pixijs 对此进行了高层级的封装,提供了 Text 类和 BitMapText 类来绘制文字。 Text 最基本的写法&…

【Flutter入门到进阶】Dart进阶篇---Dart异步编程

1 并行与并发的编程区别 1.1 并发与并行 1.1.1 说明 我们举个例子,如果有条高速公路 A 上面并排有 8 条车道,那么最大的并行车辆就是 8 辆此条高速公路 A 同时并排行走的车辆小于等于 8 辆的时候,车辆就可以并行运行。 CPU 也是这个原理,一个 CPU 相当于一个高速公路 A,核心数…

Ubuntu20.04如何安装虚拟机(并安装Android)

安装虚拟机(KVM)这种KVM只能安装windows无法安装安卓(From https://phoenixnap.com/kb/ubuntu-install-kvm)A type 2 hypervisor enables users to run isolated instances of other operating systems inside a host system. As a Linux based OS, Ubun…

Redis第四讲

目录 四、Redis04 4.1 Redis集群应用场景 4.2 集群 4.2.1 基本原理 4.2.2 主从复制的作用 4.3 配置集群(一台虚拟机) 4.3.1 规划网络 4.3.2 创建节点 4.3.3 创建目录 4.3.4 配置redis7001.conf 4.3.5 配置其余文件 4.3.6 后台启动redis 4.3…

【NLP实战】NLTK工具包

“Natural Language Toolkit,自然语言处理工具包,在NLP领域中,最常使用的一个Python库。NLTK是一个开源的项目,包含:Python模块,数据集和教程,用于NLP的研究和开发。NLTK由Steven Bird和Edward …

「可信计算」助力TLS 传输更安全

序言背景(Satuation):TLS 是 TCP/IP 上的传输层安全协议,保护着数以亿万级的数据安全,我们在浏览器中输入的 https,就是受到 TLS 保护的。冲突(complication):从可信计算…

洛谷P8601[蓝桥杯][2013年第四届真题]剪格子

题目描述如图 11 所示,33 的格子中填写了一些整数。我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是 6060。本题的要求就是请你编程判定:对给定的 m\times nmn 的格子中的整数,是否可以分割为两个部分&am…

【Java开发】Spring 12 :Spring IOC控制反转和依赖注入(解决单接口多实现类调用)

IOC 是 Inversion of Control 的简写,译为“控制反转”,Spring 通过 IOC 容器来管理所有 Java 对象的实例化和初始化,控制对象与对象之间的依赖关系。我们将由 IOC 容器管理的 Java 对象称为 Spring Bean,它与使用关键字 new 创建…

分享112个HTML艺术时尚模板,总有一款适合您

分享112个HTML艺术时尚模板,总有一款适合您 112个HTML艺术时尚模板下载链接:https://pan.baidu.com/s/1D3-mfPOud-f3vy9yLl-bmw?pwdfph2 提取码:fph2 Python采集代码下载链接:采集代码.zip - 蓝奏云 时尚平面模特网站模板 潮…

Redis数据类型以及应用场景

目录1、 String(字符串)2、 Hash(哈希)3、 List(列表)4、 Set(集合)5、 sorted set(有序集合ZSet)字符串(String)、哈希表&#xff08…

40/365 javascript 严格检查模式 字符串

1.严格检查模式 因为js语法的随意性&#xff0c;可以直接使用变量&#xff08;没有声明&#xff09;&#xff0c;也不会报错。 <script>n 5;</script> 但这样会造成很多问题&#xff0c;一是变量不声明就使用&#xff0c;二是这样使用的变量会是全局变量&#x…

Python数据容器、list列表、tuple元组、str字符串、数据容器(序列)切片、set集合、dict字典

数据来源 01 数据容器 为什么学习数据容器 数据容器 总结 02 列表 1&#xff09;列表定义 为什么需要列表 列表的定义语法 列表的定义方式 演示 """ 演示数据容器之:list列表 语法:[元素,元素,......] """ # 定义一个列表list my_list …

从零开始 verilog 以太网交换机(三)MAC发送控制器的设计与实现

从零开始 verilog 以太网交换机&#xff08;三&#xff09;MAC发送控制器的设计与实现 &#x1f508;声明&#xff1a; &#x1f603;博主主页&#xff1a;王_嘻嘻的CSDN主页 &#x1f9e8; 从零开始 verilog 以太网交换机系列专栏&#xff1a;点击这里 &#x1f511;未经作者允…

数据结构概述

逻辑结构 顺序存储 随机访问是可以通过下标取到任意一个元素&#xff0c;即数组的起始位置下标 链式存储 链式存储是不连续的&#xff0c;比如A只保留了当前的指针&#xff0c;那么怎么访问到B和C呢 每个元素不仅存储自己的值还使用额外的空间存储指针指向下一个元素的地址&a…

【python】英雄联盟电竞观赛引擎 掉落提示 CapsuleFarmerEvolved 「Webhook」「钉钉」

介绍 本项目链接 Github本项目链接 Gitee本项目链接 最近在github上发现一个可以用来自动帮你挂英雄联盟(除国服)电竞引擎(可以开出头像和表情)的项目,CapsuleFarmerEvolved,github原项目链接简单来说就是本来是通过看比赛获取奖励的,它帮助你进行观看. 对这个活动有兴趣的话…

3|物联网控制|计算机控制-刘川来胡乃平版|第1章:绪论|青岛科技大学课堂笔记|U1 ppt

目录绪论&#xff08;2学时&#xff09;常用仪表设备&#xff08;3学时&#xff09;计算机总线技术&#xff08;4学时&#xff09;过程通道与人机接口&#xff08;6学时&#xff09;数据处理与控制策略&#xff08;6学时&#xff09;网络与通讯技术&#xff08;3学时&#xff0…

sonarqube 生成pdf报错

sonar 生成report pdf报错&#xff0c;需要先配置username,password, Administration->PDF Report-> Password & Username https://gitee.com/zzulj/sonar-pdf-plugin sonar-pdf-plugin sonar-pdfreport-plugin-4.0.1.jar Installation 下载对应的版本&#xff…

Day894.加锁规则的一些问题 -MySQL实战

加锁规则的一些问题 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于加锁规则的一些问题的内容。 加锁规则&#xff0c;这个规则中&#xff0c;包含了两个“原则”、两个“优化”和一个“bug”&#xff1a; 原则 1&#xff1a;加锁的基本单位是 next-key lock。nex…

stable-diffusion-webui 安装使用

文章目录1.github 下载&#xff0c;按教程运行2.安装python 忘记勾选加入环境变量&#xff0c;自行加入&#xff08;重启生效&#xff09;3.环境变量添加后&#xff0c;清理tmp &#xff0c;venv重新运行4.运行报错&#xff0c;无法升级pip&#xff0c;无法下载包&#xff0c;5…

如何将Python打包后的exe还原成.py?

将python打包好的exe解压为py文件&#xff0c;步骤如下&#xff1a;下载pyinstxtractor.py文件下载地址&#xff1a;https://nchc.dl.sourceforge.net/project/pyinstallerextractor/dist/pyinstxtractor.py并将pyinstxtractor.py放到和exe相同的目录文件下打开命令控制台cd 进…