MobileNet
- Google出品
MobileNet V1
- MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- 2017.4
- vgg16的结果Conv换成DSC
- 与Xception都用到了深度可分离卷积
- 核心:深度可分离卷积(Depthwise Seperable Convolution)
- 可分离卷积(说白了就是怎么简化卷积的计算)有
- 空间可分离
- 3x3 -> {1x3}x3
- 深度可分离
- DepthWise把卷积核拆分为单channel的形式,对每一个通道进行卷积,这样就不会改变输入图像的尺度
- (这个步骤卷积核的个数要求是和输入图像的channel数一样,比如输入RGB,就对应3个卷积核),这样feature mao的Channel数目过于少了,所以需要下一步的Pointeise Conv
- PointWise本质就是1x1Conv,可以自由地对Feature Map进行升维和降维
- 对比
- 参数和计算量变成原先的1/N(对于3x3大概是8或者9分之一),而准确率几乎没下降
- What’s Lacking DSC比较容易训练崩,原因是很多值容易变0,估计是Relu出了问题
- 对低维度做Relu很容易损失信息(可以理解为加起来的值比较小容易是负的,而DSC卷积核浅)
- 将ReLU变为Leaky ReLU (然而MobileNet V2把某曾Relu直接变成了线性)
- Why Could This Work?
- 个人猜测是传统卷积的先在各个Channel做Conv然后逐channel叠加起来这一步损失了信息,而depthwise conv只用一层的卷积核,填补了这一部分
- MobileNet主要利用了1x1卷积其特殊之处在于省去了im2col的过程
- 这篇文章用一图表解释为何 为什么MobileNet及其变体如此之快? - 机器之心的文章 - 知乎
- DepthWise把卷积核拆分为单channel的形式,对每一个通道进行卷积,这样就不会改变输入图像的尺度
- 空间可分离
- 可分离卷积(说白了就是怎么简化卷积的计算)有
MobileNet V2
- MobileNetV2: Inverted Residuals and Linear Bottlenecks
- 主要改进
- Linear Bottleneck把最后的一个Relu换成线性激活
- Expansion 由于DepthConv不会改变FeatureMap通道数,所以该卷积都存在于稍浅层,为了学习到好的特征,先经过一个PointWiseConv进行升维之后,再进行维度压缩(之前是先卷再升维度,现在是先拓张再卷积再收缩)
- Inverted Residue和ResBlock方法类似
- Invert在Res是先降维,再3x3卷积,再拓展;而MobileNet是先拓展
MobileNet V3
- Searching for MobileNetV3
- NAS,告辞…
GhostNet
- Huawei Noah Ark
- 其Motivation在于Conv中有很多类似的Feature Map(其实与FPGM类似,但是FPGM选择如何去LetOut掉重复的,而本文通过一个简单的Ghost Transform去生成类似的Feature Map而不是从Conv来获得)
- 按照MobileNet-V3的结构,用带Ghost的Bottleneck去替代原先的Bottleneck Block
Refssasaas
- 为什么mobilenet,shufflenet在理论上速度很快,工程上并没有特别大的提升?
- 更底层的思考
- 计算强度