摘要
包含如下网络 LeNet、AlexNet、Vgg、GoogLeNet、ResNet、DenseNet。
一、分类网络特征
分类网络可以有效的提取物体特征, 不仅可以完成分类的任务, 同时可作为其它网络的backbone进行特征的提取。
二、网络介绍
1. leNet
LeNet是卷积神经网络的祖师爷LeCun在1998年提出,用于解决手写数字识别的视觉任务. 从此CNN的最基本的架构就定下来了:卷积层、池化层、全连接层. 麻雀虽小,但五脏俱全.
2. Alet
(1) Relu函数 A: max的计算,减少结算量, 深度网络的衰减, Relu保持梯度,减少梯度衰减的趋势
(2) Multiple Gpus A: 分组卷积,减少训练的时间
(3) RLN A: 如果一个wight变得很大, 其变化会引起很大的影响. 会重点改变这个weight从而忽略这个太小的weight.
(4) Date Augment A: image的transformation和crop. 百万级ImageNet图像数据
(5) Dropout A: 随机的让某些网络节点的权重不工作,暂时认为不是网络结构的一部分,但是起权重可以保留为下次输入做工作 ,提高了效率和防止了overfitting .
3. VggNet
(1) 卷积核的堆叠 A: 两个3*3卷积核的堆叠相对于5*5卷积核的视野,三个3*3相当于7*7。 B: 另一方面拥有更多的非线性变换,增加了CNN对特征的学习能力,降低参数量。
(2) 引入1*1的卷积核 A:在不影响输入输出维度的情况下,引入非线性变换,增加网络的表达能力,降低计算量。
(3). 小池化核 A: 相比AlexNet的3x3的池化核,VGG全部采用2x2的池化核。
(4). 通道数多 A: VGG网络第一层的通道数为64,后面每层都进行了翻倍,最多到512个通道,通道数的增加,使得更多的信息可以被提取出来。
(5) 训练时,先训练级别简单(层数较浅)的VGGNet的A级网络,然后使用A网络的权重来初始化后面的复杂模型,加快训练的收敛速度。
4. GoogLeNet
获得高质量模型最保险的做法就是增加模型的深度(层数)或者是其宽度(层核或者神经元数),但是这里一般设计思路的情况下会出现如下的缺陷:
(1) . 参数太多,若训练数据集有限,容易过拟合。
(2) . 网络越大计算复杂度越大,难以应用。
(3) . 网络越深,梯度越往后穿越容易消失,难以优化模型。
4.1 GoogLeNetV1
(1) 采用了模块化的结构 A:Inception结构, 方便增添和修改 B:多种操作并行进行,各自提取对用的特征
(2) 采用average pooling来代替全连接层 A:本质是全尺寸的卷积层, 减轻参数负担 B:最后还是加了一个全连接层,主要是为了推断用
(3) 移除了全连接 A:依然使用了Dropout , 减轻过拟合
(4) 网络的感受野大小是224x224,采用RGB彩色通道 A: 网络包含22个带参数的层, 如果考虑pooling层就是27层
(5) 为了避免梯度消失,网络额外增加了辅助的softmax在不同的深度处用于传导梯度
4.2 GoogLeNetV2
(1) Covariate Shift问题 A: 神经网络的输入值的分布不同, 与权重进行矩阵相乘后,会产生一些偏离较大地差异值。 B: 差异值影响后层,偏离越大表现越为明显, 对于反向传播来说,这些现象都会导致梯度发散。
(2) 允许较大的学习率,加快模型收敛速度 A: 固定网络层输入的分布使优化过程中的解空间更平滑,确保梯度更具预测性和稳定性。
(3). 避免深层网络的梯度消失或爆炸问题 A: 固定网络层输入的均值和方差,即使网络较深层的响应或梯度过小或过大时,也可通过BN的规范化作用将其缩放到一个比较合理的取值范围。
(4). 增加网络的表达能力
4.3 GoogLeNetV3
InceptionV3 引入了 Factorization into small convolutions 的思想,将一个较大的二维卷积拆成两个较小的一维卷积,比如将7*7卷积拆成1*7卷积和7*1卷积. 这种非对称的卷积结构拆分,其结果比对称地拆为几个相同的小卷积核效果更明显。
5. ResNet
在不断加神经网络的深度时,会出现一个Degradation的问题, 即准确率会先上升然后达到饱和,再持续增加深度则会导致准确率下降。假设有一个比较浅的网络达到了饱和的准确率,那么后面再加上几个的全等映射层,起码误差不会增加, 即更深的网络不应该带来训练集上误差上升。而这里提到的使用全等映射直接将前一层输出传到后面的思想, 就ResNet的灵感来源。
5.1 ResNetV1
如下两种结构分别针对ResNet34(左图)和ResNet50/101/152(右图)
A: 一般称整个结构为一个building block,其中右图又称为bottleneck design
B:bottleneck目的就是为了降低参数的数目,第一个1x1的卷积把256维channel降到64维,然后在最后通过1x1卷积恢复,而不使用bottleneck的话就是两个3x3x256的卷积
5.2 ResNetV2
A. 表示f函数为Relu,这是ResNetv1的做法。
B. 表示f函数为BN+Relu。
C. 表示f函数为恒等映射 。
D. 表示f函数为恒等映射,Relu放在下一个残差块的F-path中。
E. ResNetv2使用的就是图e的结构,通过实验发现这个结构表现最好。
6. DenseNet
一般网络无非是通过deeper,或者是wider来增强网络性能 。ResNet通过identity connection创造short cut来连接layer与layer之间, 解缓正向传播中的消失和梯度在反向传播中的弥散。在作者的DenseNet中,并不通过summation来连接layers,而是通过concatenating将这些features进行连接起来,就是在层与层之间,直接将所有层连接起来。
identity function 和 H输出通过相加的方式结合,受GooLeNet的启发,DenseNet通过串联的方式结合。这里Hl(.)是一个Composite function,是三个操作的组合:BN−>ReLU−>Conv(3×3) 由于串联操作要求特征图x0,x1,...,xl−1大小一致,而Pooling操作会改变特征图的大小,又不可或缺,于是就有了上图中的分块想法,论文中称每个块为DenseBlock。
三、参数结果对比
总结
对传统神经网络的分类参数作对比