MobileNet系列

MobileNet系列一共有三个版本,由于CNN的计算量过于庞大,不便于优化并部署,提出轻量化的MobileNet。目前的MobileNetV3是轻量化并且效果做好的了,综合了MobileNetV1、2的优点,它综合了以下四个特点:
1、MobileNetV1的深度可分离卷积(depthwise separable convolutions)。
2、MobileNetV2的具有线性瓶颈的逆残差结构(the inverted residual with linear bottleneck)。
3、轻量级的注意力模型。
4、利用h-swish代替swish函数。

发现的论文讲解课:

MobileNetV1

https://www.bilibili.com/video/BV1LB4y1c7Ap?spm_id_from=333.788.b_636f6d6d656e74.4

MobileNetV2

https://www.bilibili.com/video/BV1Fq4y1n7Mq?spm_id_from=333.788.b_636f6d6d656e74.5

MnasNet

https://www.bilibili.com/video/BV1Wo4y127NM?spm_id_from=333.788.b_636f6d6d656e74.6

MobileNetV3

https://www.bilibili.com/video/BV1vN411f7pY?from=search&seid=5973092705560738350

附上一篇看的很详细的博客

https://www.cnblogs.com/dengshunge/p/11334640.html

MoblieNetv1

由于CNN的卷积计算中,单单卷积计算已经占了95%,为了减少计算量用了深度可分离卷积,减少卷积的计算量
MobileNet系列_第1张图片

这是我看到的别人对深度可分离卷积的理解,他还有和传统卷积的比较(来自https://blog.csdn.net/c20081052/article/details/80703896
MobileNet系列_第2张图片
我理解pointwise convolution的1 X 1卷积操作是为了使得经过depthwise convolution(他先对每一层进行卷积操作,一个通道一个卷积核)的每一层能够被固定成一块儿,保证各个channel数据能够交通。

depthwise convolution操作是为了每一channel局部的像素进行交通
MobileNet系列_第3张图片

https://blog.csdn.net/c20081052/article/details/80703896
该文章写的更详细一些凹~
其中有关于MobileNet瘦身的介绍,主要是当我们移动端不需要那么强大的网络性能时可以采取MobileNet瘦身的方法,这自然会对精度有一定的影响的。
因为深度可分离卷积分成了两块,我们的瘦身操作分为两步,一个是按比例减少通道数,另一个是比例降低特征图的大小,以上的博客有详细说明,视频中也有介绍()
MobileNet系列_第4张图片

MoblieNetv2

想象所有样本,在一个很高维度的空间中,他们其实分布在一个连续的平面上,卷积滑动时,就从一个样本转到另一个样本,一个语义转到另一个语义,想做图像分类时,就是想把高维度空间中的表面找出来,图像的语义信息是高度抽象高度概括的,在数据中出现的高维的抽象的曲面完全可以用低维度的表面来代表他,但是我们不能随便拿一个低维度的平面简单的用一个网络来检测,很多试验证明我们还是要在高维度上通过对数据进行变换,尽量保持每个样本每个曲面之间的关系,这样才能更方便的进行下一个任务

神经网络就是通过变换使得高维度的表面投影到低维度的表面(好让我们进行区分),我们希望能够尽量保持高维度表面的信息,如果变化里全是linary transform的话,是可以更好的保存信息的,因为都是linary的变化,正反推都很方便,但是问题出在,网络中还有一些non-linary的部分,这些部分无法舍去,这些就是激活函数,比如我们熟悉的relu,它x<0部分直接没有,但是>0部分会全部输出。

有用的信息放在一起,经过变换时,你最希望能够尽可能的保存全部信息,如果全部都是linary的变换,那么信息可能有一些变形,但能够很好的保留下来;但对于relu函数而言,<0的部分大致意思是有一部分信息会被倒出盘子边缘,但只要盘子足够大,就不会被倒出去,而且在盘子中的信息是不会变形的(他的变化仍然会是线性的);而我们需要找个方法使得盘子变大:因为我们需要的是低维度的信息,所以在高维空间对数据进行relu可以尽量保留低维度信息,使它也是做线性的变换,不被cut掉。
MobileNet系列_第5张图片

注: 我们可以把网络整小,但是我们对图像信息做 relu 时必须先放到高维度中(可避免信息受到破坏)
图像——》转到高维度做了 relu 之后——》低维度
MobileNet系列_第6张图片

MobileNet系列_第7张图片

网络结构:

a——Regular Convolution普通卷积操作,它把channel逐渐变深
b——Separable Convolution Block 是v1操作,拆成了两个
但上面说了,希望rule在高维中进行,所以加了linear,所以后面变成了c的亚子。
c——Bottleneck Convelution 图中的绿框表示直接做线性的变换
d——Expansion Convolution block因为是堆叠在一起的,所以把低维度的框换个次序放到最前面也是可以的,与c等价

MobileNet系列_第8张图片
对于传统的Residual block只是对大通道,而现在也对小通道连接了,使得模型更加清亮,变成了下图的b的亚子

MobileNet系列_第9张图片
MobileNet系列_第10张图片

具体实现

RELU6的意思是原本的RELU范围在0-1,现在扩大范围在0-6之间了
MobileNet系列_第11张图片

MnasNet

我们想找个合适的网络能够平衡准确性和推理时间,我们只需要设计一个好的loss function 交给机器,让机器自己去找一个好的网络结构,并用这个loss function来优化模型设计即可
MobileNet系列_第12张图片

如何优化模型设计

每一块不是人工设计的,而是采用下方的搜索,我们首先将每一块分成一个一个的block,每个block内部由层来堆叠(每个layer的参数是一样的),然后我们再搜索每个block的参数即可,右侧的字部分是要搜索的block的参数
MobileNet系列_第13张图片
以MobileNet作为推理的baseline,绿框是我们需要思考的问题
我们使用的reference learning方法是PPO
MobileNet系列_第14张图片
最后搜索出来的结果(Inference Latency 延迟)
MobileNet系列_第15张图片

MoblieNetv3

论文讲解课中共讲了MoblieNetv3的trick

MobileNet系列_第16张图片

你可能感兴趣的:(深度学习,moblienet)