深度学习·神经网络·计算机视觉深度学习-推荐系统-CV-NLP

1 移动端神经网络模型思考

2019-04-16  本文已影响0人  深度学习模型优化

1 实时网络

         代表网络有MobileNetV2和ShuffleNetV2

1.1 MobileNetV2

         MobileNetV2引入了两种结构Linear Bottleneck和 Inverted Residual Blocks,既能够去除高维度feature的冗余信息,又能够去除低维度feature的信息坍塌。

与MoblieNetV1的相同点:

与MoblieNetV1的不同点:

和ResNet的相同点:

和ResNet的不同点:

1.2 ShuffleNetV2

四个准则

ShuffleNetV1
         ShuffleNetV1采用了pointwise组卷积和类似bottleneck的结构。另外引入一个channel shuffle操作使得不同组的通道信息流通。
         由上述4个准则可知,pointwise组卷积和bottleneck结构增加MAC,这违反了G1和G2。使用过多的组数违反了G3。逐元素相加违反了G4。
         因此,为了实现较高的模型容量和效率,关键问题是如何保持大量且同样宽的通道,既没有密集卷积也没有太多的分组。

ShuffleNetV2
         在每个单元的开始,输入通道数为c的feature通过channel split分成了2个分支,按照准则G3,一个分支作为identity,另一个分支由3个输入输出通道数相同的卷积组成(满足准则G1)。两个1x1卷积不再是group-wise的了,一部分原因是准则G2,另一部分原因是channel split操作已经分成了两组。卷积后,两个分支concat操作,因此输出通道数和输入通道数保持相同(满足准则G1)。随后引入channel shuffle使得两个分支的通道信息流通。
         值得注意的是,ShuffleNetV2去掉了Add操作,元素操作比如ReLU和depth-wise convolutions只在一个分支中存在。并且3个连续的操作Concat、Channel Shuffle和Channel Split被合并成一个元素操作。按照准则G4,这些改变对精度是有帮助的。
         对于带有下采样的模块,需要稍微修改一下模块,移除掉channel split操作。输出的通道数增加一倍。

2 实时检测

         代表网络有Light-Head R-CNN和ThunderNet。这两个网络主要是two-stage的检测网络。

2.1 Light-Head R-CNN

         使用薄的feature map和简单的R-CNN子网络(池化和单个全连接组成),使得网络的head尽可能的轻。
Basic feature extractor
         对于L设置来说,用ResNet来提取特征,对于S设置来说,用Xception-like来提取特征。
R-CNN subnet
         采用一个2048维的全连接层,后面接2个并行的全连接层来预测分类和回归。

2.2 ThunderNet

         ThunderNet的优化目标是二阶段检测器中计算开销大的结构。在backbone部分,设计了轻量级网络SNet,在detection部分,借鉴Light-Head R-CNN的思路,并进一步压缩RPN和R-CNN子网络。为了避免性能的衰退,设计了2个高效的结构CEM和SAM来改善性能。

3 实时分割

         代表网络有BiSeNet和DFANet

3.1 BiSeNet

实时语义分割主要有三种做法来加速模型:

3.2 DFANet

实时语义分割的两种方法:

         受到以上两种方法的启发,作者提出对网络输出进行上采样,然后用另一个子网络对特征进行精炼。这种做法不同于SPP模块,feature maps在更大的分辨率上进行精炼同时能够学到亚像素的细节。但是这种方法,随着整个结构深度的增长,高维度特征和感受野通常会出现精度损失。
         为了进一步提升精度,作者提出stage-level的方法为语义理解提供低级特征和空间信息。因为所有的子网络有相似的结构,stage-level方法通过conat相同分辨率的层精炼产生多阶段的上下文信息。

上一篇 下一篇

猜你喜欢

热点阅读