15大结构梳理CNN网络的开展
CNN基本部件引见
1. 部分感触野
在图像中部分像素之间的咨询较为严密,而距离较远的像素咨询相对较弱。因此,其实每个神经元没必要对图像全局启动感知,只有要感知部分消息,而后在更上层部分消息综合起来即可获取全局消息。卷积操作即是部分感触野的成功,并且卷积操作由于能够权值共享,所以也增加了参数量。
2. 池化
池化是将输入图像启动增加,增加像素消息,只保管关键消息,关键是为了增加计算量。关键包括最大池化和均值池化。
3. 激活函数
激活函数的用是用来参与非线性。经常出现的激活函数有sigmod, tanh, relu,前两者罕用在全衔接层,relu经常出现于卷积层
4. 全衔接层
全衔接层在整个卷积神经网络中起分类器的作用。在全衔接层之前须要将之前的输入展平
经典网络结构
由两个卷积层,两个池化层,两个全衔接层组成。卷积核都是5×5,stride=1,池化层经常使用maxpooling
模型共八层(不算input层),蕴含五个卷积层、三个全衔接层。最后一层经常使用softmax做分类输入
AlexNet经常使用了ReLU做激活函数;防止过拟合经常使用dropout和数据增强;双GPU成功;经常使用LRN
所有经常使用3×3卷积核的重叠,来模拟更大的感触野,并且网络层数更深。VGG有五段卷积,每段卷积后接一层最大池化。卷积核数目逐渐参与。
总结:LRN作用不大;越深的网络成果越好;1×1的卷积也很有效然而没有3×3好
4. GoogLeNet(inception v1)
从VGG中咱们了解到,网络层数越深成果越好。然而随着模型越深参数越来越多,这就造成网络比拟容易过拟合,须要提供更多的训练数据;另外,复杂的网络象征更多的计算量,更大的模型存储,须要更多的资源,且速度不够快。GoogLeNet就是从增加参数的角度来设计网络结构的。
GoogLeNet经过参与网络宽度的模式来参与网络复杂度,让网络可以自己去应该如何选用卷积核。这种设计增加了参数 ,同时提高了网络对多种尺度的顺应性。经常使用了1×1卷积可以使网络在不参与参数的状况下参与网络复杂度。
Inception-v2
在v1的基础上参与batch normalization技术,在tensorflow中,经常使用BN在激活函数之前成果更好;将5×5卷积交流成两个延续的3×3卷积,使网络更深,参数更少
Inception-v3
外围现实是将卷积核合成成更小的卷积,如将7×7合成成1×7和7×1两个卷积核,使网络参数增加,深度加深
Inception-v4结构
引入了ResNet,使训练减速,功能优化。然而当滤波器的数目过大(>1000)时,训练很不稳固,可以参与activate scaling因子来缓解
5.Xception
在Inception-v3的基础上提出,基本思维是通道分别式卷积,然而又有区别。模型参数稍微增加,然而精度更高。Xception先做1×1卷积再做3×3卷积,即先将通道兼并,再启动空间卷积。depthwise正好相反,先启动空间3×3卷积,再启动通道1×1卷积。外围现实是遵照一个假定:卷积的时刻要将通道的卷积与空间的卷积启动分别。而MobileNet-v1用的就是depthwise的顺序,并且加了BN和ReLU。Xception的参数量与Inception-v3相差不大,其参与了网络宽度,旨在优化网络准确率,而MobileNet-v1旨在增加网络参数,提高效率。
6. MobileNet系列
经常使用depthwise separable convolutions;丢弃pooling层,而经常使用stride=2的卷积。规范卷积的卷积核的通道数等于输入特色图的通道数;而depthwise卷积核通道数是1;还有两个参数可以控制,a控制输入输入通道数;p控制图像(特色图)分辨率。
相比v1有三点不同:1.引入了残差结构;2.在dw之前先启动1×1卷积参与feature map通道数,与普通的residual block是不同的;3.pointwise完结之后弃用ReLU,改为linear激活函数,来防止ReLU对特色的破环。这样做是由于dw层提取的特色受限于输入的通道数,若驳回传统的residual block,先紧缩那dw可提取的特色就更少了,因此一开局不紧缩,反而先扩张。然而当驳回扩张-卷积-紧缩时,在紧缩之后会碰到一个疑问,ReLU会破环特色,而特色原本就曾经被紧缩,再经过ReLU还会损失一部分特色,应该驳回linear。
互补搜查技术组合:由资源受限的NAS口头模块集搜查,NetAdapt口头部分搜查;网络结构改良:将最后一步的平均池化层前移并移除最后一个卷积层,引入h-swish激活函数,修正了开局的滤波器组。
V3综合了v1的深度可分别卷积,v2的具备线性瓶颈的反残差结构,SE结构的轻量级留意力模型。
EffNet是对MobileNet-v1的改良,关键思维是:将MobileNet-1的dw层合成层两个3×1和1×3的dw层,这样 第一层之后就驳回pooling,从而增加第二层的计算量。EffNet比MobileNet-v1和ShuffleNet-v1模型更小,进度更高。
8. EfficientNet
钻研网络设计时在depth, width, resolution上启动裁减的模式,以及之间的相互相关。可以取得更高的效率和准确率。
VGG证实更深的网络层数是提高精度的有效手腕,然而更深的网络极易造成梯度弥散,从而造成网络无法收敛。经测试,20层以上会随着层数参与收敛成果越来越差。ResNet可以很好的处置梯度隐没的疑问(其实是缓解,并不能真正处置),ResNet参与了shortcut连边。
10. ResNeXt
基于ResNet和Inception的split+transform+concate结合。但成果却比ResNet、Inception、Inception-ResNet成果都要好。可以经常使用group convolution。普通来说参与网络表白才干的路径有三种:1.参与网络深度,如从AlexNet到ResNet,然而试验结果标明由网络深度带来的优化越来越小;2.参与网络模块的宽度,然而宽度的参与肯定带来指数级的参数规模优化,也非干流CNN设计;3.改善CNN网络结构设计,如Inception系列和ResNeXt等。且试验发现参与Cardinatity即一个block中所具备的相反分支的数目可以更好的优化模型表白才干。
11. DenseNet
DenseNet经过特色重用来大幅增加网络的参数量,又在肯定水平上缓解了梯度隐没疑问。
12. SqueezeNet
提出了fire-module:squeeze层+expand层。Squeeze层就是1×1卷积,expand层用1×1和3×3区分卷积,而后concatenation。squeezeNet参数是alexnet的1/50,经过紧缩之后是1/510,然而准确率和alexnet相当。
13. ShuffleNet系列
经过火组卷积与1×1的逐点群卷积核来降落计算量,经过重组通道来丰盛各个通道的消息。Xception和ResNeXt在小型网络模型中效率较低,由于少量的1×1卷积很耗资源,因此提出逐点群卷积来降落计算复杂度,然而经常使用逐点群卷积会有反作用,故在此基础上提出通道shuffle来协助消息流通。只管dw可以增加计算量和参数量,然而在低功耗设施上,与密集的操作相比,计算、存储访问的效率更差,故shufflenet上旨在bottleneck上经常使用深度卷积,尽或者增加开支。
使神经网络愈加高效的CNN网络结构设计准绳:
输入通道数与输入通道数坚持相等可以最小化内存访问老本
分组卷积中经常使用过多的分组会参与内存访问老本
网络结构太复杂(分支和基本单元过多)会降落网络的并行水平
element-wise的操作消耗也无法疏忽
原文链接: