赞
踩
MobileNets Series V1是通过减少参数的计算量以及操作数来加速网络的训练。
Operations的计算过程:卷积核的参数总和 × \times ×feature map的大小。
D k ⋅ D k ⋅ M ⋅ N D_k \cdot D_k\cdot M\cdot N Dk⋅Dk⋅M⋅N是对feature map的一个点(包含通道)进行操作,所以最后再乘以 D F ⋅ D F D_F\cdot D_F DF⋅DF
MobileNets Series V1也就是Depthwise Convolution
缺点:
1、生成的通道数必须和原通道数一致;
2、各个通道的卷积计算没有联系;
3、训练效果欠缺;
一、第一步:
过程: 因为Kernel size是
D
K
⋅
D
K
⋅
1
⋅
M
D_K\cdot D_K\cdot1\cdot M
DK⋅DK⋅1⋅M,共有
M
M
M个
D
K
⋅
D
K
⋅
1
D_K\cdot D_K\cdot1
DK⋅DK⋅1,所以
D
K
⋅
D
K
D_K\cdot D_K
DK⋅DK是对feature map的每一个通道进行卷积,卷积后feature map的通道数仍是
M
M
M
下面是我手绘的过程:
上图的计算量 Operations: D k ⋅ D k ⋅ 1 ⋅ M ⋅ D F ⋅ D F D_k\cdot D_k \cdot1\cdot M\cdot D_F\cdot D_F Dk⋅Dk⋅1⋅M⋅DF⋅DF
二、第二步:
第2步就是kernel size为1的常规卷积,在第一步得到feature map的基础上再进行1×1的常规卷积;
三、Depthwise Convolution的操作量与常规卷积的比较
先看一下MobileNets V2的结构图:
这个结构体比较详细:
下面开始解释MobileNets V2的过程:
1、首先进行channel的增加,一般是×6,即图中的
24
×
6
=
144
24\times 6=144
24×6=144,
2、再进行Depthwise Convolution,
3、再再进行projection convolution,也就是常规的1×1卷积,
4、shortcut操作,注意shortcut后没有relu,
备注:
1、上图标红色序号分别是V1的第一和第二步骤;
2、紫线是residual,就是shortcut;
1、为什么使用Inverted Residuals?
Skip connection 这种 bottleneck 的结构被证明很有效, 所以想用;但是如果像以前那样先压缩 channel, channel 数本来自就少, 再压没了, 所以不如先增大再减少 。
2、为什么不用shortcut后不用relu?
ReLU让负半轴为 0 。 本来我参数就不多,学习能力就有限,这一下再让一些参数为 0 了, 就更学不着什么东西了 。 干脆在 eltwise 那里不要 ReLU 了。
1、V1使用Depthwise Convolution减少卷积的参数量和计算量,所以可以使网络进行加速;
2、 V2是借鉴了resnet的思想,又在V1的基础上进行设计,所以不能照搬resnet的结构,所以V2是先进行通道数的增加,一般增加6倍,然后再是V1的结构,最后把relu去掉了,因为参数本来就不多,所以就不使用relu了。
V3是在V2的基础上增加了SENet
下面先介绍SENet,然后再介绍SENet如何与V2进行结合。
SENet结构图:
其实也就是
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。