网站在哪里备案信息/网络营销做得好的产品
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的优化方式几乎都是堆叠卷积层,致使卷积层数量越来越多,网络深度越来越深,以这种方式优化效果。
以上提到的方式带来了一定的问题:
- 存在目标尺度差异过大的问题。图像中的边缘等特征在尺度方面差别较大,上图中的狗在图片中的尺寸较大,而下图中的狗明显尺度小于上图。
- 感受野难以标选。在特征提取的过程中,主要是卷积核的卷积操作完成,卷积核的大小表征了感受野的大小,由于信息位置的差异,选择合适的卷积核尺寸是一个非常困难的问题,对于上图更适用大的卷积核,而下图更适用小的卷积核。
- 深度过深的网络容易出现过拟合的情况。笔者经常将深度学习的网络比作用不同的次幂项来拟合一个曲线,不同次项项数越多,对于曲线的拟合程度肯定更精确,但是过深的网络相当于项数过多,对于曲线的拟合过于精确,会导致泛化性差的问题,将梯度更新传播到整个网络也是一个很难的问题(偏导数链过长)
- 计算资源紧张。过深的网络在参数量方面是爆炸增长的,舍去参数的思路会使信息受损,所以,对于计算资源的消耗仍然是一个比较重要的问题。
(2) Inception module 核心思想
-
将网络“深度”转换为“宽度”
在同一层级使用多个尺度的滤波器,将增加深度的思想转换到增加卷积层的宽度上,多尺度的考虑图像信息。
-
使用卷积核的计算特性优化参数量
作者采用增加1×11\times 11×1卷积的方式限制输入的通道数量。
三通道卷积过程
要点: 输入的通道数要与卷积核的通道数相同,输出的通道数等于卷积核的个数
1×11\times 11×1卷积的优化
考虑下列场景计算
计算方式以及公式推导请参照笔者之前的文章CV学习笔记-卷积神经网络,在此不再赘述。
输入为28×28×19228\times 28\times 19228×28×192,通过323232个5×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的卷积优化计算的场景如下:
输入为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将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)]xk−E[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×n与n×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×11\times 11×1卷积核,既大量节省了参数量,有可以增加一层的特征变换和非线性变换。
- 提出了Bacth Normalization,将神经元的输入归一化到了标准正态分布中,避免梯度弥散,使其落入激活函数的敏感区,加快收敛进程
- 引入了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代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" co…...

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

使用canvas写一个flappy bird小游戏
简介 canvas 是HTML5 提供的一种新标签,它可以支持 JavaScript 在上面绘画,控制每一个像素,它经常被用来制作小游戏,接下来我将用它来模仿制作一款叫flappy bird的小游戏。flappy bird(中文名:笨鸟先飞&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.…...

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

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

迷宫问题图解 : 基于骨架提取、四邻域
目录 1. 迷宫的连通域 2. How to remove branch ? 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…...

设计模式 - 如何在库和主程序之间互相调用数据和函数
背景:在项目开发过程中,难免碰到这种情况,当我们想要通过我们开发的库,调用主程序中的一些变量或者函数的时候,就会导致一些问题,因为在项目构建过程中,库都是不依赖于主程序编译的,…...

Redis面试题:1~2亿条数据需要缓存,请问如何设计这个存储案例
目录 前言 一、哈希取余分区 优点 缺点 二、一致性哈希算法分区 背景 步骤 ① 算法构建一致性哈希环 ② 服务器IP节点映射 ③ key落到服务器的落键规则 优点 ① 容错性 ② 扩展性 缺点 三、哈希槽分区 前言 单机单台100%不可能,肯定是分布式存储&am…...

程序员必备的软技能-《如何阅读一本书》
阅读很重要,我们真的会阅读吗? 这本书的初版是 1940年,时隔 80年,其内容仍然不过时。第一次读这本书时,给我最大的影响就是主题阅读,每次学习一个新理论、技术,都入手多本关于这项理论、技术的书…...

Java数据结构-栈、队列常用类(Stack、ArrayDeque、LinkedLList)
数据结构的三要素包括:逻辑结构、存储结构、数据的运算。逻辑结构描述的是数据之间的逻辑关系,分为线性结构(线性表(数组、链表)、栈、队列)和非线性结构(图、树、集合)。物理结构也…...

拯救了大批爬虫程序员,因为一个简单的神器
相信大家应该都写过爬虫,简单的爬虫只需要使用 requests 即可。遇到复杂的爬虫,就需要在程序里面加上请求头和参数信息。类似这种:我们一般的步骤是,先到浏览器的网络请求中找到我们需要的请求,然后将请求头和参数信息…...

2023年美赛C题Wordle预测问题三、四建模及Python代码详细讲解
更新时间:2023-2-19 16:30 相关链接 (1)2023年美赛C题Wordle预测问题一建模及Python代码详细讲解 (2)2023年美赛C题Wordle预测问题二建模及Python代码详细讲解 (3)2023年美赛C题Wordle预测问题三、四建模…...

相关性-回忆录(持续更新)
1.TODO方向 (1)数据增强:finetuning阶段需要大量人工标注样本,消耗时间和成本。用户点击数据作为弱监督学习,可以尝试图网络构建节点和边(query聚合); 使用展现未点击生成对抗网络进…...

(必备技能)使用Python实现屏幕截图
(必备技能)使用Python实现屏幕截图 文章目录 (必备技能)使用Python实现屏幕截图 一、序言二、环境配置 1、下载pyautogui包2、下载opencv-python包3、下载PyQt5包4、下载pypiwin32包 三、屏幕截屏源码与解析 1、使用pyautogui方法实现截屏2、使用PyQt方法实现截屏 a.获取窗口…...

「数据仓库」怎么选择现代数据仓库?
构建自己的数据仓库时要考虑的基本因素我们用过很多数据仓库。当我们的客户问我们,对于他们成长中的公司来说,最好的数据仓库是什么时,我们会根据他们的具体需求来考虑答案。通常,他们需要几乎实时的数据,价格低廉&…...

6.3 使用 Swagger 生成 Web API 文档
第6章 构建 RESTful 服务 6.1 RESTful 简介 6.2 构建 RESTful 应用接口 6.3 使用 Swagger 生成 Web API 文档 6.4 实战:实现 Web API 版本控制 6.3 使用 Swagger 生成 Web API 文档 高质量的 API 文档在系统开发的过程中非常重要。本节介绍什么是 Swaggerÿ…...

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

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