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

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. mac操作liunx

    mkdir demo //创建一个文件夹 touch index.html // 创建一个html文件 rm rouch index.html //删除找个index.html文件 rmdir dem ...

  2. SSIS 生成文件

    程序说明 此SSIS的目标是生成如下的文本文件 此文件的列由TAB键分割,可以使用notepad++来查看 这样就能够看清TAB键了 文件由%H%表示头部和%D%表示的细节部分 以下为程序开发使用的V ...

  3. Linux系统常用API总结

    1.错误处理 - fprintf() - perror() 2.通用I/O模型 - fd = open(pathname, flags, mode) - numread = read(fd, buff ...

  4. 多测师讲解selenium_alert弹框定位_高级讲师肖sir

    from selenium import webdriverfrom time import sleepdrvier=webdriver.Chrome()url=r'F:\dcs\DCS课程安排\se ...

  5. 怎样学好 java ?

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

  6. win10的cortana搜索显示空白

    解决方法:重置应用 问题原因:待查明 然后,我们往下拉

  7. linux centos 03

    linux用户权限相关 root用户  相当于qq群的群主 sudo命令  相当于qq群的管理员 普通用户  相当于qq群的 水军 超级用户root的UID是 0  组ID也是 0  普通用户的UID ...

  8. day37 Pyhton 网络编程04

    # tcp协议和udp协议的选择问题 # tcp # 大量的连续的数据 传递文件\发送邮件 # 文件的传递 # 下载电影 # udp # 短消息类 社交软件 # qq 微信 # 在线播放视频 快会丢帧 ...

  9. 在VC6.0下运行C语言程序,以及编程入门必备的常识类小知识!

    今天给大家分享在VC6.0环境下编写C语言程序的基本步骤,为初学者打开学习C语言的第一道门.具体步骤如下(如果需要软件资源,可以留言): 1)新建工作区 依次点击 文件--新建--工作区 或是Ctrl ...

  10. 【C语言程序设计】—最近超火的小游戏—【数字炸弹】!

    ✍  准备工作和建议 一.程序的原理 在动手编程之前,得先跟大家说一下这个程序是干什么的. 我们可以称呼这个游戏为<数字炸弹>. 游戏的原理是这样: 每一轮电脑从 1 到 100 中随机抽 ...