简介
- mobilenet关注点在于判断的执行时间和精确度
主要贡献:
- 提出了反残差网络结构
- 使用SE提高了网络的注意力机制
- 提出了$h−swish[x]$ 函数代替了$swish[x]$ 函数,加快了sigmoid函数的运算速度
- 改进ASPP提出Lite R-Aspp
重点内容
Linear Bottleneck
作者通过实验,认为在低维度下通过Relu层会丢失较多的信息
为了避免Relu对特征的破坏,因此,作者想到先将原数据升维,然后再Relu的方法,这里升维的方法称为Expansion factor
Inverted residuals(反残差网络结构)
首先给出1个cov_3x的resblock例子:
一般的Res的bottleneck都是整个网络是两头胖,中间窄(主要指的是维度),然而Inverted residuals是两头窄,中间胖,所以一般称为反残差
- Projection layer也是使用1x1的网络结构,他的目的是希望把高维特征映射到低维空间去。另外说一句,使用1x1的网络结构将高维空间映射到低纬空间的设计有的时候我们也称之为Bottleneck layer
- Expansion layer的功能正相反,使用1x1的网络结构,目的是将低维空间映射到高维空间。这里Expansion有一个超参数是维度扩展几倍。可以根据实际情况来做调整的,默认值是6,也就是扩展6倍。
以下是mobileV2的结构:
一个残差块其实就是一个linear bottleneck
表格中的参数介绍:
- t: 1*1 conv 升维扩展因子
- c: 经过这层后输出的通道数
- n: 这层重复的次数
- S: 本层内的第一个模块的stride,其余的stride为1
V2中bottleneck的关模块可以总这个表格来总结:
sqeeze and excite
指将数据流压缩再还原(和code与decode不同)用在bottleneck的结尾处
V1主要是提出的depthwise conv,V2主要提出了Linear Bottleneck和Inverted residuals
题外话:SEnet:
SE模块首先对卷积得到的特征图进行Squeeze操作,得到channel级的全局特征,然后对全局特征进行Excitation操作,学习各个channel间的关系,也得到不同channel的权重,最后乘以原来的特征图得到最终特征。本质上,SE模块是在channel维度上做attention或者gating操作,这种注意力机制让模型可以更加关注信息量最大的channel特征,而抑制那些不重要的channel特征。
- 在Inception和ResNet上的应用:
- 对bottleneck结尾处的框架进行改进
为了加快模型的计算速度作者发现如上改变最后一个bottleneck内的结构可以在速度与精度之间取得平衡
跑远了,继续回到mobilenet论文
- Nonlinearities,非线性激活函数的改进
提出h−swish近似代替原始映射函数swish(它原本是sigmoid函数的改进),减少sigmoid函数在计算上带来的latency问题。同时作者注意到函数的作用范围在整个网络的后半部分效果较好。
原文链接:https://blog.csdn.net/zhuixun_/article/details/112094958
- 分类部分:
将SSDLite的dropout部分取代为MobileV3和V2部分的组合
- 分割部分
利用mibienetV3作为主干网络,使用R-ASPP作为分割头(segmentation heads)
- Lite R-Aspp
Lite R-ASPP主要将mobilenet v3的最后一个block中不同resolution的信息,通过与SE-net,skip-connection相结合,实现移动端的图像分割。
最后根据实际需求 提出两种V3的结构:
MobileNetV3-Large:拥有更多的参数和更高的准确率,处理时间更慢
MobileNetV3-Small:更少的体积和参数,适用于移动设备,速度更快