深度学习系列用PaddlePaddle和新时代

电子产品制造设备2020年06月06日

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

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

(本系列所有代码均在github:

关于深度络的一些思考

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

更深更宽的络意味着更多的参数,提高了模型的复杂度,从而大大增加过拟合的风险,尤其在训练数据不是那么多或者某个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结构

把不同大小卷积核抽象得到的特征空间看做子特征空间,每个子特征空间都是稀疏的,把这些不同尺度特征做融合,相当于得到一个相对稠密的空间;

采用11、33、55卷积核(不是必须的,也可以是其他大小),stride取1,利用padding可以方便的做输出特征维度对齐;

大量事实表明pooling层能有效提高卷积络的效果,所以加了一条max pooling路径;

这个结构符合一下子同比加速了0 .5个百分点直观理解,视觉信息通过不同尺度的变换被聚合起来作为下一阶段的特征,比如:人的高矮、胖瘦、青老信息被聚合后做下一步判断。

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

直接经过96个55卷积层(stride=1,padding=2)后,输出为:282896,卷积层参数量为:=460800;

借鉴NIN络(Network in Network,后续会讲)

,在55卷积前使用32个11卷积核做维度缩减,变成282832,之后经过96个55卷积层(stride=1,padding=2)后,输出为:282896,但所有卷积层的参数量为:+325596=82944,可见整个参数量是原来的1/5.5,且效果上没有多少损失。

新络结构为

图2 新Inception结构

GoogLeNet络结构

利用上述Inception模块构建GoogLeNet,实验表明Inception模块出现在高层特征抽象时会更加有效(我理解由于其结构特点,更适合提取高阶特征,让它提取低阶特征会导致特征信息丢失),所以在低层依然使用传统卷积层。整个路结构如下:

图3 GoogLeNet络结构

图4 GoogLeNet详细络结构示意图

络说明:

所有卷积层均使用ReLU激活函数,包括做了11卷积降维后的激活;

移除全连接层,像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阶段,这两个分类器会被去掉;

用于降维的11卷积核个数为128个;

全连接层使用1024个神经元;

使用丢弃概率为0.7的Dropout层;

络结构详细说明:

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

C1卷积层:64个77卷积核(stride=2,padding=3),输出为:;

P1抽样层:64个33卷积核(stride=2),输出为565664,其中:56=(+1)/2+1

C2卷积层:192个33卷积核(stride=1,padding=1),输出为:;

P2抽样层:192个33卷积核(stride=2),输出为,其中:28=(+1)/2+1,接着数据被分出4个分支,进入Inception (3a)

Inception (3a):由4部分组成

64个11的卷积核,输出为282864;

96个11的卷积核做降维,输出为282896,之后128个33卷积核(stride=1,padding=1),输出为:

16个11的卷积核做降维,输出为282816,之后32个55卷积核(stride=1,padding=2),输出为:282832

192个33卷积核(stride=1,padding=1),输出为,进行32个11卷积核,输出为:282832

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

Inception (3b):由4部分组成

128个11的卷积核,输出为;

128个11的卷积核做降维,输出为,进行192个33卷积核(stride=1,padding=1),输出为:

32个11的卷积核做降维,输出为282832,进行96个55卷积核(stride=1,padding=2),输出为:282896

256个33卷积核(stride=1,padding=1),输出为,进行64个11卷积核,输出为:282864

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

后面结构以此类推。

用PaddlePaddle实现GoogLeNet

1.络结构

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

2.训练模型

3.运行方式

1 python 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等,它表现的结果也非常好。给我们传统的通过堆叠层提高准确率的想法提供了一个新的思路。

作者:Charlotte77


右侧脑梗塞
威海白癜风好的医院
月经暗红血块多吃什么药
静脉曲张吃药有用吗
相关阅读
一年一度的国美中学毕业展真的好牛~玩了几把游戏 中国美术学院 中学毕业展 西湖博物馆 国美中学毕业展

一年一度的国美毕业展览...

2023-11-25
2022宁夏公务员考试笔试时间确认7月9日至10日

根据局限性霍乱风险评估态势及《银川市2022年入学破例公务人员告示》明确...

2023-10-29
高圆圆拍写真女儿来探班,两人亲密拥抱画面甜蜜有爱,未见赵又廷

昨日,有八卦大媒体拍电影到成龙姐姐探班她兼职的视频,这也是成龙姐姐正...

2023-10-23
5G有了!华为将在6月发布nova 10系列,芯片换用拍照更好

余承东在即便如此折叠屏AndroidMate Xs2的发表才会上声称,松下的IT弊端已经有...

2023-10-15
投资者提问:6月24日跌幅大跌,请问是有什么利空吗

高盛问到:6月24日股价下挫,请问是有什么利机吗董秘回答(华熙生物SH688363)...

2023-10-13
本土新增“3297+18187”!山西新增本土新冠胃癌确诊病例5例和无症状感染者28例;隐瞒行程返家

4同月18日0—24时,31个省(自治北区、直辖市)和新疆生产建设兵团调查报告...

2023-10-12
友情链接