计算机视觉与深度学习-经典网络解析-GoogLeNet-[北邮鲁鹏]

2023-09-18 17:43:00

GoogLeNet

GoogLeNet的设计主要特点是引入了Inception模块,这是一种多尺度卷积结构,可以在不同尺度下进行特征提取。Inception模块使用了不同大小的卷积核和池化操作,并将它们的输出在通道维度上连接在一起,以获得更丰富的特征表示。

GoogLeNet还采用了一种称为"平均池化"(average pooling)的特殊池化方式来代替全连接层,以减少参数数量和计算量。此外,GoogLeNet还使用了辅助分类器(auxiliary classifier)来帮助训练深层网络,并通过附加的损失函数促进梯度的传播。

参考

论文原文

GoogLeNet模型结构

在这里插入图片描述

创新点

串联结构(如VGG)存在的问题

后面的卷积层只能处理前层输出的特征图;前层因某些原因(比如感受野限制)丢失重要信息,后层无法找回。

解决方案:每一层尽量多的保留输入信号中的信息。

Inception结构,它能保留输入信号中的更多特征信息

Inception 结构的主要思路是怎样用密集成分来近似最优的局部稀疏结构。
在这里插入图片描述
1、采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合;
2、 之所以卷积核大小采用1、3和5,主要是为了方便对齐。
设定卷积步长stride=1之后,只要分别设定pad=0、1、2,那么卷积之后便可以得到相同维度的特征。
3、3×3 max pooling 可理解为非最大化抑制。
文章说很多地方都表明pooling挺有效,所以Inception里面也嵌入了。保留且加强了原图中比较重要的信息。
4、网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3x3和5x5卷积的比例也要增加。
5、1×1 3×3 5×5卷积,及3×3max pooling,通过设定合适的padding都会得到相同维度的特征,然后将这些特征直接拼接在一起。

但是,使用5x5的卷积核仍然会带来巨大的计算量。

为此,文章借鉴NIN2,采用1x1卷积核来进行降维。

具体改进后的Inception Module如下图:
在这里插入图片描述

例如:上一层的输出为100x100x128,经过具有256个输出的5x5卷积层之(stride=1,pad=2),输出数据为100x100x256。其中,卷积层的参数为128x5x5x256。
在这里插入图片描述
假如上一层输出先经过具有32个输出的1x1卷积层,再经过具有256个输出的5x5卷积层,那么最终的输出数据仍为100x100x256,但卷积参数量已经减少为128x1x1x32 + 32x5x5x256,大约减少了4倍。
在这里插入图片描述

层数更深、参数更少、计算效率更高、非线性表达能力也更强

在这里插入图片描述

去掉了AlexNet的前两个全连接层,并采用了平均池化

这一设计使得GoogLeNet只有500万参数,比AlexNet少了12倍
在这里插入图片描述

引入了辅助分类器

克服了训练过程中的梯度消失问题
在这里插入图片描述

在这里插入图片描述
问题1:平均池化向量化与直接展开向量化有什么区别?
在这里插入图片描述
特征响应图中位置信息不太重要,平均池化,忽略位置信息,可以很大节省计算量。

问题2: 利用1 x1卷积进行压缩会损失信息吗?
在这里插入图片描述

不会,假设图像或特征响应图深度通道为64,其中记录信息的只有少数,对应的向量非常稀疏,且其后的每个卷积核(深度通道也为64)都作用在这64个通道上。 经过压缩,并不会影响图像原始信息的记录。

更多推荐

深度学习:pytorch nn.Embedding详解

目录1nn.Embedding介绍1.1nn.Embedding作用1.2nn.Embedding函数描述1.3nn.Embedding词向量转化2nn.Embedding实战2.1embedding如何处理文本2.2embedding使用示例2.3nn.Embedding的可学习性1nn.Embedding介绍1.1

【SpringMVC】自定义注解

【SpringMVC】自定义注解前言1.什么是注解?2.注解的用处3.注解的原理1.1.@Override1.2.@SuppressWarnings2.JDK元注解2.1.@Retention2.2.@Target2.3.@Inherited2.4.@Documented3.自定义注解3.1.自定义注解的分类注解类结语

Map<K,V>的使用和List学习

MapMap是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。对于静态类型的查找来说,一般直接遍历或者用二分查找【不会对区间进行插入和删除操作】而在现实生活中的查找比如:根据姓名查询考试成绩通讯录,即根据姓名查询联系方式不重复集合,即需要先搜索关键字是否已经在集合中注:Map最重要的特性就

【Redis】深入探索 Redis 的数据类型 —— 列表 List

文章目录一、List类型介绍二、List类型相关命令2.1LPUSH和RPUSH、LPUSHX和RPUSHX2.2LPOP和RPOP、BLPOP和BRPOP2.3LRANGE、LINDEX、LINSERT、LLEN2.4列表相关命令总结三、List类型内部编码3.1压缩列表(ziplist)3.2链表(linkedli

ceph分布式存储

目录一、概述二、组件三、架构图四、搭建一、概述ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。特点:1.统一存储虽然ceph底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口。所以在开源存储软件中,能够一统江湖。至于能不能千秋万代,就不知了。2.高扩展性扩容方便、容量大。能够

前端Vue3+element-plus表单输入框实现Cron表达式校验

页面如下:本来想手写正则表达式校验,结果发现很麻烦,cron表达式组成如下:开发使用框架为vue3+element-plus,于是选择cron-validator依赖。使用步骤如下:1、通过npminstallcron-validator命令安装:2、可以通过package.json文件中看到,已安装成功。3、在你需要

自动化测试的生命周期是什么?

软件测试发展到今日,已经逐渐标准化且能力更强,其流程每天都在发展。测试人员的技术熟练程度对于整个测试阶段的成功来说至关重要。测试不再意味着仅仅发现错误;它的范围已经扩大,从任何开发项目开始就可以看出它的重要性。当谈论起自动化测试生命周期(AutomationTestingLifeCycle)时,大多数人认为这只是SDL

【vue】vue 中插槽的三种类型:

文章目录一、匿名插槽:``二、具名插槽:``三、作用域插槽一、匿名插槽:<slot></slot>1.没有为插槽指定名称2.通过slot标签可以添加匿名插槽3.在使用组件的时候,组件中的内容会填充到所有匿名插槽的位置,所以在封装组件的时候,匿名插槽一般只有一个4.匿名插槽可以设置默认的内容,如果没有传入内容就使用默认内

ceph分布式存储部署

一、概述是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。特点1、统一存储虽然ceph底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口。所以在开源存储软件中,能够一统江湖。至于能不能千秋万代,就不知了。2、高扩展性扩容方便、容量大。能够管理上千台服务器、EB级的容量。3、可靠性高支持

c++ 模版元编程 基于条件的编译

基于条件的编译是指根据不同的条件选择是否编译某段代码或选择不同的代码路径。在C++的模板元编程中,我们可以利用模板特化和std::enable_if技术来实现基于条件的编译。通过基于条件的编译,我们可以在编译期间根据类型特征或其他条件,决定采取不同的代码路径。这种能力使得我们可以针对不同类型或条件编写更加灵活和通用的代

死锁详细解读

目录死锁(1)一、死锁的定义二、产生死锁的原因三、产生死锁的四个必要条件四、解决死锁的方法死锁(2)第三节死锁避免一、死锁避免的概念二、安全状态与安全序列三、银行家算法第四节、死锁的检测与解除一、死锁的检测和解除二、死锁检测的算法三、解除死锁的方法死锁(3)第五节资源分配图一、资源分配图二、死锁定理第六节哲学家就餐问题

热文推荐