ImageNet大规模视觉识别挑战(ImageNet Large Scale Visual Recognition Challenge,ILSVRC)
论文地址:Gradient-Based Learning Applied to Document Recognition
模型结构:LeNet-5共8层网络:1个输入层、2个卷积层、2个池化层、3个全连接层。 实际只有五层:去掉1个输入层和2个池化层。
- 卷积层:所有卷积层的kernel=5x5,stride=1。
- 池化层:采用平均池化kernel=2x2,stride=2。
(3)在每个卷积层 + 池化层的后面会跟一个Sigmod激活函数,而现在多用ReLU。- 全连接层:C5/C6/OUTPUT的节点分别为120/84/10。对应的权重参数(与连接数相同)分别为:(5x5x16+1)x120 = 48120、(120 + 1)x84=10164、84x10=840。
- 备注1:LeNet卷积神经网络,共约有60,840个训练参数,340,908个连接。
- 备注2:LeNet 会随着网络的加深,宽度逐渐降低,通道逐渐增多。
CNN卷积神经网络 LeNet-5详解
论文地址:ImageNet Classification with Deep Convolutional Neural Networks
模型结构:5个卷积层 + 2个全连接层(隐藏) + 1层全连接层(输出)
- 卷积层:
第一个卷积层(kernel=11x11、stride=4、Padding=0);
第二个卷积层(kernel=5x5、stride=1、Padding=2);
其余的卷积核(kernel=3x3、stride=1、Padding=1)。- 池化层:第一个, 第二个, 第五个卷积层的后面分别使用一个最大池化层(kernel=3x3,stride=2)。
- 全连接层:
全连接层1(隐藏):神经元个数输出为4096;
全连接层2(隐藏):神经元个数输出为4096;
全连接层3(输出):神经元个数输出为1000(分类)。- 激活函数:每个卷积层后面跟一个激活函数
ReLU
(替换Sigmod)。- 过拟合:使用
Dropout、图像增强
来防止过拟合。
论文地址:Very Deep Convolutional Networks for Large-Scale Image Recognition
论文地址:Going deeper with convolutions
github链接
GoogLeNet网络的基础模块:Inception模块。
在每个Inception模块中,包含4条并行线路:
- (1)前3条线:分别使用1x1、3x3、5x5的卷积层,抽取不通空间尺度下的特征信息;
- (2)第二条和第三条线:先使用了1x1的卷积层,减少输入通道数,以降低模型复杂度。
- (3)最后一条线:使用3x3的最大池化层 + 1x1的卷积层来改变通道数。
备注:4条线都使用合适的填充Padding来保证输入和输出的高宽一致。
论文地址:Deep Residual Learning for Image Recognition
github链接
经典语句:再差不会比原来差(恒等映射)。
- (1)图像是比较复杂的数据,只有足够深的网络层次才能提取充分信息。
- (2)激活函数的输入来自于神经网络一层层计算的输出结果。但是随着网络层的不断加深,误差并不会越来越小,容易出现梯度不稳定(如:梯度爆炸、梯度消失)。
残差块的目的:通过一种高速通道的连接方式,让输出结果同时参考输入结果x,解决梯度的不稳定性。
论文地址:Densely Connected Convolutional Networks
github链接(附有详细教程)
DenseNet的密集连接方式需要特征图大小保持一致。为了解决这个问题,DenseNet网络模型使用 DenseBlock + Transition Layers 结构。
- Dense Block:包含很多层的模块,每个层的特征图大小相同,层与层之间采用密集连接方式:BN + ReLU + Conv(3x3) + Dropout(0.2) 。
- (1)与ResNet十分相似,主要区别在于feature map融合的方式不同。
- ResNet将前一个模块的输出,直接加到模块的输出上
- DenseNet将前一个模块的输出,直接在通道上进行叠加。
- (2)与ResNet不同,所有Dense Block中各个层卷积均采用 k 个卷积核,所有每个卷积层输出的feature map的channel都为k。k在DenseNet称为growth rate,这是一个超参数。一般情况下使用较小的 k(论文里k=32),就可以得到较佳的性能。
- 过渡层:连接两个相邻的DenseBlock,并进行1x1卷积和2x2 平均池化,降低特征图大小。
即使k设的很小,但由于特征重用(通道叠加),后面层的输入仍会非常大,故需要降低模型的复杂度。【论文复现】DenseNet
- 输入分辨率为224x224,使用SGD训练
- DenseNet:设置4个Dense block模块,每个block的层数相同。在第一个block的前面,放置一个7x7卷积和3x3最大池化。在最后一个block后面接global平均池化,全连接,softmax。
- (1)每个block:使用3x3卷积,1x1卷积,zero-padding。
- (2)两个block之间:使用1x1卷积、2x2平均池化作为过渡层(transition layers)。
优缺点
- 优点:(1)网络结构参数看起来很多,但实际上参数更少,提高了训练效率。(2)特征重用增强了特征在各个层之间的流动,因为每一层都与初始输入层还有最后的由loss function得到的梯度直接相连。(3)进行反向传播的时候,减轻了梯度弥散的问题,使模型不容易过拟合。(4)由于每层可以直达最后的误差信号,误差信号可以很容易地传播到较早的层,所以较早的层可以从最终分类层实现隐式的deep supervision。
- 缺点:(1)由于需要进行多次Concatnate操作,数据需要被复制多次,显存容易增加得很快,需要一定的显存优化技术。(2)DenseNet是一种特殊网络,而ResNet相对一般化些,因此ResNet的应用范围更广泛。
论文地址(V1):MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
论文地址(V2):MobileNetV2: Inverted Residuals and Linear Bottlenecks
论文地址(V3):Searching for MobileNetV3
MobileNet网络专注于移动端或者嵌入式设备中的轻量级CNN,相比于传统卷积神经网络,在准确率小幅度降低的前提下大大减少模型参数与运算量。
- 除第一层是普通卷积层,其余都是深度可分离卷积层。
- 除最后的全连接层没有ReLU层,其余每个网络层后都有BN层和ReLU非线性激活层。
- 在全连接层前,使用全局池化将张量的尺寸变为1×1。在全连接层后,使用softmax层进行分类。
- 下采样通过带步长的卷积层来实现。
- 采用RMSprop优化器。
- 不使用正则化和数据增广。由于MobileNet为轻量级网络,且小网络通常不会过拟合。
MobileNetV1:提出使用深度可分离卷积替代普通卷积来减少模型参数。由两部分组成:深度卷积(Depthwise convolution,DW)和点卷积(Pointwise Convolution,PW)
(1)深度卷积与传统卷积的区别MobileNet网络详解
- 在传统卷积中,每个卷积核的channel与输入特征矩阵的channel相等(每个卷积核都会与输入特征矩阵的每一个维度进行卷积运算),输出特征矩阵channel等于卷积核的个数。
- 在DW卷积中,每个卷积核的channel都是等于1的(每个卷积核只负责输入特征矩阵的一个channel,卷积核的个数=输入特征矩阵的channel数=输出特征矩阵的channel数)
MobileNetV2在MobileNetV1的基础上,提出了2点创新:
(1)使用linear bottleneck捕获manifold of interest
(2)逆残差模块;
MobileNetV3的3个特点:
(1)MobileNetV3的网络结构是NAS搜索出来的;
(2)在bottleneck结构中引入了轻量级注意力模块;
(3)使用swish激活函数而不是relu;
(3.1)检测任务
(3.2)分类与检索
(3.3)超分辨率重构
(3.4)目标识别
(3.5)无人驾驶
(3.6)人脸识别
1.ImageNet大规模视觉识别挑战(ImageNet Large Scale Visual Recognition Challenge,ILSVRC)
2.CNN卷积神经网络 LeNet-5详解
3.卷积神经网络超详细介绍
4.卷积神经网络模型
5.卷积神经网络经典模型及其改进点学习汇总
6.卷积神经网络CNN(Convolutional Neural Network)