5.23.12 计算机视觉的 Inception 架构

1. 介绍

分类性能的提升往往会转化为各种应用领域中显着的质量提升,深度卷积架构的架构改进可用于提高大多数其他计算机视觉任务的性能,这些任务越来越依赖于高质量的学习视觉特征。在 AlexNet 功能无法与手工设计、制作的解决方案竞争的情况下,网络质量的改进为卷积网络带来了新的应用领域。

GoogleNet 使用了大约 700 万个参数,比其前身 AlexNet(使用 6000 万个参数)减少了 9 倍。此外,VGGNet 使用的参数比 AlexNet 多大约 3 倍。

Inception 架构的复杂性使得对网络进行更改变得更加困难。如果单纯地扩展架构,则很大一部分计算收益可能会立即丢失。如果认为有必要增加某些 Inception 式模型的容量,那么只需将所有  滤波器组大小  的数量加倍的简单变换将导致计算成本和参数数量增加 4 倍。

2. 通用设计原则

避免表示瓶颈,尤其是在网络早期。前馈网络可以用从输入层到分类器或回归器的非循环图来表示。这为信息流定义了明确的方向。对于网络中的任何一个分割(即将网络分成两部分,一边是输入,一边是输出),都可以评估通过该分割的信息量。

从输入到输出,表示的大小(即特征的数量或维度)应该逐渐减小,直到达到用于特定任务的最终表示。这种逐渐减小的过程有助于网络逐步提取和精炼关键信息,同时避免不必要的复杂性。理论上,信息内容不能仅仅通过表示的维度来评估,因为它抛弃了相关结构等重要因素;维度仅提供信息内容的粗略估计。


更高维度的表示更容易在网络中进行 局部处理。增加卷积网络中每个图块的激活可以实现更多独立的特征。由此产生的网络将训练得更快。 


空间聚合(如池化或者更复杂的聚合函数)可以在较低维度的嵌入上完成,而不会损失太多或任何表示能力。在执行更分散的(例如 3 × 3)卷积之前,可以在空间聚合之前减小输入表示的维度,而不会产生严重的不利影响。如果在 空间聚合 上下文中使用输出,则相邻单元之间的强相关性会导致降维期间的信息损失会较少。


平衡网络的宽度和深度。通过平衡  每个阶段 滤波器的数量和网络的深度可以达到网络的最佳性能。增加网络的宽度和深度有助于提高网络质量。然而,如果两者并行增加,则可以达到恒定计算量的最佳改进。

一个阶段可以是一个卷积层或者一组卷积层。

3. 使用大卷积核尺寸分解卷积

由于 Inception 网络是完全卷积的,因此每个权重对应于每次激活的一次乘法。因此,计算成本的任何减少都会导致参数数量的减少。这意味着通过适当的因子分解,我们最终可以获得更多 解耦 的参数,从而加快训练速度。此外,我们可以利用计算和内存节省来增加网络的滤波器组大小,同时保持在单台计算机上训练每个模型副本的能力。

解耦(Decoupling)是指降低系统组件之间的依赖程度

解耦是希望减少各个模块之间的依赖关系,使模块间尽可能的独立存在 

3.1 因式分解为更小的卷积

具有较大空间滤波器(例如 5 × 5 或 7 × 7)的卷积在计算方面往往会非常昂贵。例如,在输入数据有 m 个特征图或通道时 使用 n 个卷积核的 5 × 5 卷积的计算成本是具有相同数量卷积核的 3 × 3 卷积的 25 / 9 = 2.78 倍。当然,5×5 卷积核可以捕获较早层中较远的单元激活之间的信号之间的依赖关系,因此卷积核几何尺寸的减小会导致表达能力的巨大损失。

3.2 空间分解为不对称卷积

通过使用非对称卷积,可以做得比 2 × 2 更好,例如n × 1。例如,使用 3 × 1 卷积后跟 1 × 3 卷积相当于滑动具有与 3 × 3 卷积相同的感受野的两层网络。

如果输入和输出 卷积核 的数量相等,那么对于相同数量的输出 卷积核 ,两层解决方案的成本仍然要低 33%。相比之下,将一个 3 × 3 卷积分解为两个 2 × 2 卷积仅节省 11% 的计算量。

理论上,我们可以更进一步,认为可以用 1 × n 卷积,然后是 n × 1 卷积来替换任何 n × n 卷积,并且随着 n 的增长,计算成本节省会急剧增加。

n × n 卷积分解后的 Inception 模块

为 17 × 17 的特征图选择 n = 7

在中等网格大小上(在 m×m 特征图上,其中 m 范围在 12 到 20 之间)给出了非常好的结果。在这个层面上,通过使用 1 × 7 卷积,然后使用 7 × 1 卷积可以获得非常好的结果。

4. 辅助分类器的实用性

引入了辅助分类器的概念来提高非常深的网络的收敛性。最初的动机是将有用的梯度推到较低层,使它们立即有用,并通过解决非常深的网络中的梯度消失问题来提高训练期间的收敛性。在训练接近结束时,具有辅助分支的网络开始超过没有任何辅助分支的网络的准确性,并达到稍高的平台。

5. 有效减小网格(特征图)尺寸

在传统的卷积网络中,通常会使用某种池化操作(如最大池化或平均池化)来减小特征图的网格大小。在应用最大池化或平均池化之前,通常需要扩展网络滤波器的激活维度,以避免所谓的“表达瓶颈”。

例如,从一个具有 k 个 卷积核 的 d\times d 网格开始,如果希望得到一个具有 2k 个 卷积核 的\frac{d}{2}\times \frac{d}{2} 网格,首先需要在更大的网格上进行一个步长为1的卷积,使用 2k 个卷积核,然后应用一个额外的池化步骤。这意味着整体的计算成本主要由在较大网格上使用 2d^2k^2 操作的昂贵卷积所决定。

使用卷积替代池化

一种可能的解决方案是使用卷积来替代池化,这可以将计算成本减少到 2(\frac{d}{2})^2k^2 ,即减少到原来的四分之一。然而,这种替代方案会导致表示的整体维度降低到  (\frac{d}{2})^2k ,从而导致网络表达能力下降(即出现表达瓶颈)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

能找伴侣的相亲婚恋平台有哪些?6款值得信赖的恋爱交友软件体验测评

在这个超快节奏的社会里,好多人都忙着搞事业和搞钱,却把终身大事给忽略了。但是随着年龄越来越大,来自长辈和社会的压力也越来越大,因此网络上的相亲交友软件,就成了大多数单身贵族的脱单首选了。下面就来给大家讲讲我…

Day06:Flex 布局

目标:熟练使用 Flex 完成结构化布局 一、标准流 标准流也叫文档流,指的是标签在页面中默认的排布规则,例如:块元素独占一行,行内元素可以一行显示多个。 二、浮动 1、基本使用 作用:让块元素水平排列。 …

【C++题解】1698. 请输出带有特殊尾数的数

问题&#xff1a;1698. 请输出带有特殊尾数的数 类型&#xff1a; 题目描述&#xff1a; 请输出1∼n 中所有个位为 1、3、5、7中任意一个数的整数&#xff0c;每行 1 个。( n<1000 ) 比如&#xff0c;假设从键盘读入 20&#xff0c;输出结果如下&#xff1a; 1 3 5 7 11 1…

树莓派4B 有电但无法启动

试过多个SD卡&#xff0c;反复烧系统镜像都无法启动。接HDMI显示器没有信号输出&#xff0c;上电后PWR红灯长亮&#xff0c;ACT绿灯闪一下就不亮了&#xff0c;GPIO几个电源脚有电&#xff0c;芯片会发热&#xff0c;测量多个TP点电压好像都正常。 ……

N进制计数器【01】

N进制计数器 前面介绍过二进制计数器和十进制计数器&#xff0c;但是在很多时候需要到其他进制的计数器&#xff0c;我们把这些任意进制的计数器简称为 N 进制计数器 设计 N 进制计数器的方法有两种&#xff1a; 用时钟触发器和门电路设计&#xff08;前面常用的方法&#xf…

【Telemac】Telemac相关报错记录

文章目录 1.下载BlueKenue后缀为man解决办法2.运行Telemac项目提示Fortran报错解决办法1.下载BlueKenue后缀为man BlueKenue官方下载链接: 可以看到下载器请求时出现了问题,下载BlueKenue后缀为man. 解决办法 修改下载后的文件后缀为msi即可 2.运行Telemac项目提示Fortr…

Git时光机、Git标签、Git分支、GitHub协作

Git时光机&#xff08;切换版本&#xff09; 1.查看提交历史 HEAD指针指向这次分支的最后一次提交 版本信息一行显示【git log --prettyoneline】 2.引用日志【git reflog】 &#xff08;只在自己的工作区中存在&#xff09; 非常重要&#xff1a;当HEAD指针进行切换之后&…

el-switch自动触发更新事件

比如有这样一个列表&#xff0c;允许修改单条数据的状态。希望在更改el-switch状态时能够有个弹框做二次确认&#xff0c;没问题&#xff0c;el-switch已经帮我们想到了&#xff0c;所以它提供了beforeChange&#xff0c;根据beforeChange的结果来决定是否修改状态。一般确认修…

qt-C++笔记之使用QtConcurrent异步地执行槽函数中的内容,使其不阻塞主界面

qt-C笔记之使用QtConcurrent异步地执行槽函数中的内容&#xff0c;使其不阻塞主界面 code review! 文章目录 qt-C笔记之使用QtConcurrent异步地执行槽函数中的内容&#xff0c;使其不阻塞主界面1.QtConcurrent::run基本用法基本用法启动一个全局函数或静态成员函数使用 Lambda…

C++进阶之路:何为拷贝构造函数,深入理解浅拷贝与深拷贝(类与对象_中篇)

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

脚注:书籍的小秘密,躲藏在脚注间

脚注&#xff1a;书籍的小秘密&#xff0c;躲藏在脚注间 脚注是一种在文本中提供补充信息、引用出处或注解的方式&#xff0c;有助于读者更全面地理解文中内容&#xff0c;并为进一步研究提供参考和跳转点。 在一书本中&#xff0c;脚注是额外提供给读者的文字信息&#xff0…

SpringCloud系列(31)--使用Hystrix进行服务降级

前言&#xff1a;在上一章节中我们创建了服务消费者模块&#xff0c;而本节内容则是使用Hystrix对服务进行服务降级处理。 1、首先我们先对服务提供者的服务进行服务降级处理 (1)修改cloud-provider-hystrix-payment8001子模块的PaymentServiceImpl类 注&#xff1a;HystrixP…

Stream流的使用

目录 一&#xff0c;Stream流 1.1 概述 1.2 Stream代码示例 二&#xff0c;Stream流的使用 2.1 数据准备 2.2 创建流对象 2.3 中间操作 filter map distinct sorted limit skip flatMap 2.4 终结操作 foreach count max&min collect 2.5 查找与匹配 a…

秒级达百万高并发框架Disruptor

1、起源 Disruptor最初由lmax.com开发&#xff0c;2010年在Qcon公开发表&#xff0c;并于2011年开源&#xff0c;企业应用软件专家Martin Fowler专门撰写长文介绍&#xff0c;同年它还获得了Oracle官方的Duke大奖。其官网定义为&#xff1a;“High Performance Inter-Thread M…

2022年CSP-J入门级第一轮初赛真题

一、单项选择题&#xff08;共15题&#xff0c;每题2分&#xff0c;共计30分&#xff1b;每题有且仅有一个正确选项&#xff09; 第 1 题 在内存储器中每个存储单元都被赋予一个唯一的序号&#xff0c;称为&#xff08;&#xff09;。 A. 地址B. 序号C. 下标D. 编号 第 2 题 编…

Spring MVC+mybatis 项目入门:旅游网(三)用户注册——控制反转以及Hibernate Validator数据验证

个人博客&#xff1a;Spring MVCmybatis 项目入门:旅游网&#xff08;三&#xff09;用户注册 | iwtss blog 先看这个&#xff01; 这是18年的文章&#xff0c;回收站里恢复的&#xff0c;现阶段看基本是没有参考意义的&#xff0c;技术老旧脱离时代&#xff08;2024年辣铁铁&…

Leetcode 剑指 Offer II 079.子集

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返…

Introduction of Internet 计算机网络概述

计算机网络的概念 计算机网络的定义&#xff1a; 多台独立的计算机通过通信线路实现资源共享的计算机系统 计算机网络的组成 资源子网&#xff1a;提供共享的软件资源和硬件资源 通信子网&#xff1a;提供信息交换的网络结点和通信线路 计算机网络类型 按照拓扑排序 星型…

KVM+GFS分布式存储系统构建KVM高可用

KVMGFS分布式存储系统构建KVM高可用 文章目录 KVMGFS分布式存储系统构建KVM高可用资源列表基础环境一、安装部署KVM1.1、安装KVM1.2、验证1.3、开启libvirtd服务1.4、配置KVM桥接网络 二、部署GlusterFS2.1、安装GlusterFS软件2.2、所有node节点启动GFS2.3、创建GFS群集2.4、查…