当前位置: 首页 > news >正文

CV学习笔记-Inception

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×11\times 11×1卷积的方式限制输入的通道数量。

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

三通道卷积过程

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

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

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

考虑下列场景计算

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

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

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

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

输入为28×28×19228\times 28\times 19228×28×192的feature map,经过16个1×11\times11×1卷积得到输出为28×28×1628 \times 28\times 1628×28×16,再通过32个5×55\times 55×5的卷积核得到输出为28×28×3228\times 28 \times 3228×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×11\times 11×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)=xk−E[xk]Var[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的过程相当于求取所有样本所对应的一个特征图的所有神经元的平均值、方差,然后对这个特征图神经元做归一化。
yi←γxi^+β=BNγ,β(xi)y_i\leftarrow \gamma \hat{x_i}+\beta=BN_{\gamma,\beta}(x_i) yiγxi^+β=BNγ,β(xi)
优化2:使用2个连续的3×33\times 33×3卷积层(步长为1)组成的结构代替5×55\times 55×5卷积层

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

在这里插入图片描述

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

在这里插入图片描述

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

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

InceptionV2网络结构图

在这里插入图片描述

(3) InceptionV3

InceptionV3网络结构图

在这里插入图片描述

InceptionV3整合了V2中的所有优化手段,同时还使用了7×77\times 77×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×11\times 11×1的卷积核有妙用,可以做非线性映射,且拥有极小的参数量,卷积核小到一步一步卷全图,在残差Inception块中有的地方1×11\times 11×1卷积之后并没有激活,主要是在做维度对齐,保证Concat

  • Scaling of the Residual

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

  • 网络精度提高的原因

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

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

4. Inception模型的特点总结

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

相关文章:

CV学习笔记-Inception

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

注意力机制笔记——结合沐神和B站老弓up主

B站【大白话浅谈【注意力机制】】 聚类 是针对 样本, 注意力机制是针对样本相关性,来进行计算的 自注意力机制 指的是 query ,key,value都是同一个部分。 可以学到 类似的 短语 ,和 语义特征。如its 指代的对象。 评论区大佬 根据这篇论文《Effective Approaches to…...

建议收藏,轻松搞懂区块链

未来已来,只是不均衡地分布在当下 大家好,我是菜农,欢迎来到我的频道。 本文共 5844字,预计阅读 30 分钟 区块链是近些年来最热门的前沿技术,被认为是未来十几年对金融、物联网、医疗等诸多领域产生最大影响的"…...

php设计一个新春祝福墙

记得十几年前的时候,每到春节,各大网站都会建一个祝福墙,上面挂满网友的新年寄语。这些年随着移动互联网的高速发展,web的新春祝福墙越来越少了。今天,咱们就来考考古,用快速原型法进行设计。原型设计采用M…...

KubeSphere 社区双周报 | OpenFunction 集成 WasmEdge | 2023.02.03-02.16

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为:2023.02.03-2023.…...

数字IC/FPGA 秋招知识点不全面整理

1. 引言 这篇文章的由来 秋招的时候,刚开始复习一些知识点的时候没有什么思路,只是盲目的看相关的书籍和资料,结果是留在脑子中的知识很有限,而且不够系统,在我需要它的时候,并不能很快的回忆起来。 于是就想着把一些典型的知识整理成一个文档,在进行刷题的时候可以比…...

你知道java8是如何排序Map嘛?

在Java中,有多种方法可以对Map进行排序,但是我们将重点介绍Java 8 Stream,这是实现目标的一种非常优雅的方法。 学习一下HashMap的merge()函数 在学习Map排序之前,有必要讲一下HashMap的merge()函数,该函数应用场景就…...

【李忍考研传】一、李忍

“老师,我来回答!” “非常好,我记得你是叫……呃……是李念同学吗?” “不,老师,我叫李忍。” “好,你来回答一下这个问题。” “这题用海明码校验的知识,能检错一位纠错一位&a…...

测牛学堂:软件测试python深入之类和对象的属性和方法总结

类对象和实例对象 类对象就是我们定义的类。 在代码执行的时候,解释器会自动创建类对象。 类对象的作用: 1 使用类对象创建实例对象 2 存储类的一些特性,就是类里面定义的属性 创建对象的过程也称为实例化的对象。所以,类创建的对…...

css实例--新闻页面

实现效果 实现代码 html代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" co…...

SpringCloudGateway 动态转发后端服务

API网关的核心功能是统一流量入口&#xff0c;实现路由转发&#xff0c;SpringCloudGateway是API网关开发的技术之一&#xff0c;此外比较流行的还有Kong和ApiSix&#xff0c;这2个都是基于OpenResty技术栈。 简单的路由转发可以通过SpringCloudGateway的配置文件实现&#xf…...

使用canvas写一个flappy bird小游戏

简介 canvas 是HTML5 提供的一种新标签&#xff0c;它可以支持 JavaScript 在上面绘画&#xff0c;控制每一个像素&#xff0c;它经常被用来制作小游戏&#xff0c;接下来我将用它来模仿制作一款叫flappy bird的小游戏。flappy bird&#xff08;中文名&#xff1a;笨鸟先飞&am…...

KVM-2、虚拟化基础

1. 虚拟化概念 什么是虚拟化 **虚拟化是使用所谓虚拟机管理程序从一台物理机上创建若干个虚拟机的过程。**虚拟机的行为和运转方式与物理机一样,但它们会使用物理机的计算资源,如 CPU 、内存和存储。虚拟机管理程序会根据需要将这些计算资源分配给每个虚拟机。 虚拟化有哪…...

设计模式之观察者模式与访问者模式详解和应用

目录1.访问者模式详解1.1 访问者模式的定义1.1.1 访问者模式在生活中的体现1.1.2 访问者模式的适用场景1.2 访问者模式的通用实现1.3 访问者模式的使用案例之KPI考核1.3.1 类图设计1.3.2 代码实现1.4 访问者模式扩展---分派1.4.1 java中静态分派示例代码1.4.2 java中动态分派1.…...

[SSD固态硬盘技术 18] Over-Provisioning (OP 预留空间)详解,谁“偷”走了SSD的容量?

</...

spring注解方式整合Dubbo源码解析

系列文章目录 前言 本节我们的Dubbo源码版本基于2.6.x 在前一章我们的整合案例中&#xff0c;我们有几个比较关键的步骤&#xff1a; 在启动类上标注了EnableDubbo注解在provider类上面标注了Service注解来提供dubbo服务在消费的时候通过Reference注解引入dubbo服务在配置文件…...

大数值金额大写转换(C语言)

关于大数值金额大写转换&#xff0c;在财务管理的应用方面没什么意义。一般来说&#xff0c;千亿级&#xff0c;万亿级的数值就够了。因为在国家级层面是以亿为单位的&#xff0c;也就表达为千万亿&#xff0c;万万亿。在企业层面数值金额转换设置到千亿、万亿就行了。大的集团…...

迷宫问题图解 : 基于骨架提取、四邻域

目录 1. 迷宫的连通域 2. How to remove branch &#xff1f; 3. 基于4邻域的 remove 分支 3.1 找到分支的端点 3.2 4邻域的 remove 分支 3.3 循环移除分支 3.4 code 4. 迷宫路线 4.1 预处理 4.2 提取骨架 4.3 分支的端点 4.4 去除分支的端点 4.5 循环去除分支 4…...

设计模式 - 如何在库和主程序之间互相调用数据和函数

背景&#xff1a;在项目开发过程中&#xff0c;难免碰到这种情况&#xff0c;当我们想要通过我们开发的库&#xff0c;调用主程序中的一些变量或者函数的时候&#xff0c;就会导致一些问题&#xff0c;因为在项目构建过程中&#xff0c;库都是不依赖于主程序编译的&#xff0c;…...

Redis面试题:1~2亿条数据需要缓存,请问如何设计这个存储案例

目录 前言 一、哈希取余分区 优点 缺点 二、一致性哈希算法分区 背景 步骤 ① 算法构建一致性哈希环 ② 服务器IP节点映射 ③ key落到服务器的落键规则 优点 ① 容错性 ② 扩展性 缺点 三、哈希槽分区 前言 单机单台100%不可能&#xff0c;肯定是分布式存储&am…...

1-2 Linux-虚拟机(2025.6.7学习篇- win版本)

1、虚拟机 学习Linux系统&#xff0c;就需要有一个可用的Linux系统。 如何获得&#xff1f;将自己的电脑重装系统为Linux&#xff1f; NoNo。这不现实&#xff0c;因为Linux系统并不适合日常办公使用。 我们需要借助虚拟机来获得可用的Linux系统环境进行学习。 借助虚拟化技术&…...

Python项目中添加环境配置文件

在Python项目中添加配置文件有多种方式&#xff0c;每种方式对应不同的依赖包和读取方法。以下是 7种主流配置管理方案&#xff0c;包含安装命令、配置示例和变量读取方法&#xff1a; 1. .env 文件&#xff08;推荐简单项目&#xff09; 依赖包: python-dotenv pip install …...

Vue3学习(4)- computed的使用

1. 简述与使用 作用&#xff1a;computed 用于基于响应式数据派生出新值&#xff0c;其值会自动缓存并在依赖变化时更新。 ​缓存机制​&#xff1a;依赖未变化时直接返回缓存值&#xff0c;避免重复计算&#xff08;通过 _dirty 标志位实现&#xff09;。​响应式更新​&…...

Gin框架实战指南:从入门到进阶

Gin框架实战指南&#xff1a;从入门到进阶 在当今的后端开发领域&#xff0c;Gin框架以其高性能、简洁易用的特点&#xff0c;赢得了众多Go语言开发者的青睐。本文将带你深入探索Gin框架的方方面面&#xff0c;从基础的安装与使用&#xff0c;到响应处理、请求参数解析、中间件…...

My图床项目

引言: 在海量文件存储中尤其是小文件我们通常会用上fastdfs对数据进行高效存储,在现实生产中fastdfs通常用于图片,文档,音频等中小文件。 一.项目中用到的基础组件(Base) 1.网络库(muduo) 我们就以muduo网络库为例子讲解IO多路复用和reactor网络模型 1.1 IO多路复用 我们可以…...

Java 大视界 -- 基于 Java 的大数据分布式计算在蛋白质组学数据分析中的加速与优化(255)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

场景题-3

如何实现一个消息队列 拆解分析主流的几种消息队列 1、基本架构 生产者Producer、消费者Consumer、Broker&#xff1a;生产者发送消息&#xff0c;消费者接受消息&#xff0c;Broker是服务端&#xff0c;处理消息的存储、备份、删除和消费关系的维护。 主题和分区&#xff…...

5.Nginx+Tomcat负载均衡群集

Tomcat服务器应用场景&#xff1a;tomcat服务器是一个免费的开放源代码的Web应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试JSP程序的首选。一般来说&#xff0c;Tomcat虽然和Apache或…...

Qt生成日志与以及捕获崩溃文件(mingw64位,winDbg)————附带详细解说

文章目录 Qt生成日志与以及报错文件(mingw64位&#xff0c;winDbg)0 背景与结果0.1 背景0.2 结果1 WinDbg1.1 安装1.2 使用 2 编写代码2.1 ccrashstack类2.2 编写输出捕获异常的dmp文件2.2 编写输出日志文件2.3 调用生成日志和dmp文件 参考 Qt生成日志与以及报错文件(mingw64位…...

青少年编程与数学 01-011 系统软件简介 05 macOS操作系统

青少年编程与数学 01-011 系统软件简介 05 macOS操作系统 一、历史发展&#xff08;一&#xff09;经典 Mac OS&#xff08;1984-2001&#xff09;&#xff08;二&#xff09;Mac OS X&#xff08;2001-2016&#xff09;&#xff08;三&#xff09;macOS&#xff08;2016-至今&…...