P11:经典卷积神经网络结构案例分析

一、 LeNet-5

P11:经典卷积神经网络结构案例分析_第1张图片
最早的用于实际使用的卷积神经网络,被用在了邮政编码的手写数字识别上,这个神经网络奠定了后续发展的卷积神经网络的结构,也就是卷积层-池化层-全连接层这样一个结构。
P5:卷积神经网络中出现的演示模型就是这个网络结构的可视化。
在当初那个算力和数据量都不太大的时代,这个模型采取了一些现在看来没必要的操作。比如为了节省计算量,不是每个通道都参与下一个卷积计算,而是每个通道跳出一部分进行下一个卷积运算。而且输出层采用的不是Softmax而是用的高斯分类。此外,采用的激活函数是sigmoid和双曲正切,池化之后还采用了一次非线性映射,这些做法现在都已经被放弃了。

二、AlexNet

这个网络和LeNet模型设计上差别并不是很大,主要是这个网络增加了层数,并且采用了更多的卷积核,同时输入也从LeNet的手写数字变成了自然图像。
P11:经典卷积神经网络结构案例分析_第2张图片
这个网络输入是一个224×224的自然图像,在第一个卷积层使用了96个11×11的卷积核,步长为4,得到了55×55×96的特征图,经过3×3的步长为2的最大池化,结果是27×27×96的特征图,如此重复,最终发现有6000万个参数。相比于LeNet的6万个参数,参数量大大增加。
上图中一层被分成了上下两部分,这不是网络结构的问题,主要是因为当年运算能力不足,需要采用并行计算,所以将一层拆成两部分用于运算,所以才会画成上面的样子,每个gpu负责一半,上下是完全一样的。也可以把它画成下面的样子,这样就更容易看出它和LeNet区别不大。
P11:经典卷积神经网络结构案例分析_第3张图片
这个模型有很多贡献贡献。它第一次使用了ReLu激活函数,可以优先避免梯度消失。使用了局部响应归一化层,它的思路是同一位置不需要太多的高激活神经元,但是这个层现在已经不太使用了。它使用了数据增强的方式获得更多的数据,扩大自己的数据集。它使用了dropout来随机杀死神经元,从而防止了过拟合。它还采用了集成的思想,将七个模型进行了集成,提高了正确率。

三、ZFNet

这个网络本质上和AlexNet有明确的区别,ZFNet是对AlexNet做了一些超参数上的优化。
P11:经典卷积神经网络结构案例分析_第4张图片
这个网络将第一个卷积层的卷积核变成了7×7且步长变为了2,且在345卷积层增加了卷积核的数目,其余结构完全一样,再次将错误率降低。
这个网络结构本身不是太重要,重要的是在这篇论文中提出了神经网络的可视化,这篇论文的内容在:
https://blog.csdn.net/weixin_43849505/article/details/120980570?spm=1001.2014.3001.5501

四、VGGNet

在这个网络中,所有的卷积核都是3×3的,且步长和padding都是1,在最大池化时采用的是2×2且步长为2的池化区域,此外它还在AlexNet结构的基础上增加了层数,将网络提高到16和19层。
采用3×3卷积,主要是因为3层3×3的卷积核与一层7×7的卷积核是相同的,这一点在之前P9:卷积神经网络的工程实践技巧中也有讲过,这种操作在效果不变的情况下,降低了参数量,同时增加了更多的灵活性。
P11:经典卷积神经网络结构案例分析_第5张图片
这张图中VGG16在第三个卷积模块画错了,应该还有一层,也就是两个2层卷积模块三个3层卷积模块。VGG19是在第345个卷积模块中都添加了一层,从而从16层变成了19层。
P11:经典卷积神经网络结构案例分析_第6张图片
这个网络缺点在于存储前向传播和反向优化的过程中开销太大,前两个卷积层占据了大部分的内存,与此同时第一个全连接层占据了大部分的参数,这就使得VGG是一个计算起来不那么方便的网络。

五、GoogLeNet

这个网络采用了22层,首先提出了一个高效的inception模块,此外它的参数量也不大,要比AlexNet小很多很多。
P11:经典卷积神经网络结构案例分析_第7张图片
可以从图中看出,GoogLeNet可以看作是由大量的inception模块堆叠起来的,这个inception模块主要解决了卷积核大小的问题,物体不一样大,采用不同的卷积核效果也不一样,inception模块的思路是用不同大小的卷积核处理,把结果摞起来送入下一层。采用这种方法,不管物体在图中大还是小,我们都可以捕捉到物体。
P11:经典卷积神经网络结构案例分析_第8张图片
这个模型实际上存在一些问题,主要还是计算上太复杂,也就是乘法的计算量太大。而且这种网络结构会让经过inception模块运算之后的结果的厚度越来越大,最终导致网络十分臃肿,主要的解决方法是使用1×1卷积进行处理,通过1×1卷积处理,减小了参数量,也就成了现在GoogLeNet中inception模块的样子。
P11:经典卷积神经网络结构案例分析_第9张图片
这个网络中依然先使用了常规的处理,之后堆叠inception模块,在中间过程引出来两个辅助输出,这两个输出用于正则化处理。此外,这里面紫色的层采用了global average pooling,来避免使用全连接层,这种池化是将每个通道求平均,也就是在每个通道上都选出一个代表,从而避免了使用全连接层将多个通道的数据拉成一个长向量,有效减少参数量。
P11:经典卷积神经网络结构案例分析_第10张图片

六、ResNet

这个网络的核心在于残差模块。这个网络的论文中提出网络层数增加导致正确率的下降,一部分原因是梯度消失导致的,所以他们的目标是在加深网络后效果至少先不变差,主要的方法就是将浅层网络的结果叠加到深层网络上。
P11:经典卷积神经网络结构案例分析_第11张图片
一般的网络结构是上图左侧的样子,一条路走到黑,而右边的残差模块则是考虑了前面的结果,一个卷积层学到的东西作为一小部分再加上原来的结果进行整合,就能够稳中求胜一点点进步,再加上很深的网络,就可以取得很好的结果。这个图中的F(X)也就是残差,对应的就是学的到东西。
P11:经典卷积神经网络结构案例分析_第12张图片
ResNet实际上就是残差模块的堆叠,一开始也是用了一个普通的卷积层,之后开始堆叠,并且卷积核的数目也在一点点增加,最后使用global average pooling,此外整个网络只在最后有一个全连接层,所以计算效率也很高。

七、SENet

这个网络的核心在于自适应学习得到每个通道的权重。这种思路认为每个通道的权重都是不同的,在实际使用时都会在最后加一个模块,对所有C个通道的数据进行GAP(global average pooling),得到一个C维的向量,之后用两层全连接层进行激发,得到一个新的向量,这个向量表示的就是权重,利用这个权重与一开始的C个通道做处理,就得到了输出值。
P11:经典卷积神经网络结构案例分析_第13张图片
这个结构可以接在任何一个网络后面,自适应学习通道的权重,也就是每个特征图的权重。

八、SqueezeNet

这个网络会在后面的加速策略里面着重讲解,它的主要思想是先用1×1卷积降维,之后分两路,一路用1×1卷积升维,另一路用3×3卷积升维,最后合并,利用这种方式来减少参数量。再搭配deep compression等算法,可以实现极限的压缩,让模型很小而且精度没有太大的损失。
P11:经典卷积神经网络结构案例分析_第14张图片
在这篇论文中首先提出了使用1×1卷积进行升维或者降维,使用GAL来减少全连接层的参数爆炸,论文中提出的网络本身没有气候,但是这两个思想十分的重要。他主要是在两个卷积层之间加一个全连接层,从而形成了一个网中网的结构

你可能感兴趣的