一、了解
网络亮点:
1、DW网络,大大减少运算量和参数数量
2、增加超参数:控制卷积层卷积核个数的超参数 ,控制图像输入大小的超参数 ,这两个超参数是人为设定的,不是机器学习到的。
二、DW卷积(Depthwise Conv)
传统卷积:卷积核channel= 输入特征矩阵channel 输出特征矩阵channel=卷积核个数
DW卷积:卷积核个数=1 ;输入特征矩阵channel=卷积核个数=输出特征矩阵channel
Depthwise Separable Conv 深度可分卷积
由两部分组成 DW卷积 + PW卷积(Pointwise Conv)
PW卷积类似于普通卷积(只不过卷积核的大小=1)
与普通卷积的参数比较
三、MobileNet V1网络
网络模型结构
conv / s2 :表示普通的卷积结构 s2表示步距为2
卷积核参数【高 x 宽 x 输入特征矩阵的深度 x 卷积核个数】
conv dw / s1: 表示dw卷积 步距为1 因为dw卷积的卷积核深度为1,所以只有输出特征矩阵的深度。
整个模型类似于VGG网络,将一系列卷积串行链接
统计数据
table8:比较了三个网络的准确率、运算量、模型参数。可以看出MobileNet在准确率只下降了0.9%的情况下,运算量和模型参数都大大减小。
控制卷积层卷积核个数的超参数 :table6中数据显示,卷积核的个数下降,准确率、运算量、模型参数都会下降。根据自己的项目需求去选择值
控制图像输入大小的超参数 :table7中数据显示,适当的减小输入图像的大小,能够保证准确率降低很少的前提下,来大幅减少运算量。根据项目需求自己设定
有时候dw卷积不起作用,在MobileNet V2版本中会有一定的改善。
四、MobileNet V2 网络
网络亮点 :
1、Inverted Residuals(倒残差结构)
2、Linear Bottlenecks
倒残差结构:
正常的残差结构:先降维,经过卷积后,再升维,中间使用 relu 激活函数
倒残差结构:先升维,经过DW卷积,再降维,中间使用 relu6 激活函数。
relu6 激活函数
relu激活函数:当输入值为0时,默认值置为0;大于0时,不进行处理。
relu6激活函数:当输入值小于0时,默认值为0;
大于0小于6时,不进行处理,
大于6时,将值全部置为6.
倒残差结构图
最后一层采用Linear线性激活。
表格数据中的 t 为扩展因子。
表格中第二层输出为步距的 s 分之一 倍
不是每一个倒残差结构都有shortcut捷径,只有当stride=1且输入特征矩阵与输出特征矩阵的shape相同时才会有shortcut链接。
V2 网络结构参数
t :扩展因子,第一层 1 x 1 的卷积层所采用的卷积核的扩展倍率 t
bottleneck :论文中指的是倒残差结构
步距:后面的数值只是每一个block对应的第一层的bottleneck的步距,剩下的步距都为1.
最后的卷积层相当于全连接层
五、MobileNet V3 网络
论文下载链接https://github.com/WZMIAOMIAO/deep-learning-for-image-processing/tree/master/article_link
更新了block
增加了SE注意力机制
注意力机制
对得到的每一个特征矩阵进行池化处理,再通过两个全连接层得到输出向量。第一个全连接层的channel等于输出特征矩阵的 1/4 ,第二个全连接层的节点个数与输出的节点个数保持一致。
对于输出的向量是是对特诊矩阵的每一个channel分析出了一个权重关系,认为比较重要的channel赋予更大的权重,不是那么重要的channel赋予一个比较小的权重。
NL:非线性激活函数
重新设计耗时层结构
用 h - sigmoid 激活函数代替sigmoid函数,得到 h - swish 激活函数
网络结构
NL表示激活函数
exp size 通过1 x 1 升维升到多少维的参数