Inception系列理解
写在前面
Inception 家族成员:Inception-V1(GoogLeNet)、BN-Inception、Inception-V2、Inception-V3、Inception-ResNet-V1、Inception-V4、Inception-ResNet-V2。
Inception系列网络结构可以模块化为:
\]
- Stem:前处理部分
 - A B C:网络主体“三段式”,A B C每段的输入feature size依次折半,channel增加
 - ReductionA B:完成feature size折半操作(降采样)
 - Avg Pooling (+ Linear):后处理部分
 
Inception系列的演化过程就是上面各环节不断改进(越来越复杂)的过程,其进化方向大致为
- Stem:大卷积层→多个小卷积层堆叠→multi-branch 小卷积层堆叠
 - A B C:相同multi-branch结构→每阶段不同multi-branch结构→每阶段不同Residual+multi-branch结构,big convolution→ small convolution + BN → factorized convolution
 - ReductionA B:max pooling → 不同multi-branch conv(stride 2)结构
 - 后处理:Avg Pooling + Linear → Avg Pooling
 
性能进化如下图所示,single model通过center crop 在ImageNet上 Top1 和 Top5 准确率,

具体如下。
Inception-V1 (GoogLeNet)
Inception-V1,更被熟知的名字为GoogLeNet,意向Lenet致敬。
通过增加网络深度和宽度可以提升网络的表征能力。
增加宽度可以简单地通过增加卷积核数量来实现,GoogLeNet在增加卷积核数量的同时,引入了不同尺寸的卷积核,来捕捉不同尺度的特征,形成了multi-branch结构——这是GoogLeNet网络结构的最大特点,如下图所示,然后将不同branch得到的feature map 拼接在一起,为了让feature map的尺寸相同,每个branch均采用SAME padding方式,同时stride为1(包括max pooling)。为了降低计算量,又引入了\(1\times 1\)卷积层来降维,如下图右所示,该multi-branch结构称之为一个Inception Module,在GoogLeNet中采用的是下图右的Inception Module。

直接增加深度会导致浅层出现严重的梯度消失现象,GoogLeNet引入了辅助分类器(Auxiliary Classifier),在浅层和中间层插入,来增强回传时的梯度信号,引导浅层学习到更具区分力的特征。

最终,网络结构如下,主体三段式A B C 即 3x、4x、5x,

GoogLeNet网络结构的特点可以概括为,
- 同时使用不同尺寸的卷积核,形成multi-branch结构,来捕捉不同尺度的特征
 - 使用\(1 \times 1\)卷积降维,压缩信息,降低计算量
 - 在classifier前使用average pooling
 
BN-Inception
BN-Inception网络实际是在Batch Normalization论文中顺带提出的,旨在表现BN的强大。

与GoogLeNet的不同之处在于,
- 在每个激活层前增加BN层
 - 将Inception Module中的\(5 \times 5\) 卷积替换为2个\(3\times 3\) 卷积,如上图所示
 - 在Inception 3a和3b之后增加Inception 3c
 - 部分Inception Module中的Pooling层改为average pooling
 - 取消Inception Module之间衔接的pooling层,而将下采样操作交给Inception 3c和4e,令stride为2
 
BN-Inception网络结构如下

Inception-V2, V3
Inception V2和V3出自同一篇论文Rethinking the Inception Architecture for Computer Vision。
GoogLeNet和BN-Inception网络结构中Inception Module可分为3组,称之为3x、4x和5x(即主体三段式A B C),GoogLeNet和BN-Inception这3组采用相同Inception Module结构,只是堆叠的数量不同。
Inception V2和V3与以往最大的不同之处在于3组分别使用了不同结构的Inception Module,分别如下图从左到右所示,

具体地,
- 3x使用的Inception Module与BN-Inception相同,即将\(5\times 5\)拆分成2个堆叠的\(3\times 3\) ;
 - 4x使用的Inception Module采用了factorized convolutions ,将2维卷积拆分成2个堆叠的1维卷积,可类比传统计算机视觉中的“行列可分解卷积”,但中间夹了个激活,1维卷积的长度为7;
 - 5x使用的Inception Module,1维卷积不再堆叠而是并列,将结果concat;
 
除此之外,
- 3x和4x之间,4x和5x之间,均不存在衔接的池化层,下采样通过Inception Module中的stride实现
 - 取消了浅层的辅助分类器,只保留中层的辅助分类器
 - 最开始的几个卷积层调整为多个堆叠的\(3\times 3\) 卷积
 
据论文所述,V2的网络结构如下

据论文所述,V3与V2的差异在于,
- RMSProp Optimizer
 - Label Smoothing,训练中使用的label为one hot label与均匀分布的加权,可以看成一种正则
 - Factorized \(7 \times 7\),即将第一个\(7 \times 7\)卷积层变为堆叠的3个\(3 \times 3\)
 - BN-auxiliary,辅助分类器中的全连接层也加入BN
 
但是,实际发布的Inception V3完全是另外一回事,参见pytorch/inception,有人绘制了V3的网络架构如下——网上少有绘制正确的,下图中亦存在小瑕疵,最后一个下采样Inception Module中\(1\times 1\)的stride为1。
需要注意的是,起下采样作用两个Inception Module并不相同。

有的时候,Inception-V2和BN-Inception是混淆的。从Inception-V3开始,Inception架构变得越来越不像人搞的……
Inception-V4,Inception-ResNet-v1,Inception-ResNet-v2
Inception-V4,Inception-ResNet-v1 和 Inception-ResNet-v2出自同一篇论文Inception-V4, Inception-ResNet and the Impact of Residual Connections on Learning,
Inception-V4相对V3的主要变化在于,前处理使用更复杂的multi-branch stem模块,主体三段式与V3相同。

Inception-ResNet-V1与Inception-ResNet-V2,将Inception与ResNet结合,使用Inception结构来拟合残差部分,两者在A B C部分结构相同,只是后者channel数更多,两者的主要差异在前处理部分,后者采用了更复杂的multi-branch stem结构(与V4相同)。相比纯Inception结构,引入ResNet结构极大加快了网络的收敛速度。


以上。
参考
- GoogLeNet, Inception-V1: Going Deeper with Convolutions
 - Batch Normalization, BN-Inception: Accelerating Deep Network Training by Reducing Internal Covariate Shift
 - Inception-V2, V3: Rethinking the Inception Architecture for Computer Vision
 - [Inception-V4, Inception-ResNet and the Impact of Residual Connections on Learning](
 
Inception系列理解的更多相关文章
- 网络结构解读之inception系列四:Inception V3
		
网络结构解读之inception系列四:Inception V3 Inception V3根据前面两篇结构的经验和新设计的结构的实验,总结了一套可借鉴的网络结构设计的原则.理解这些原则的背后隐藏的 ...
 - 网络结构解读之inception系列一:Network in Network
		
网络结构解读之inception系列一:Network in Network 网上有很多的网络结构解读,之前也是看他人博客的介绍,但当自己看论文的时候,发现存在很多的细节和动机解读,而这部分能加深 ...
 - Windows 8实例教程系列 - 理解应用框架
		
原文:Windows 8实例教程系列 - 理解应用框架 Windows 操作系统之所以风靡世界,是因为其“易学易用”,从用户的角度出发,让数以万计的非IT人员使用计算机实现娱乐,工作等目的.Windo ...
 - 『高性能模型』卷积复杂度以及Inception系列
		
转载自知乎:卷积神经网络的复杂度分析 之前的Inception学习博客: 『TensorFlow』读书笔记_Inception_V3_上 『TensorFlow』读书笔记_Inception_V3_下 ...
 - ResNets和Inception的理解
		
ResNets和Inception的理解 ResNet解析
 - 网络结构解读之inception系列五:Inception V4
		
网络结构解读之inception系列五:Inception V4 在残差逐渐当道时,google开始研究inception和残差网络的性能差异以及结合的可能性,并且给出了实验结构. 本文思想阐述不多, ...
 - 网络结构解读之inception系列三:BN-Inception(Inception V2)
		
网络结构解读之inception系列三:BN-Inception(Inception V2) BN的出现大大解决了训练收敛问题.作者主要围绕归一化的操作做了一系列优化思路的阐述,值得细看. Batch ...
 - 网络结构解读之inception系列二:GoogLeNet(Inception V1)
		
网络结构解读之inception系列二:GoogLeNet(Inception V1) inception系列的开山之作,有网络结构设计的初期思考. Going deeper with convolu ...
 - Inception系列之Inception_v1
		
目前,神经网络模型为了得到更好的效果,越来越深和越来越宽的模型被提出.然而这样会带来以下几个问题: 1)参数量,计算量越来越大,在有限内存和算力的设备上,其应用也就越难以落地. 2)对于一些数据集较少 ...
 
随机推荐
- python基础-流程控制语句
			
所谓流程控制,就是在程序里面设定一些条件判断语句,满足哪条,就执行哪条 #if 单分支 if 条件: 满足条件后执行的代码 #例子 > : print()#结果为666 双分支 if 条件: 满 ...
 - 【俗话说】换个角度理解TCP的三次握手和四次挥手
			
PS:通俗一点的解释都会在引用块中 Nothing is true, Everything is permitted. 0. 什么是TCP TCP,全称Transmission Control Pro ...
 - 8421BCD转余3码Verilog HDL的设计(1)
			
近期阅读Verilog HDL高级数字设计(第二版)中,遇到了串行比特流BCD码转余3码转换器的设计,比较独特的是: (1)该转换器的输入为1位串行比特流,输出也为1位串行比特流. BCD码与余三码的 ...
 - utuntu sever1804显示中文putty可以输入中文
			
默认情况下,putty连接ubuntu server以后,哪怕设置的Utf-8的连接,也是无法显示中文的. 应该是ubuntu服务器端,没有字库的问题. 如果在putty显示和输入中文呢,因为配置信息 ...
 - windows上用putty从linux上下载文件
			
我之前使用putty都是直接从网上下的putty.exe,其实如果想下载windows的mis二进制文件,系统安装的话会包含,pscp.psftp.puttygen等一系列的文件. 今天下从服务器上, ...
 - Java easyui 下拉框默认选中第一个
			
html代码: <tr> <td> <div style="margin-bottom:5px">计价方式: <%--下拉框默认选中第 ...
 - 浅析js中的堆和栈
			
这里先说两个概念:1.堆(heap)2.栈(stack)堆 是堆内存的简称.栈 是栈内存的简称.说到堆栈,我们讲的就是内存的使用和分配了,没有寄存器的事,也没有硬盘的事.各种语言在处理堆栈的原理上都大 ...
 - el-select下拉加载(实现懒加载)
			
情况:项目出现了下拉数据量过大,出现页面卡死问题,反馈到我这:当时实现思路1.使用render函数去渲染下拉框 试了发现卡死情况依然存在,所以尝试方法2 2.使用原生js去添加下拉框的<opti ...
 - Asp.Net Core 中IdentityServer4 授权原理及刷新Token的应用
			
一.前言 上面分享了IdentityServer4 两篇系列文章,核心主题主要是密码授权模式及自定义授权模式,但是仅仅是分享了这两种模式的使用,这篇文章进一步来分享IdentityServer4的授权 ...
 - USB设备描述符和请求命令
			
USB设备描述符和请求命令 介绍标准的USB设备描述符和请求命令. 标准的USB描述符 当USB设备第一次连接到主机上时,要接收主机的枚举和配置,目的就是让主机知道该设备具有什么功能.是哪一类的USB ...