赞
踩
传统卷积神经网络,内存需求大、运算量大导致无法在移动设备以及嵌入式设备上运行
MobileNet网络专注于移动端或者嵌入式设备中的轻量级CNN网络。相比于传统卷积神经网络,在准确率小幅降低的前提下大大减少模型参数与运算量(相比于VGG16准确率减少0.9%,但模型参数只有VGG的1/32)
下图为DW卷积
卷积核channel=输入特征矩阵channel
输出特征矩阵channel=卷积核个数
卷积核channel=1
输入特征矩阵channel=卷积核个数=输出特征矩阵channel
卷积核channel=输入特征矩阵channel
卷积核大小为1
DF:输入特征矩阵的高和宽
DK:卷积核大小
M:输入特征矩阵的深度
N:输出特征矩阵的深度(卷积核的个数)
普通卷积计算量:
D
K
∗
D
K
∗
M
∗
N
∗
D
F
∗
D
F
D_K*D_K*M*N*D_F*D_F
DK∗DK∗M∗N∗DF∗DF
DW+PW卷积计算量:
D
K
∗
D
K
∗
M
∗
D
F
∗
D
F
+
M
∗
N
∗
D
F
∗
D
F
=
1
N
+
1
D
K
2
=
1
N
+
1
9
D_K*D_K*M*D_F*D_F+M*N*D_F*D_F=\frac{1}{N}+\frac{1}{D_K^{2}}=\frac{1}{N}+\frac{1}{9}
DK∗DK∗M∗DF∗DF+M∗N∗DF∗DF=N1+DK21=N1+91
理论上普通卷积计算量是DW+PW的8到9倍
MobileNet v2网络由Google团队在2018年提出,相比MobileNet v1网络准确率更高,模型更小
残差结构:采用ReLu激活函数
倒残差结构:采用Relu6激活函数
Relu6激活函数:
y = ReLU6(x) = min(max(x, 0), 6)
ReLU激活函数对低维特征信息造成大量损失,而对高维特征信息造成的损失较小
原文中针对倒残差结构的最后一个卷积层使用线性激活函数,而不是ReLU激活函数
原文实验:输入是二维矩阵,channel=1。采用不同维度的矩阵matrix T对输入矩阵进行变换,变换到更高的维度上。再使用ReLU激活函数得到输出值。再使用T矩阵的逆矩阵
T
−
1
T^{-1}
T−1将输出矩阵还原成二维的输入矩阵input。当T的矩阵为2或3时,还原成input时丢失了很多信息。
因此得出结论:ReLU激活函数对低维特征信息造成大量损失,而对高维特征信息造成的损失较小。由于倒残差结构是两边大中间小,即两边是低维的,因此针对倒残差结构的最后一个卷积层使用线性激活函数来减少损失,而不是ReLU激活函数
MobileNe v2中并不是每一个倒残差结构都有shortcut捷径分支
当stride=1且输入特征矩阵与输出特征矩阵shape相同时才有shortcut连接(如下图左1)
t:扩展因子
t:扩展因子
c:输出特征矩阵的深度channel
n:Bottleneck重复的次数
s:步距。每一个block所对应的第一层Bottleneck的步距(一个block由一系列Bottleneck),其它层为1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。