目前,神经网络模型为了得到更好的效果,越来越深和越来越宽的模型被提出。然而这样会带来以下几个问题:

1)参数量,计算量越来越大,在有限内存和算力的设备上,其应用也就越难以落地。

2)对于一些数据集较少的场景,太大的模型反而容易过拟合,但模型太小则泛化能力不够。

3)容易出现梯度消失的问题。

解决这些问题比较直观的方法就是采用稀疏连接来代替全连接层,但很明显,由于底层是通过矩阵计算的,稀疏连接在参数量上减少了,但并没有减少计算量。

因此,google提出了Inception系列Inception_v1 ….Inception_v4,使得模型在增加深度和宽度时不会带来参数量的巨大增加,同时也保证了计算量。

Inception体系结构的主要思想是考虑如何才能通过容易获得的密集组件来近似和覆盖卷积视觉网络的最佳局部稀疏结构。假设平移不变意味着网络将由卷积块构建,那我们所需要的只是找到最佳的局部构造并在空间上进行重复,最后将它们聚集在一起进行输出。为此,刚开始google提出了如下图Figure 1所示的结构

Figure 1:这里的Filter concatenation是指在通道上叠加。

  正如每个卷积块代表一块局部区域,在高层的空间集中度将降低(换句话说,感受野增大),这表明在高层将需要尽可能多的使用3x3, 5x5卷积核。因此这个原始版本的Inception模块将会产生一个问题,由于每层都是在通道上堆叠累加,因此在高层时通道数将非常大,即便是少量的5x5的卷积核,也可能在高层带来巨大的计算量,而加入池化层同样会增加巨大的计算量。

因此,第二个想法为减少通道数。Inception_V1采用了Network-in-Network 中提到的使用1x1 卷积来改变通道数的方法,提出在3x3或5x5卷积前先进行1x1卷积,减少通道数。

其结构图Figure 2如下:

  下面的例子说明添加了1x1卷积是如何减少参数的。假设Previous layer为112x112x64, 1x1的尺寸为1x1x64, 取32个这样的1x1x64卷积。而输出的尺寸为112x112x128。则使用1x1卷积后的参数为64x1x1x32+32x5x5x128 = 104448, 而在此之前需要的参数量为64x5x5x128 = 204800,减少了将近一倍的参数。这里减少的倍数接近等于输入通道数与1x1的数量的比值。

这个结构比较有用的一个方面是,通过1x1卷积的引入,即便在每层显著地增加了单元的数量,也不会在后面的层中造成无法控制的计算量。论文中提到,这个结构比那些非Inception模型快了3-10倍,虽然在精度上比别的模型可能差一点点,但计算量却少了非常多。

完整的网络结构图table 1如下:

table 1: 这里的3x3 reduce,5x5 reduce指的是在其前面添加了1x1。

其结构图如下:

Figure3:

(1)图中有3个softmax输出位置,有两个是在中间位置,这样方便在中间层输出分类,同时通过加权(中间0.3)的方式加到最终的分类结果中。同时,还能给模型增加反向传播的梯度信号,缓解了梯度消失问题,在一定程度上也有正则化的效果。在推理阶段,这两个softmax将会去除。

(2)使用了平均池化来代替全连接层,论文提到这样可以提高0.6%的准确率,但还是添加了一层FC,这是为了方便对输出进行调整,并且也使用了Dropout。

(3)关于table1中的Inception 3a 3b 4a 4b 4c等,区分方式是汇合的MaxPool层和DepthConcat。

(4)图像输入都经过了去均值,即每个位置减去整体均值。

如有错误或不合理之处,欢迎在评论中指正。

欢迎关注公众号“CV技术指南”,主要进行计算机视觉方向的论文解读,最新技术跟踪,以及CV技术的总结。

Inception系列之Inception_v1的更多相关文章

  1. 『高性能模型』卷积复杂度以及Inception系列

    转载自知乎:卷积神经网络的复杂度分析 之前的Inception学习博客: 『TensorFlow』读书笔记_Inception_V3_上 『TensorFlow』读书笔记_Inception_V3_下 ...

  2. 网络结构解读之inception系列五:Inception V4

    网络结构解读之inception系列五:Inception V4 在残差逐渐当道时,google开始研究inception和残差网络的性能差异以及结合的可能性,并且给出了实验结构. 本文思想阐述不多, ...

  3. 网络结构解读之inception系列四:Inception V3

    网络结构解读之inception系列四:Inception V3   Inception V3根据前面两篇结构的经验和新设计的结构的实验,总结了一套可借鉴的网络结构设计的原则.理解这些原则的背后隐藏的 ...

  4. 网络结构解读之inception系列三:BN-Inception(Inception V2)

    网络结构解读之inception系列三:BN-Inception(Inception V2) BN的出现大大解决了训练收敛问题.作者主要围绕归一化的操作做了一系列优化思路的阐述,值得细看. Batch ...

  5. 网络结构解读之inception系列二:GoogLeNet(Inception V1)

    网络结构解读之inception系列二:GoogLeNet(Inception V1) inception系列的开山之作,有网络结构设计的初期思考. Going deeper with convolu ...

  6. 网络结构解读之inception系列一:Network in Network

    网络结构解读之inception系列一:Network in Network   网上有很多的网络结构解读,之前也是看他人博客的介绍,但当自己看论文的时候,发现存在很多的细节和动机解读,而这部分能加深 ...

  7. Inception系列理解

    博客:博客园 | CSDN | blog 写在前面 Inception 家族成员:Inception-V1(GoogLeNet).BN-Inception.Inception-V2.Inception ...

  8. Inception系列

    从GoogLeNet的Inceptionv1开始,发展了众多inception,如inception v2.v3.v4与Inception-ResNet-V2. 故事还是要从inception v1开 ...

  9. 深度卷积网络-Inception系列

    目录 1. Inception V1 1.1 Inception module 2. Inception V2 3. Inception V3 4. Inception V4, Inception-R ...

随机推荐

  1. matlab中reshape 重构数组

    来源:https://ww2.mathworks.cn/help/matlab/ref/reshape.html?searchHighlight=reshape&s_tid=doc_srcht ...

  2. JDBC Java 程序从 MySQL 数据库中读取数据,并封装到 Javabean 对象中

    MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 连接 MySQL 数据库 用于测试的 M ...

  3. JavaScript reduce()的使用

    语法 arr.reduce(callback(accumulator, currentValue, index, array), initialValue) 参数 callback 执行数组中每个值 ...

  4. 九、Python+Selenium模拟登录

    研究QQ登录规则的话,得分析大量Javascript的加密解密,比较耗时间.自己也是练习很少,短时间成功不了.所以走了个捷径. Selenium是一个WEB自动化测试工具,它运行时会直接实例化出一个浏 ...

  5. 硬盘安装Linux

    准备材料:U盘.Linux镜像.UltraISO 1.下载安装UltraISO, 2.打开系统镜像 打开后我们就可以在左边侧栏看到镜像的内容 3.插入U盘,点击:启动->写入光盘映像->选 ...

  6. 【树形DP】CF 1293E Xenon's Attack on the Gangs

    题目大意 vjudge链接 给n个结点,n-1条无向边.即一棵树. 我们需要给这n-1条边赋上0~ n-2不重复的值. mex(u,v)表示从结点u到结点v经过的边权值中没有出现的最小非负整数. 计算 ...

  7. HDU-1051 Wooden Sticks--线性动归(LIS)

    题目大意:有n根木棍(n<5000),每根木棍有一个长度l和重量w(l,w<10000),现在要对这些木头进行加工,加工有以下规则: 1.你需要1分钟来准备第一根木头. 2.如果下一根木头 ...

  8. VS code开发工具的使用教程

    前言 工欲善其事必先利其器,提高程序员的开发效率必须要有一个好的开发工具,当前最好的前端开发工具主要有VS code.sublime Text.Atom.Webstorm.Notepad++. VS ...

  9. centos8安装RabbitMQ

    一.安装erlang # 添加仓库 curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh ...

  10. LUMEN框架多数据库连接配置方法

    LUMEN作为一款API导向很浓的框架,配置极简化,默认只支持一路DB配置 然而随着业务复杂度的提高,引入多个数据库连接似乎无法避免,下面介绍一下LUMEN连接多个数据库的配置方法: 修改.env文件 ...