一文读懂:GoogleNet的Inception从v1到v4的演变

news/2024/7/3 4:41:05

来源 | 机器学习炼丹术

GoogleNet和VGG是ImageNet挑战赛中的第一名和第二名。共同特点就是两个网络的层次都更深了。但是:

  • VGG继承了LeNet和AlexNet的一些框架结构

  • 而GoogleNet则做了更大胆的尝试,虽然深度有22层,但是参数却是Alexnet的1/12.而VGG都是Alexnet的三倍,由此可见,在内存和计算资源有限的时候,GoogleNet是好的结构,而且这个的性能更加优越,碾压VGG。

Inception v1

总之,Inception是GoogLeNet的核心,GoogLeNet优秀,一方面是运算速度快,而这就是Inception的功劳。

设计一个稀疏网络结构,但是怎么产生稠密的数据呢。就用这个!CNN中常见的三种卷积核,和池化操作堆叠在一起,一方面增加了网络的宽度,另一方面也加强了网络对尺度的是影响。但是这个原始的版本思路是好的,但是计算量太大了,因此作者对3x3和5x5的卷积层之前用了1x1的缩小图片的channel数量,因此V1是这个样子:

【1x1的卷积核有什么用呢?】

1x1卷积的主要目的是为了减少维度,还用于修正线性激活(ReLU)。比如,上一层的输出为100x100x128,经过具有256个通道的5x5卷积层之后(stride=1,pad=2),输出数据为100x100x256,其中,卷积层的参数为128x5x5x256= 819200。而假如上一层输出先经过具有32个通道的1x1卷积层,再经过具有256个输出的5x5卷积层,那么输出数据仍为为100x100x256,但卷积参数量已经减少为128x1x1x32 + 32x5x5x256= 204800,大约减少了4倍。

【为什么会有池化层在其中呢?】

一般来说,想让图像缩小,有以下两种方式:

但是左边的方法先池化层后inception,这样会导致特征的缺失,而右边的方法,会导致运算量很大。为了同时保持特征并且降低运算发,将网络改成下图,使用两个并行化的模块来降低计算量,也就是池化,卷积并行,然后再合并


inception V2

设计人员想,如果只是单纯的堆叠网络,虽然可以提高准确率,但是会导致计算效率的下降,如何在不增加过多额计算量的同时提高网络的表达能力呢?

【卷积分解(Fatorizing Convolutions)】

大尺寸的卷积核可以带来更大的感受野,但是也意味着更多的参数,比如size=5的卷积核有25个参数,size=3的有9个参数。GoogLeNet团队提出可以用2个连续的3x3的卷积核组成小网络来代替单个size=5的卷积层:

通过大量的实验证明,这样的方案并不会导致表达的缺失。更进一步,团队考虑了nx1的卷积核,如下图:

因此,任意的nxn的卷积都可以通过nx1后接上1xn来代替。但是团队发现在网络的前期使用这样分解的效果并不好,在中部使用效果才会好。

团队更新了网络中的Inception的结构,如下图:

figure5是原来的v1版本,然后figure6是改成两个3x3的版本,然后figure7是改成了1xn和nx1的版本。


inception v3

最重要的改进就是分解Factorization,把7x7分解成两个一维的卷积(1x7和7x1),3x3的也是一样,这样的好处是,既可以加速运算,又可以将一个卷积拆成两个卷积,这样使得网络的深度进一步加深,并且增加了网络的非线性。(每增加一层都要用ReLU),此时网络的输入也从224x224变成299x299。

 

Inception v4


研究了Inception模块与残差连接的结合,ResNet结构大大加深了网络的深度,而且极大的提高了训练速度。总之,Inception v4就是利用残差连接(Residual Connection)来改进v3,得到Inception-ResNet-v1, Inception-ResNet-v2, Inception-v4网络 我们先简单的看一下什么是残差结构:

结合起来就是:

然后通过二十个类似的模块,得到:

推荐阅读
  • 一只端午节鸭蛋粽子的背后:AI 与农业

  • 高文、张钹、杨强隔空论道:AI精度与隐私的博弈

  • 90行Python代码,让张小龙的微信地球转起来

  • 突发!印度封禁抖音、微信、快手等 59 款中国 App

  • 厉害!国内大学生计算机编程第一人,一人挑战一个队,百度最年轻 T10,现创业自动驾驶

  • Balancer因通缩代币STA遭遇闪电贷攻击,价值50万美元资产被黑

  • 浅谈分布式存储中的网络通信

你点的每个“在看”,我都认真当成了AI

http://lihuaxi.xjx100.cn/news/269280.html

相关文章

初学者必学的C++项目!花3天搞定

学C应该都知道Google测试框架,它是一个非常重要的测试软件,一直广泛应用于C/C项目测试。重点是,它的设计过程几乎覆盖C项目开发中常遇到的问题。所以Google测试框架常常被当作初学者训练工程代码、巩固基础语法最合适的项目。如果你对自己做没…

禁用编译优化_Tomcat8史上最全优化实践

Tomcat8优化1、Tomcat8优化1.1、Tomcat配置优化1.1.1、部署安装tomcat81.1.2 禁用AJP连接1.1.3、执行器(线程池)1.1.4 3种运行模式1.3、使用Apache JMeter进行测试1.3.1、下载安装1.3.2、修改主题和语言1.3.3、创建首页的测试用例1.3.4、启动、进行测试1…

Git简介

Git简介 Git 是目前世界上最先进的分布式版本控制系统(没有之一) 作用 源代码管理 为什么要进行源代码管理? 方便多人协同开发方便版本控制 Git的诞生 作者是 Linux 之父:Linus Benedict Torvalds当初开发 Git 仅仅是为了辅助 Linux 内核…

一个故事讲完 CPU 的工作原理

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达来自 | 知乎 作者 | 柳两丛 www.zhihu.com/question/40571490/answer/718942643上二年级的小明正坐在教室里。现在是数学课,下午第一节,窗外的蝉…

jQuery实例——仿京东仿淘宝列表导航菜单

以前看着京东,淘宝的导航做的真好,真想哪一天自己也能做出来这么漂亮功能全的导航菜单。今天弄了一下午终于自制成功,主要使用jQuery和CSS,实现功能基本和京东一样。 功能介绍: 1、鼠标停留导航; 2、根据子…

实战:人脸识别实战项目(源码共享)

首先我想问个问题:现在什么工程师最值钱?毫无疑问,我想超 90% 的都会说:人工智能工程师。也难怪,随着近几年人工智能的发展,已经逐渐渗透到了各个领域,比如:医疗、教育、机械自动化、…

工作流入门链接

百度百科-工作流 http://baike.baidu.com/link?urlZjElBNByyZz_ItLtd_Uqt3Sadcwv0-4CDO806vKQWJDuUOFybbkzpg8GOB1EU71w8bT4x64RoRXBrFXa7o_dK 企业应用工作流的好处http://jingyan.baidu.com/article/90895e0fe9c56164ec6b0b24.html工作流管理的好处http://blog.sina.com.cn/…

Scala之泛型类

2019独角兽企业重金招聘Python工程师标准>>> 1. 泛型类 带有一个或多个类型参数的类是泛型的。 泛型类的定义: //带有类型参数A的类定义class Stack[A] {private var elements: List[A] Nil//泛型方法def push(x: A) { elements x :: elements }def pe…