• 多学科构建“大介入” 中国介入医师年会南京召开 2019-04-18
  • 明星高考奇葩事杨幂总分第一 赵薇丢准考证(组图) 2019-04-12
  • 西北大学新传院与西部网签约 开启校媒合作新模式 2019-04-12
  • 《习近平新闻思想讲义(2018年版)》出版发行 2019-04-07
  • 光明日报副总编辑沈卫星 2019-04-07
  • 5月一二三线城市房价环比都涨了,后续会咋样? 2019-04-06
  • 湖州吴兴:打造智慧健康养老“吴兴模式” 2019-04-06
  • 陕西卫计委党组书记胡志强被查,系山西省委原书记胡富国长子 2019-03-31
  • 荆楚网企业法人营业执照 2019-03-27
  • 江西吉安永丰县:芒种农忙(图) 2019-03-27
  • 智媒云图(Intell Vision):图书馆“书童” 2019-03-24
  • 北京:构筑“三维”立体防护网 保险业对非法集资说“NO” 2019-03-17
  • 800万尾鱼苗放流天津蓟州于桥水库 2019-03-17
  • 推动第三代杂交水稻研究 2019-03-06
  • 奇闻怪事:瑶族怪异风俗习惯之烟袋定情 2019-03-06
  • 冰球的冰刀图片: 冰球打架视频

    北京 切换校区

    全国24小时免费热线

    400-009-1906

    【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络GoogLeNet

    GoogLeNet是由google的Christian Szegedy等人在2014年的论文《Going Deeper with Convolutions》提出,其最大的亮点是提出一种叫Inception的结构,以此为基础构建GoogLeNet,并在当年的ImageNet分类和检测任务中获得第一,ps:GoogLeNet的取名是为了向YannLeCun的LeNet系列致敬。

    (本系列所有代码均在github:https://github.com/huxiaoman7/PaddlePaddle_code)

    关于深度网络的一些思考

    在本系列最开始的几篇文章我们讲到了卷积神经网络,设计的网络结构也非常简单,属于浅层神经网络,如三层的卷积神经网络等,但是在层数比较少的时候,有时候效果往往并没有那么好,在实验过程中发现,当我们尝试增加网络的层数,或者增加每一层网络的神经元个数的时候,对准确率有一定的提升,简单的说就是增加网络的深度与宽度,但这样做有两个明显的缺点:

    • 更深更宽的网络意味着更多的参数,提高了模型的复杂度,从而大大增加过拟合的风险,尤其在训练数据不是那么多或者某个label训练数据不足的情况下更容易发生;
    • 增加计算资源的消耗,实际情况下,不管是因为数据稀疏还是扩充的网络结构利用不充分(比如很多权重接近0),都会导致大量计算的浪费。

    解决以上两个问题的基本方法是将全连接或卷积连接改为稀疏连接。不管从生物的角度还是机器学习的角度,稀疏性都有良好的表现,回想一下在讲AlexNet这一节提出的Dropout网络以及ReLU激活函数,其本质就是利用稀疏性提高模型泛化性(但需要计算的参数没变少)。

    简单解释下稀疏性,当整个特征空间是非线性甚至不连续时:

    • 学好局部空间的特征集更能提升性能,类似于Maxout网络中使用多个局部线性函数的组合来拟合非线性函数的思想;
    • 假设整个特征空间由N个不连续局部特征空间集合组成,任意一个样本会被映射到这N个空间中并激活/不激活相应特征维度,如果用C1表示某类样本被激活的特征维度集合,用C2表示另一类样本的特征维度集合,当数据量不够大时,要想增加特征区分度并很好的区分两类样本,就要降低C1和C2的重合度(比如可用Jaccard距离衡量),即缩小C1和C2的大小,意味着相应的特征维度集会变稀疏。

    不过尴尬的是,现在的计算机体系结构更善于稠密数据的计算,而在非均匀分布的稀疏数据上的计算效率极差,比如稀疏性会导致的缓存miss率极高,于是需要一种方法既能发挥稀疏网络的优势又能保证计算效率。好在前人做了大量实验(如《On Two-Dimensional Sparse Matrix Partitioning: Models, Methods, and a Recipe》),发现对稀疏矩阵做聚类得到相对稠密的子矩阵可以大幅提高稀疏矩阵乘法性能,借鉴这个思想,作者提出Inception的结构。

    图1 Inception结构

    • 把不同大小卷积核抽象得到的特征空间看做子特征空间,每个子特征空间都是稀疏的,把这些不同尺度特征做融合,相当于得到一个相对稠密的空间;
    • 采用1×1、3×3、5×5卷积核(不是必须的,也可以是其他大小),stride取1,利用padding可以方便的做输出特征维度对齐;
    • 大量事实表明pooling层能有效提高卷积网络的效果,所以加了一条max pooling路径;
    • 这个结构符合直观理解,视觉信息通过不同尺度的变换被聚合起来作为下一阶段的特征,比如:人的高矮、胖瘦、青老信息被聚合后做下一步判断。

    这个网络的最大问题是5×5卷积带来了巨大计算负担,例如,假设上层输入为:28×28×192:

    • 直接经过96个5×5卷积层(stride=1,padding=2)后,输出为:28×28×96,卷积层参数量为:192×5×5×96=460800;
    • 借鉴NIN网络(Network in Network,后续会讲),在5×5卷积前使用32个1×1卷积核做维度缩减,变成28×28×32,之后经过96个5×5卷积层(stride=1,padding=2)后,输出为:28×28×96,但所有卷积层的参数量为:192×1×1×32+32×5×5×96=82944,可见整个参数量是原来的1/5.5,且效果上没有多少损失。

      新网络结构为

    图2 新Inception结构

    GoogLeNet网络结构

    利用上述Inception??楣菇℅oogLeNet,实验表明Inception??槌鱿衷诟卟闾卣鞒橄笫被岣佑行Вㄎ依斫庥捎谄浣峁固氐?,更适合提取高阶特征,让它提取低阶特征会导致特征信息丢失),所以在低层依然使用传统卷积层。整个网路结构如下:

    图3 GoogLeNet网络结构

    图4 GoogLeNet详细网络结构示意图

    网络说明:

    • 所有卷积层均使用ReLU激活函数,包括做了1×1卷积降维后的激活;
    • 移除全连接层,像NIN一样使用Global Average Pooling,使得Top 1准确率提高0.6%,但由于GAP与类别数目有关系,为了方便大家做模型fine-tuning,最后加了一个全连接层;
    • 与前面的ResNet类似,实验观察到,相对浅层的神经网络层对模型效果有较大的贡献,训练阶段通过对Inception(4a、4d)增加两个额外的分类器来增强反向传播时的梯度信号,但最重要的还是正则化作用,这一点在GoogLeNet v3中得到实验证实,并间接证实了GoogLeNet V2中BN的正则化作用,这两个分类器的loss会以0.3的权重加在整体loss上,在模型inference阶段,这两个分类器会被去掉;
    • 用于降维的1×1卷积核个数为128个;
    • 全连接层使用1024个神经元;
    • 使用丢弃概率为0.7的Dropout层;

    网络结构详细说明:

    输入数据为224×224×3的RGB图像,图中"S"代表做same-padding,"V"代表不做。

    • C1卷积层:64个7×7卷积核(stride=2,padding=3),输出为:112×112×64;
    • P1抽样层:64个3×3卷积核(stride=2),输出为56×56×64,其中:56=(112-3+1)/2+1
    • C2卷积层:192个3×3卷积核(stride=1,padding=1),输出为:56×56×192;
    • P2抽样层:192个3×3卷积核(stride=2),输出为28×28×192,其中:28=(56-3+1)/2+1,接着数据被分出4个分支,进入Inception (3a)
    • Inception (3a):由4部分组成
      • 64个1×1的卷积核,输出为28×28×64;
      • 96个1×1的卷积核做降维,输出为28×28×96,之后128个3×3卷积核(stride=1,padding=1),输出为:28×28×128
      • 16个1×1的卷积核做降维,输出为28×28×16,之后32个5×5卷积核(stride=1,padding=2),输出为:28×28×32
      • 192个3×3卷积核(stride=1,padding=1),输出为28×28×192,进行32个1×1卷积核,输出为:28×28×32

        最后对4个分支的输出做“深度”方向组合,得到输出28×28×256,接着数据被分出4个分支,进入Inception (3b);

    • Inception (3b):由4部分组成
      • 128个1×1的卷积核,输出为28×28×128;
      • 128个1×1的卷积核做降维,输出为28×28×128,进行192个3×3卷积核(stride=1,padding=1),输出为:28×28×192
      • 32个1×1的卷积核做降维,输出为28×28×32,进行96个5×5卷积核(stride=1,padding=2),输出为:28×28×96
      • 256个3×3卷积核(stride=1,padding=1),输出为28×28×256,进行64个1×1卷积核,输出为:28×28×64

        最后对4个分支的输出做“深度”方向组合,得到输出28×28×480;

        后面结构以此类推。

    用PaddlePaddle实现GoogLeNet

    1.网络结构googlenet.py

    在PaddlePaddle的models下面,有关于GoogLeNet的实现代码,大家可以直接学习拿来跑一下:

     

    2.训练模型

     

    3.运行方式

    1 python train.py googlenet

    其中最后的googlenet是可选的网络模型,输入其他的网络模型,如alexnet、vgg3、vgg6等就可以用不同的网络结构来训练了。

    用Tensorflow实现GoogLeNet

    tensorflow的实现在models里有非常详细的代码,这里就不全部贴出来了,大家可以在models/research/slim/nets/里详细看看,关于InceptionV1~InceptionV4的实现都有。

    ps:这里的slim不是tensorflow的contrib下的slim,是models下的slim,别弄混了,slim可以理解为Tensorflow的一个高阶api,在构建这些复杂的网络结构时,可以直接调用slim封装好的网络结构就可以了,而不需要从头开始写整个网络结构。关于slim的详细大家可以在网上搜索,非常方便。

     

    总结

    其实GoogLeNet的最关键的一点就是提出了Inception结构,这有个什么好处呢,原来你想要提高准确率,需要堆叠更深的层,增加神经元个数等,堆叠到一定层可能结果的准确率就提不上去了,因为参数更多了啊,模型更复杂,更容易过拟合了,但是在实验中转向了更稀疏但是更精密的结构同样可以达到很好的效果,说明我们可以照着这个思路走,继续做,所以后面会有InceptionV2,V3,V4等,它表现的结果也非常好。给我们传统的通过堆叠层提高准确率的想法提供了一个新的思路。

    相关资讯

    • 北京校区
    • 山西校区
    • 郑州校区
    • 武汉校区
    • 四川校区
    • 长沙校区
    • 深圳校区
    • 上海校区
    • 广州校区
    • 保定招生办

    北京海淀区校区(总部):北京市海淀区西三旗街道建材城西路中腾建华商务大厦东侧二层尚学堂
    北京京南校区:北京亦庄经济开发区科创十四街6号院1号楼 赛蒂国际工业园
    咨询电话:400-009-1906 / 010-56233821
    面授课程: JavaEE培训、 大数据就业班培训、 大数据云计算周末班培训、 零基础大数据连读班培训、 大数据云计算高手班培训、 人工智能周末班培训、人工智能+Python全栈培训、 H5+PHP全栈工程师培训

    山西学区地址:山西省晋中市榆次区大学城大学生活广场万科商业A1座702

    郑州学区地址:河南电子商务产业园6号楼4层407
    咨询电话:0371-55177956

    武汉学区地址:湖北省武汉市江夏区江夏大道26号 宏信悦谷创业园4楼
    咨询电话:027-87989193

    四川学区地址:成都市高新区锦晖西一街99号布鲁明顿大厦2栋1003室
    咨询电话:028-65176856 / 13880900114

    网址://www.cssxt.com/
    咨询电话:0731-83072091

    深圳校区地址:深圳市宝安区航城街道航城大道航城创新创业园A4栋210(固戍地铁站C出口)
    咨询电话:0755-23061965 / 18898413781

    上海尚学堂松江校区地址:上海市松江区荣乐东路2369弄45号绿地伯顿大厦2层
    咨询电话:021-67690939

    广州校区地址:广州市天河区元岗横路31号慧通产业广场B区B1栋6楼尚学堂(地铁3号线或6号线到“天河客运站”D出口,右拐直走约800米)
    咨询电话:020-2989 6995

    保定招生办公室

    地址:河北省保定市竞秀区朝阳南大街777号鸿悦国际1101室

    电话:15132423123

    Copyright 2006-2019 北京尚学堂科技有限公司  京ICP备13018289号-19  京公网安备11010802015183  
    媒体联系:18610174079 闫老师  

    Java基础班,免费试学三周

  • 多学科构建“大介入” 中国介入医师年会南京召开 2019-04-18
  • 明星高考奇葩事杨幂总分第一 赵薇丢准考证(组图) 2019-04-12
  • 西北大学新传院与西部网签约 开启校媒合作新模式 2019-04-12
  • 《习近平新闻思想讲义(2018年版)》出版发行 2019-04-07
  • 光明日报副总编辑沈卫星 2019-04-07
  • 5月一二三线城市房价环比都涨了,后续会咋样? 2019-04-06
  • 湖州吴兴:打造智慧健康养老“吴兴模式” 2019-04-06
  • 陕西卫计委党组书记胡志强被查,系山西省委原书记胡富国长子 2019-03-31
  • 荆楚网企业法人营业执照 2019-03-27
  • 江西吉安永丰县:芒种农忙(图) 2019-03-27
  • 智媒云图(Intell Vision):图书馆“书童” 2019-03-24
  • 北京:构筑“三维”立体防护网 保险业对非法集资说“NO” 2019-03-17
  • 800万尾鱼苗放流天津蓟州于桥水库 2019-03-17
  • 推动第三代杂交水稻研究 2019-03-06
  • 奇闻怪事:瑶族怪异风俗习惯之烟袋定情 2019-03-06
  • 江苏时时彩开奖结果 体彩排列3资讯 快乐飞艇是哪里的彩票 双色球基本走势图2元 彩票平台骗局 内蒙古时时彩官网下载 吉林时时彩豹子预测 2元彩票怎么看中奖 易发棋牌 足彩合买 亚洲博彩公司 排列五预测 北京赛车pk10开奖直播 法甲用人规则 彩票预测官方网 云南时时彩一天多少期