网络模型压缩和优化:MobileNet V2网络结构理解
2018-02-18 15:59
447 查看
MobileNet V2网络结构理解
和MobileNet V1相比,MobileNet V2主要的改进有两点:1、Linear Bottlenecks。也就是去掉了小维度输出层后面的非线性激活层,保留更多的特征信息,目的是为了保证模型的表达能力。2、Inverted Residual block。该结构和传统residual block中维度先缩减再扩增正好相反,因此shotcut也就变成了连接的是维度缩减后的feature map。
创新点:1. Inverted residuals,通常的residuals block是先经过一个1*1的Conv layer,把feature map的通道数“压”下来,再经过3*3 Conv layer,最后经过一个1*1 的Conv layer,将feature map 通道数再“扩张”回去。即先“压缩”,最后“扩张”回去。 而 inverted residuals就是 先“扩张”,最后“压缩”。主要也是为了提取更多的通道信息,得到更多的特征线信息。2.Linear bottlenecks,为了避免Relu对特征的破坏,在residual block的Eltwise sum之前的那个 1*1 Conv 不再采用Relu,为什么? 在MobileNet V1中除了引入depthwise separable convolution代替传统的卷积,还做了一个实验是用width multiplier参数来做模型通道的缩减,相当于给模型“瘦身”,这样特征信息就能更集中在缩减后的通道中,但是如果此时加上一个非线性激活层,比如ReLU,就会有较大的信息丢失,因此为了减少信息丢失,就有了文中的linear bottleneck,意思就是bottleneck的输出不接非线性激活层,所以是linear先看看MobileNetV2 和 V1之间有啥不同
(原图链接)
主要是两点:
Depth-wise convolution之前多了一个1*1的“扩张”层,目的是为了提升通道数,获得更多特征;
最后不采用Relu,而是Linear,目的是防止Relu破坏特征。
再看看MobileNetV2的block 与ResNet 的block:
(原图链接)
主要不同之处就在于,ResNet是:压缩”→“卷积提特征”→“扩张”,MobileNetV2则是Inverted residuals, 即:“扩张”→“卷积提特征”→ “压缩”论文理解 MobileNet-V1 最大的特点就是采用depth-wise separable convolution来减少运算量以及参数量,而在网络结构上,没有采用shortcut的方式。
Resnet及Densenet等一系列采用shortcut的网络的成功,表明了shortcut是个非常好的东西,于是MobileNet-V2就将这个好东西拿来用。MobileNet的特点就是depth-wise separable convolution,但是直接把depth-wise separable convolution应用到 residual block中,会碰到如下问题: 1. DWConv layer层提取得到的特征受限于输入的通道数,若是采用以往的residual block,先“压缩”,再卷积提特征,那么DWConv layer可提取得特征就太少了,因此一开始不“压缩”,MobileNetV2反其道而行,一开始先“扩张”,本文实验“扩张”倍数为6。 通常residual block里面是 “压缩”→“卷积提特征”→“扩张”,MobileNetV2就变成了 “扩张”→“卷积提特征”→ “压缩”,因此称为Inverted residuals 2. 当采用“扩张”→“卷积提特征”→ “压缩”时,在“压缩”之后会碰到一个问题,那就是Relu会破坏特征。为什么这里的Relu会破坏特征呢?这得从Relu的性质说起,Relu对于负的输入,输出全为零;而本来特征就已经被“压缩”,再经过Relu的话,又要“损失”一部分特征,因此这里不采用Relu,实验结果表明这样做是正确的,这就称为Linear bottlenecksbuilding block结构图:
caffe prototxt:
https://github.com/austingg/MobileNet-v2-caffe
引用博客:http://blog.csdn.net/u011995719/article/details/79135818
和MobileNet V1相比,MobileNet V2主要的改进有两点:1、Linear Bottlenecks。也就是去掉了小维度输出层后面的非线性激活层,保留更多的特征信息,目的是为了保证模型的表达能力。2、Inverted Residual block。该结构和传统residual block中维度先缩减再扩增正好相反,因此shotcut也就变成了连接的是维度缩减后的feature map。
创新点:1. Inverted residuals,通常的residuals block是先经过一个1*1的Conv layer,把feature map的通道数“压”下来,再经过3*3 Conv layer,最后经过一个1*1 的Conv layer,将feature map 通道数再“扩张”回去。即先“压缩”,最后“扩张”回去。 而 inverted residuals就是 先“扩张”,最后“压缩”。主要也是为了提取更多的通道信息,得到更多的特征线信息。2.Linear bottlenecks,为了避免Relu对特征的破坏,在residual block的Eltwise sum之前的那个 1*1 Conv 不再采用Relu,为什么? 在MobileNet V1中除了引入depthwise separable convolution代替传统的卷积,还做了一个实验是用width multiplier参数来做模型通道的缩减,相当于给模型“瘦身”,这样特征信息就能更集中在缩减后的通道中,但是如果此时加上一个非线性激活层,比如ReLU,就会有较大的信息丢失,因此为了减少信息丢失,就有了文中的linear bottleneck,意思就是bottleneck的输出不接非线性激活层,所以是linear先看看MobileNetV2 和 V1之间有啥不同
(原图链接)
主要是两点:
Depth-wise convolution之前多了一个1*1的“扩张”层,目的是为了提升通道数,获得更多特征;
最后不采用Relu,而是Linear,目的是防止Relu破坏特征。
再看看MobileNetV2的block 与ResNet 的block:
(原图链接)
主要不同之处就在于,ResNet是:压缩”→“卷积提特征”→“扩张”,MobileNetV2则是Inverted residuals, 即:“扩张”→“卷积提特征”→ “压缩”论文理解 MobileNet-V1 最大的特点就是采用depth-wise separable convolution来减少运算量以及参数量,而在网络结构上,没有采用shortcut的方式。
Resnet及Densenet等一系列采用shortcut的网络的成功,表明了shortcut是个非常好的东西,于是MobileNet-V2就将这个好东西拿来用。MobileNet的特点就是depth-wise separable convolution,但是直接把depth-wise separable convolution应用到 residual block中,会碰到如下问题: 1. DWConv layer层提取得到的特征受限于输入的通道数,若是采用以往的residual block,先“压缩”,再卷积提特征,那么DWConv layer可提取得特征就太少了,因此一开始不“压缩”,MobileNetV2反其道而行,一开始先“扩张”,本文实验“扩张”倍数为6。 通常residual block里面是 “压缩”→“卷积提特征”→“扩张”,MobileNetV2就变成了 “扩张”→“卷积提特征”→ “压缩”,因此称为Inverted residuals 2. 当采用“扩张”→“卷积提特征”→ “压缩”时,在“压缩”之后会碰到一个问题,那就是Relu会破坏特征。为什么这里的Relu会破坏特征呢?这得从Relu的性质说起,Relu对于负的输入,输出全为零;而本来特征就已经被“压缩”,再经过Relu的话,又要“损失”一部分特征,因此这里不采用Relu,实验结果表明这样做是正确的,这就称为Linear bottlenecksbuilding block结构图:
caffe prototxt:
https://github.com/austingg/MobileNet-v2-caffe
引用博客:http://blog.csdn.net/u011995719/article/details/79135818
相关文章推荐
- 网络模型的压缩和优化:SeNet网络理解
- 网络模型压缩和优化:ShuffleNet网络理解
- TCP/IP协议原理与应用笔记09:数据通信---封装(邮政系统层次结构:便于理解OSI网络模型)
- XMPP框架 微信项目开发之网络通信基础——OSI_TCP/IP 参考模型的理解
- ~~理解~VMWare的3种网络模型~~~~~【图】 和~~虚拟机本地连接IP设置
- 有结构与无结构P2P网络模型算法比较.
- 深度神经网络结构以及Pre-Training的理解
- 网络OSI七层结构的理解
- 关于winsock中网络编程事件模型和窗口消息模型中FD_WRITE的理解与数据的发送需要注意的关键点
- Tensorflow学习教程------模型参数和网络结构保存且载入,输入一张手写数字图片判断是几
- (二)计算机网络体系结构与参考模型
- Resnet 网络结构的理解以及论文
- 深度神经网络结构以及Pre-Training的理解
- MatConvNet 网络模型结构可视化的方法
- 【深度学习】tensorflow加载VGG16的网络结构和模型参数
- 深度神经网络结构以及Pre-Training的理解
- 综述论文:当前深度神经网络模型压缩和加速方法速览
- 理解VMwawe的3种网络模型
- 【深度学习】论文导读:GoogLeNet模型,Inception结构网络简化(Going deeper with convolutions)
- 王道计算机网络--1.2 计算机网络体系结构与参考模型