Inception-V1到Inception-V4

    GoogLeNet主要思想为Inception结构

主要参考了http://caffecn.cn/?/question/255

一、

题外话;吴恩达老师的深度学习课程讲的非常的明白。

1.对图像进行卷积是压缩提取图像特征信息的一个过程,构造不同的卷积核提取出的就是不同的特征。卷积神经网络厉害的地方是将滤波核当做参数去进行训练,找到各种各样的奇怪特征,这是计算机视觉中最为有效的思想之一。

2.关于步长的总结:如果我们有一个n*n的图像,用f*f的过滤器做卷积,输出维度就是(n-f+1)*(n-f+1)。每次图像缩小有两个缺点:第一个缺点是每次做卷积操作,你的图像就会缩小。第二个缺点是那些在角落或者边缘区域的像素点在输出中采用较少,意味着丢掉了图像边缘位置的许多信息。 所以会在卷积前周围填充像素,(也叫valid卷积),p为填充的像素点个数。加入步长后,输出变为 ,商不是整数,则向下取整。还解答了我的一个疑惑。虽然叫做卷积,但是实际上并不是数学意义上的卷积操作(没有进行滤波核的翻转),正确叫法应该是互相关。

3.神经网络是什么,无论是预测还是分类问题,都是找到一条可以很好拟合现有数据的 线 的问题。而得到这条线的过程就是神经网络训练的过程。也就是通过特征找到结论的过程。找到结论的过程是使用激活函数对数据进行处理。多个线性激活函数可以合成一个。所以我们大多使用非线性激活函数。然后通过损失函数最终得到合适的 线 ,也就是结论。

4.卷积神经网络:将卷积特性同神经网络相结合,具有3个基本思想:感受野,权值共享,降采样。

1*1卷积:在网络中添加了一个非线性函数,非常方便的进行升维或者降维,减少了参数。将信息进行了整合。

二、

四篇论文:

[v1] Going Deeper with Convolutions, 6.67% test error, arxiv.org/abs/1409.4842

[v2] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift, 4.8% test error, arxiv.org/abs/1502.0316

[v3] Rethinking the Inception Architecture for Computer Vision, 3.5% test error, [1512.00567] Rethinking the Inception Architecture for Computer Vision

[v4] Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning, 3.08% test error, [1602.07261] Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning

V1:找到最优的局部稀疏结构并将其覆盖为近似的稠密组件。Inception层作用就是代替人工来确定卷积层中的过滤器类型。将通过不同大小卷积核后得到的维度图像做拼接。这样就是不同尺度上的融合。增加了两个辅助用的softmax层用于前向传导梯度,避免梯度消失。通过上面所述对神经网络的理解,从这也就不难看出:Inception层将多种卷积核相融合,神经网络训练后会得到需要的权值,而这就是对过滤器的选择。

大量使用1*1卷积层来减少运算数量并将维度保持一致。合理的构建瓶颈层既可以显著缩小表示层的规模,又不会降低网络性能,从而节省了计算。

在构建Inception模块时可以发现一般遵从以下规则:卷积层前使用1*1卷积减少参数数量。后层卷积核数一般为前层1*1卷积的2倍,1*1卷积直接拼接。如果使用pooling层,后接1*1卷积调整维度,缩小通道数。实例如下:


整个网络就是有多个inception模块连接所构成的。

V2:加入BN层,用2个3*3代替5*5

V3:7*7分解为1*7,7*1,精细了设计。

V4:丢下了V3的包袱,改写了部分结构,更加有利于模块化的使用。结合ResNet得到Inception-ResNet-v1和v2。

论文翻译网址如下:https://ask.julyedu.com/question/7711

看到的一些结论:

1.单个框架性能的提升不会引起组合性能大幅的提高。

2.使用残差连接能够极大的提高训练速度

3.在传统层的顶部而非所有层的顶部中使用batch-normalization。

4.对残差网络进行缩放有益于训练的稳定性。

总的来说,到目前来看,inception的结构已经不是最优的网络模型。不过,在inception进化过程中的小tricks都是现在很常用的技巧。这个学习过程是很有必要的。模块化的思想也越来越受到大家的重视。

猜你喜欢

转载自blog.csdn.net/q199502092010/article/details/80262348