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

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. getopt函数用法

    getopt被用来解析命令行选项参数. #include <unistd.h>      extern char *optarg;  //选项的参数指针      extern int o ...

  2. P3419 [POI2005]SAM-Toy Cars / SP688 SAM - Toy Cars

    一道很妙的贪心题 题面 我们考虑当我们插入时会面临的两种情况 当地上的玩具,不满 \(k\) 个时,那我们直接放就可以了. 当满了 \(k\) 个的时候,我们就要从地上拿出一个来给当前的腾位置. 这就 ...

  3. 【题解】[USACO07OPEN]Dining G

    \(Link\) \(\text{Solution:}\) 这一题,我们要做到,食物和牛.牛和饮料均为一对一的关系.我们发现这个图不好建立. 经典技巧:将牛拆边,拆成入点和出点,并连容量为\(1\)的 ...

  4. JavaScript封装函数:获取下一个/上一个兄弟元素节点

    要求: 获得下一个/上一个兄弟元素节点,不包括文本节点等 解决IE兼容性问题 代码实现: 获得下一个兄弟元素节点: function getNextElement(element) { var el ...

  5. tuple的增删改查

    dict = {"k1": "v1", "k2": "v2", "k3": "v3&quo ...

  6. JS原生练习

    1.输出1-10000之间的数 <script> for(i=1;i<=10000;i++) { document.write(i + "<br>") ...

  7. 《New Horizon College English》 (Third Edition) -长篇阅读(Skmming and Scanning)

    <New Horizon College English>(Third Edition) <新视野大学英语>(第三版) 长篇阅读(Skmming and Scanning) 总 ...

  8. 多测师讲解selenium ——切换窗口——打印句柄_高级讲师肖sir

    (一)同一个窗口打开两个浏览器 from selenium import webdriverfrom time import sleepdrvier=webdriver.Chrome()url='ht ...

  9. sop服务治理

    一,为什么需要服务治理: 我们最先接触的单体架构, 整个系统就只有一个工程, 打包往往是打成了 war 包, 然后部署到单一 tomcat 上面, 这种就是单体架构, 如图: 假如系统按照功能划分了, ...

  10. 怎样学好 java ?

    浅谈Java的学习之路--怎样学好JAVA ?Java - 近10年来计算机软件发展过程中的传奇,其在众多开发者心中的地位就如"屠龙刀"."倚天剑". Java ...