论文阅读-week1:Going deeper with convolutions(Inception v1 )

一、基础知识

1. 卷积(Convolution):

对应局部感知,原理是在观察某个物体时,既不能观察每个像素,也不能一次观察整体,而应该先从局部开始认识。

2. 卷积核(Convolution Kernel):

卷积核的大小常见的有1x1、3x3、5x5;比较容易忽略的是,卷积核是有深度的,即输入的通道数;卷积核的个数对应本次的通道数,即特征图数。

例如:Input(28, 28, 32) ==> Conv(kernel_size=(3, 3), filters=64, strides=(2, 2), padding='SAME') ==> Output(28, 28, 64)

输入的shape是(28, 28, 32) ;其中28*28是图像的长和宽;32是通道数(理解:图像的三个通道分别是R、G、B)。

通过一个卷积层;卷积核的大小是(3, 3);卷积核的深度32;卷积核的个数是64,即输出的通道/特征图数是64;padding='SAME'保证了输出的长和宽依旧是28*28。

3. 池化(Pooling) 

卷积对应某个局部特征,池化操作针对每个通道,将更大尺寸上的卷积特征聚合(Aggregation)为更全局性的特征,对应于Cross Region。与之相对的是使用1x1卷积核可以做到Cross Channel。

池化操作起到升维或降维的作用。与之相对的是使用1x1卷积核也可以起到升维或降维的作用。

二、1x1卷积核

1. 理解:

1x1卷积层其实可以理解为全连接层。

如下图,左图是全连接层:输入是a1-a5,输出是b1-b5,b1 = a1*w1_1 + a2*w1_2 + ... + a6*w1_6;... ;b5 = a1*w5_1 + a2*w5_2 + ... + a6*w5_6。

右图是1x1卷积层,输入是6*6*32(蓝色立方体),取其中一部分1*1*32(h1_1-h1_32)与卷积核(k1-k32)进行卷积(蓝色立方体中的黄色立方体),得到的结果是y1=h1_1*k1 + h1_2*k2 + ... + h1_32*k32(绿点),因为蓝色立方体可以被分为6*6=36个1*1*32的小立方体,所以可以得到y1-y36。综上,右图相当于一个输入是k1-k32,输出是y1-y36的全连接层,y1 = k1*h1_1 + k2*h1_2 + ... + k32*h1_32;... ;y36 = k1*h36_1 + k2*h36_2 + ... + k32*h36_32。

2. 作用

1)降/升维:

例如输入为6*6*32,1x1卷积的形式是1*1*32,当有16个卷积核的时候,此时输出为6*6*16。即控制1x1卷积核的个数小/大于输入通道数,即可起到降/升维的作用。

2)跨通道信息交互:

使用1x1卷积核,实现降维和升维的操作其实就是channel间信息的线性组合变化,例如上述输入为6*6*32,通过16个1x1的卷积核之后,得到输出6*6*16,即原来的32个通道跨通道线性组合为了16个通道,实现了跨通道(Cross Channel)信息交互。

3)减少计算量:

左图需要的计算量为:5*5*192*28*28*32=120422400。

右图需要的计算量为:1*1*192*28*28*16 + 5*5*16*28*28*32=2408448 + 10035200 = 12443648。约为左图计算量的0.1033。

     

三、Inception模块

1. 多尺度进行卷积再聚合:

提高模型性能的方法有增加网络层次(深度)和增加每一层的神经元数量(宽度),但相应问题有:

1. 参数数量会大幅增加,网络容易过拟合;

2. 需要强大的算力。

文章提出的解决方法:

1. 使用“稀疏性连接”来避免过拟合的问题,然而其计算框架导致稀疏层计算能力浪费;

2. 通过concat拼接多个卷积结果来解决计算能力浪费的问题。

具体做法:

1. 采用卷积核大小为1×1、3×3、5×5的卷积结构;采用在许多卷积神经网络中起到关键作用的max pooling(3×3)结构;即多个稀疏网络;

2. 因为密集矩阵的计算性能高,因此最终所有并行的卷积、池化结果被concat(即feature map的大小不变,channel增加)在一起,即将稀疏矩阵聚类为较为密集的子矩阵,来提高计算性能。

2.使用1x1卷积减少计算:

上述方法参数数目仍然较多,尤其是5×5的卷积会带来大量计算,文章借鉴Network in Network的1x1卷积来降维经过降维,参数数量只剩下原来的12.75%。

四、GoogleNet网络

1. 采用Inception模块堆叠而成;

2. 网络越到后面,特征也越抽象。因为要将这些抽象特征进一步组合起来提取更高维的特征,网络不能只关注小范围内的特征信息了,所以需要让感受野大一些,看到更多的抽象信息。因此,3×3和5×5卷积的比例要增加;

3. 在底层保持传统卷积不变,在高层使用Inception结构;

4. 基于Network in Netw论文中的思想,在最后使用了average pooling来代替展开为全连接层的形式。实验也证明这样可以提高top-1准确率大概0.6%;

5. 最后加的全连接层主要是为了便于大家将网络用于其他的数据集finetune;

6. 网络中使用了dropout防止过拟合;

7. 网络有旁路,即两个辅助的softmax层。主要作用是,避免梯度消失,帮助梯度的传导。实际测试模型的时候,会将这两个softmax去除。

 

参考

论文原文:https://arxiv.org/pdf/1409.4842v1.pdf

https://www.cnblogs.com/tianqizhi/p/9665436.html

https://blog.csdn.net/sscc_learning/article/details/79863922

https://blog.csdn.net/amusi1994/article/details/81091145

https://zhuanlan.zhihu.com/p/33305030

https://blog.csdn.net/hongbin_xu/article/details/83280821

https://blog.csdn.net/weixin_39953502/article/details/80966046

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章