2021年11月09日20:40:53 今天我们来完成MobileNetV3的Pytorch代码
原文:Searching for MobileNetV3(2019) 作者团队:Google AI,Google Brain 原文链接:https://arxiv.org/abs/1905.02244v3
MobileNetV2+Squeeze-and-Excite 上图为MobileNetV3的主要结构bneck块
- 1×1卷积用于升维和降维
- NL代表使用非线性激活,包含Relu以及h-swish激活函数
- Dwise(Depthwise Conv)代表使用深度可分离卷积(即每个卷积核仅在每个channel上进行卷积操作,卷积个数同通道维数)
- SE结构为(Squeeze-and-Excite)注意力机制(专门有篇论文提出这个网络结构),简单理解就是对C×H×W的特征图,对每一个维度进行全局均值池化,一共得到C个值,然后作为全连接层的输入,然后隐含层设为0.25×C(本文设为0.25),输出成设为C,一共得到C个值作为对应维度的权重与输入的C×H×W进行点乘(每个权重C乘以对应的维度H×W)得到结果进行输出
- 当输入维度和输出维度及大小都相同时,需进行跳跃连接(上图的连线),即对应位置相加
MobileNetV3有2个子结构,一个是MobileNetV3-Large网络层次定义如下:
MobileNetV3-Large结构如上,SE代表使用Squeeze-And-Excite块(注意力机制),NL为使用非线性激活函数,其中HS使用h-swish激活函数,RE代表使用Relu激活函数,NBN代表不使用BN层,s代表卷积核的移动步长
另外一个子结构是MobileNetV3-Small网络层次定义如下:
h-swish激活函数如下:
2021年11月09日21:37:32,代码明天填!
Pytorch代码实现如下:
在这里插入代码片
参考文献
|