MobileNetV3网络结构详解

发布于:2022-10-30 ⋅ 阅读:(808) ⋅ 点赞:(0)

目录

主要改动

Block

 重新设计了耗时层结构

重新设计激活函数

swish

hard-swish

sigmoid

h-sigmoid

v3整体结构

large版本

small版本 


主要改动

1.更新Block

2.重新设计了耗时层结构

3.重新设计激活函数

4.使用NAS搜索参数(略)

Block

先回顾一下v2的bottleneck

 v3在做完逐通道卷积后,不是直接进入逐点卷积,添加了一步给每个通道计算注意力的操作。

得到Dwise conv的输出后,对每一个通道做avgpool,将其缩小成1*1*channel大小的向量

再对得到的向量做两次全连接层,计算每个节点,也就是每个channel对应的注意力大小

第一次fc将channel缩小到1/4,第二次fc还原通道数

将输出的1*1*channel大小的向量中每个节点的值作为每个channel的注意力权重,将其乘回原矩阵便得到输出。再对输出做逐点卷积。

 上述添加注意力过程的操作示例:

以黄蓝两个通道为例,计算两个通道的注意力权重并乘回原矩阵

 重新设计了耗时层结构

1. 第一个卷积层的卷积核个数从32减少到16(对比v1v2模型可参考前一篇文章)

2.简化Last Stage

在不损失精度的情况下减少三个层的计算量

Original Last Stage对应v2的最后几层

重新设计激活函数

swish

 先采用了swish激活函数,也就是让x乘sigmoid(x),效果还不错能够提高网络精度。

但是sigmoid计算和求导比较复杂,对量化过程不友好,所以进行了重构

hard-swish

relu6跟v1 v2中使用的一样

用x乘relu6的六分之一来模拟swish激活,同时减少计算难度

sigmoid

h-sigmoid

sigmoid  h-sigmoid  swish  h-swish的比较

v3整体结构

SE表示是否使用注意力机制,也就是开头对block的改动

NL表示非线性激活,HS-->Hard-Swish  RE-->relu

最后两层NBN表示不使用BN层

exp size表示通过1*1卷积升到多少维

large版本

small版本 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到