【论文阅读】inception v1学习总结

news2024/11/26 10:15:47

【论文阅读总结】inception v1总结

    • 1. 摘要
    • 2. 序言
    • 3. 文献综述
    • 4.动机和高层考虑
      • 4.1提高深度神经网络性能的最直接方法
        • 4.1.1 增加模型的大小
        • 4.1.2 解决增加模型大小导致的缺点思路
    • 5.结构详述
      • 5.1 Inception架构的主要思想
      • 5.2 原生inception块问题
      • 5.3 解决通道数增加问题
      • 5.4 `1*1`卷积优点
    • 6. GoogLeNet
      • 6.1辅助分类器
    • 7. 训练方法

  • 论文链接
    https://arxiv.org/pdf/1409.4842v1.pdf
  • 视频链接
    【子豪兄】inception v1精读人工智能经典论文

1. 摘要

  • 提出了Inception的深度卷积神经网络架构。
  • 该体系结构用于分类和检测
    • 分类【分类问题】:对画框的范围进行分类
    • 检测【回归问题】:画出框的线,画出物体的边缘框
  • 该体系结构的主要特点是提高了网络内计算资源的利用率。
  • 该体系结构基于Hebbian理论和多尺度信息处理
    • Hebbian理论:将不同特征进行融合成物体【例如:猫的耳朵,腿等融合成一只完整的猫】
    • 多尺度信息处理:用不同大小的卷积核并行处理,进行汇总融合【不同大小的卷积核,会融合不同大小的物体,比如:人,猫大小不一样,需要不同的卷积核】
  • 允许增加网络的深度和宽度,同时保持计算量保持不变

2. 序言

  • 在过去三年中,深度学习的进步(更具体地说是卷积网络),图像识别和对象检测的质量一直在以惊人的速度进步
  • 大部分不仅是更强大的硬件、数据集和模型的结果,而且主要是新思想、算法和改进的网络架构的结果
  • GoogLeNet参数比AlexNet少12倍,同时也更加准确。
  • 随着移动和嵌入式计算的不断发展,算法的效率(尤其是其功率和内存使用)越来越重要
  • 目标检测的最大收益并不是来自于单独使用深度网络或更大的模型,而是来自深度架构和经典计算机视觉的协同作用
  • 该模型保持15亿倍的计算量,可以以合理的成本投入到现实中使用,即使是在大型数据集上。
  • 该模型增加了网络深度【模型的深度与算法的深度】

3. 文献综述

  • 从LeNet-5开始,卷积神经网络(CNN)通常具有标准结构
    • 标准结构:多层卷积层——》对比度归一化和最大池层【可选】——》一个或多个全连接的层。
  • 对于较大的数据集,最近的趋势是增加深度(层数)和宽度(卷积核个数),同时使用丢弃(dropout)来解决过拟合问题。
  • 池化层可能会导致空间信息丢失,但也成功用于定位、对象检测和人体姿态估计
    • 池化层具有平移不变性
  • Inception模型中的所有滤波器(卷积核)都是学习得到的。 Inception层重复多次使用,导致GoogLeNet模型中的22层深度模型。
  • Network-in-Network model,大量使用1*1卷积层,旨在提高神经网络的代表能力。具有两种作用
    • 主要用作降维模块,以消除计算瓶颈,限制网络的大小
    • 可以增加网络深度,宽度,非线性运算,且不会造成显著的性能损失。

4.动机和高层考虑

4.1提高深度神经网络性能的最直接方法

4.1.1 增加模型的大小

  • 主要优点:
    • 增加网络深度【模型的深度】
    • 增加网络宽度【卷积核个数】
    • 是训练更高质量模型的一种简单而安全的方法,特别是考虑到大量标记训练数据的可用性。
  • 主要缺点
    • 容易过拟合:增加网络深度会有更多参数,特别是在训练集中标记的数据集少时,使网络容易过拟合
    • 计算资源急剧增加
      • 参数的增加,计算次数也会增加
      • 如果增加深度使用效率降低(如果大多数权重最终接近于零,容量增加并没有显著效果),计算资源就会被浪费。

4.1.2 解决增加模型大小导致的缺点思路

  • 思路一:【计算机设施效率降低,没有用】
    • 稀疏连接取代密集连接,并且在卷积内部也使用
      • 稀疏连接:就是有些参数权重为0【自己理解】
      • 在稀疏数据结构上进行数值计算,计算基础设施效率很低。
      • 即使参数减少了100倍,因此现有的计算效率低下使稀疏连接取代密集连接,模型并没有实际的提升
  • 思路二:【没有降低计算机设施效率,且使用了稀疏计算】
    • 使用密集连接,得到稀疏连接
      • inception块使用了4种不同大小的卷积核并行卷积【每个卷积核卷积是密集连接】,最后进行汇总融合【各个特征图汇总融合就变成了稀疏连接】。
    • 在调整学习率、超参数和改进的训练方法之后,Inception架构在定位和对象检测特别有用,最终证明它们至少是局部最优。
    • 尽管该体系结构已经成为计算机视觉的成功,但其质量是否可以归因于导致其构建的指导原则,仍然值得探索。

5.结构详述

5.1 Inception架构的主要思想

  • 主要思想:通过多个密集结构融合去获取近似的稀疏结构
  • 在较低层(靠近输入层),更注重提取局部特征。在较高层(靠近输出层),更注重提取全局特征。
  • 较低层提取局部特征,可以使用1*1卷积核。较高层提取较大特征,可以使用较大的卷积核(例如:3*3,5*5)提取
  • 使用不同大小的卷积核并行卷积,汇总融合要确保特征图大小一致,使用padding填充。
  • 池化操作对于网络成功至关重要,因此也添加了池化层
  • Inception模块相互叠加,它们输出相关性统计数据不同。
    • 更高特征会被更高层提取,在更高层特征提取,3×3和5×5卷积的比率应该会增加。
  • 仅在较高层开始使用Inception模块
    • 由于技术原因(训练期间的内存效率)。在传统卷积结构(CNN标准结构)后使用Inception模块是有益的。【但不是必须的,只是当前训练中的一些基础设施效率低下】
    • 另一个优点,它符合一种直觉,即视觉信息应该以各种尺度处理,然后聚合,以便下一阶段可以同时从不同尺度提取特征。
  • inception模块增了网络的深度与宽度,但是没有增加计算量。导致inception网络非Inception架构类似性能网络快2-3倍,需要仔细的手动设计模型。

5.2 原生inception块问题

  • Inception模块叠加,通道数会大大增加,导致较高层通道数非常大,计算量大大增加,可能导致计算故障。
  • 因为一个池化层存在,通道数一定会增加,其它层输出通道为1,最终输出层也会比输入层多3层
    在这里插入图片描述

5.3 解决通道数增加问题

  • 使用1*1卷积
    • 在3*3,5*5卷积之前使用1*1卷积降低通道数【降维】
      在这里插入图片描述

5.4 1*1卷积优点

  • 升维与降维
    • 1*1卷积层不会改变卷积核的大小,只会改变通道数,调整通道数,控制模型复杂度【升维,降维】
      • 通道数比卷积前小,是对数据降维,降低模型复杂度
      • 通道数比卷积前大,是对数据升维,增加模型复杂度
  • 增加非线性变换
    • 卷积层后会有非线性变换层,增加1*1卷积层,也就增加了非线性变换
  • 增加模型深度
  • 减少参数量与计算量
    • 1*1卷积参数只有1个,参数量较少,计算量也会减少
  • 可以替代全连接层【通道数就是神经元的个数】
  • 也可当作池化层
    • 使用1*1卷积核,当输入输出的特征图个数一致时,设置步长(stride),也可以代替池化层

6. GoogLeNet

  • 模型inception结构图
    在这里插入图片描述

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

  • GoogLeNet 这个名字是对LeNet 5网络的致敬

  • 卷积之后全部使用Relu激活函数

  • 图片大小为224×224,采用RGB颜色通道减去均值,对数据预处理

  • 网络深度为22层(加上池化层,为27层。再加上inception模块内部层,为100层)。

  • 全局平均池化代代替全连接层和展平层。

    • 网络能够很容易地适应和微调其他标签集。
    • 继续使用dropout

6.1辅助分类器

  • 由于模型的深度较大,反向传播求参数会导致梯度消失问题,通过添加中间层的辅助分类器,增加反向传播梯度信号,提供额外的正则化。
  • 辅助分类器放在Inception(4a)和(4d)模块的输出之上的较小卷积网络。
  • 注意:训练好的模型,会去掉辅助分类器,增加辅助分类器只是防止梯度消失问题,导致求参困难
  • 总损失函数公式
    L o s s t o t a l = L o s s e n d + 0.3 ∗ L o s s 辅 助 器 1 + 0.3 ∗ L o s s t o t a l 辅 助 器 2 \begin{aligned} Loss_{total}=Loss_{end}+0.3*Loss_{辅助器1}+0.3*Loss_{total辅助器2} \end{aligned} Losstotal=Lossend+0.3Loss1+0.3Losstotal2

7. 训练方法

  • 网络使用分布式机器学习系统进行训练。
    • 分布式机器学习系统具有数据并行性
    • 分布式系统,相当于多个电脑同时对该模型进行训练,数据分为k份,每份有batch个数据集,每个电脑进行前向与反向传播,主电脑用来优化更新参数
  • 使用0.9的动量异步随机梯度下降(stochastic gradient descent with 0.9 momentum )。
  • 使用固定学习率计划(每8个时期将学习率降低4%)

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

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

相关文章

Golang 【basic_leaming】基本数据类型

阅读目录Golang 数据类型介绍整型特殊整型unsafe.Sizeof 查看内存所占用大小int 不同长度直接的转换数字字面量语法(Number literals syntax)(了解)浮点型布尔值字符串字符串转义符多行字符串字符串的常用操作修改字符串byte 和 r…

PYNQ -z2 与 PC主板网口直连

文章目录1.下载映像文件并烧录到板子2. 将usb和网线连接到电脑上3. 使用xshell新建串口通信连接到板子4. 查看板子ip ifconfig命令5. 将pc的网络改成与板子同一个网段6. 通过ip地址访问1.下载映像文件并烧录到板子 可以参考 烧录镜像 2. 将usb和网线连接到电脑上 3. 使用xshe…

jsp+ssm计算机毕业设计毕业论文管理系统【附源码】

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JSPSSM mybatis Maven等等组成,B/S模式 Mave…

【函数】你上街买菜用的着函数吗?

前言 函数是什么 每个C程序都至少有一个函数,即main主函数 ,如果程序的任务比较简单,全部的代码都写在main函数中,但是在实际开发中,程序的任务往往比较复杂,如果全部的代码都写在main函数中,…

Nginx配置整合:基本概念、命令、反向代理、负载均衡、动静分离、高可用

一、基本概念 1.什么是Nginx Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理server。其特点是占有内存少。并发能力强,其并发能力确实在同类型的网页server中表现较好。 http服务器 Web服务器是指驻留于因特网上某种类型计算机的程…

热门的Java开源项目

1 JCSprout https://github.com/crossoverJie/JCSprout Star 17084 这是一个还处于萌芽阶段的 Java 核心知识库。分为常用集合、Java多线程、JVM、分布式相关、常用框架等内容 2 arthas https://github.com/alibaba/arthas Star 6836 Arthas旨在帮助开发人员解决Java应用程…

高级网络应用复习——三层交换DHCP中继(带命令)

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.知识点总结 二.DHCP中继实验 实验要求 实验命令 三层交换…

腾讯会议人数上限进不去?

很多用户都在使用腾讯会议来进行线上会议,因此经常会出现人数到达上限进不去的情况,非常令人头疼,那这时候要怎么办呢?下面就来看看解决办法。 腾讯会议人数上限进不去怎么办? 答:只能等待有人退出后再加入…

数据结构入门-单调队列

数据结构入门-单调队列 原理介绍 双向队列 思考一下:对于数组nums,我们想知道max(nums[i-k],...,nums[i])如何高效处理? 单调队列 单调队列,即从队首到队尾单调的队列。 #mermaid-svg-6PhVAHBib6ohdcIC {font-family:"tre…

从mask rcnn到mask scoring rcnn

mrcnn (mask rcnn) 不足:框架没有解决实例分割评分 对mask head输出的K(类别)个mask,选择哪个mask作为最终的输出,取决于分类支路置信度最高的类别。也就是用分类置信度来衡量mask质量,这会导致下图的现象: 左侧四幅图像显示出良好的检测结果,具有高分类分数但掩模质…

【spring系列】SPI详解

1.什么是SPI SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的API寻找服务实现。2.SPI和API的使用场景 API (Application Programming …

大数据Kudu(七):Kudu分区策略

文章目录 Kudu分区策略 一、​​​​​​​Partition By Range - 范围分区

最通俗易懂的 JAVA slf4j,log4j,log4j2,logback 关系与区别以及完整集成案例

最近在工作中,发现接触到的很多小伙伴分不清楚logback slf4j 以及log4j 的关系,有的人认为是一个东西,有的人认为是完全没关系,或者说有关系但是不清楚具体是什么区别和联系,今天咱们就简单梳理下他们之间的联系和区别…

项目式学习法(PBL)如何让你快速成为行业专家【一杯咖啡谈项目】

项目人人都是主角,没有旁观者。我们每个人也应当好PM,这就离不开学习提升自己,,如此,方能更好推动经济社会高质量发展。 1、项目式学习是什么? 关于项目式学习,目前国内外还没有个统一的定义&…

【python】 json字符串转对象

目录 一:json对象转换为json字符串 二:json字符串转换为json对象 三:json字符串{"name":"lily","sno":1001} 四:python面向对象程序设计 一:json对象转换为json字符串 import json…

Elasticsearch 安装及启动【Linux】

一、下载安装包 1.下载 Elasticsearch 官网下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch 2.下载 Kibana Kibana 数据可视化平台可以选择性安装 官网下载地址:https://www.elastic.co/cn/downloads/past-releases#kiban…

连续仨月霸占牛客榜首京东T8呕心巨作:700页JVM虚拟机实战手册

什么是Java虚拟机? 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息…

怎么防止同事用Evil.js的代码投毒

最近Evil.js被讨论的很多,项目介绍如下 项目被发布到npm上后,引起了激烈的讨论,最终因为安全问题被npm官方移除,代码也闭源了 作为一个前端老司机,我肯定是反对这种行为,泄私愤有很多种方式,代…

深度学习——多GPU训练代码实现

1.数据并行性。 一台机器有K个GPU,给定训练模型,每个GPU参数值是相同且同步,每个GPU独立地维护一组完整地模型参数。k2时数据并行地训练模型,利用两个GPU上的数据,并行计算小批量随机梯度下降。 K个GPU并行训练过程&a…

【Spring Cloud】Eureka注册中心从原理到实战图文详细教程

本期目录1. Eureka介绍1.1 Eureka能解决的问题2. Eureka原理3. 搭建Eureka Server3.1 引入依赖3.2 编写启动类3.3 修改配置文件3.4 启动Eureka微服务4. 服务注册4.1 导入依赖4.2 修改配置文件4.3 重启微服务4.4 启动多个微服务实例5. 服务发现5.1 修改业务层代码5.2 在RestTemp…