[深度学习从入门到女装]MobileNets

MobileNets v1

论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

MobileNets v1的思路很简单,因为是为了移动端的嵌入网络,需要平衡计算量和内存占用等问题,因此网络不能太大,为了解决这个问题,就将普通的卷积更换成了深度可分离卷积

深度可分离卷积 Depthwise Separable Convolution

深度可分离卷积分为两个步骤:

1、depthwise convolution

就是对原始feature map的每个通道单独使用一个卷积核,分别进行操作

例如原始的feature map大小为D_F*D_F*M,其中M为通道数,那么就采用M个大小为D_K*D_K的卷积分别对M个通道进行卷积操作,最终的输出还为D_F*D_F*M,计算量为D_F*D_F*M*D_K*D_K

2、pointwise convolution

随后对上一步depthwise convolution的结果D_F*D_F*M,使用N个大小为1*1的卷积,进行普通卷积,最终得到的输出为D_F*D_F*N,计算量为D_F*D_F*M*N

因此深度可分离卷积的总计算量为D_F*D_F*M*D_K*D_K+D_F*D_F*M*N

而通过标准的卷积需要的计算量为D_F*D_F*M*D_K*D_K*N

\frac{D_F*D_F*M*D_K*D_K+D_F*D_F*M*N}{D_F*D_F*M*D_K*D_K*N}=\frac{1}{N}+\frac{1}{D_{K}^2}

3*3的卷积,相当于减少了8-9倍的计算量,但是准确率的减少很少

Width Multiplier: Thinner Models

用一个超参数\alpha来压缩整个网络的feature map的通道数

Resolution Multiplier: Reduced Representation

用一个超参数\rho来压缩整个网络的feature map大小

MobileNets v2

论文地址:MobileNetV2: Inverted Residuals and Linear Bottlenecks

在原始v1的版本上进行了改进,加入了Linear Bottlenecks

Linear Bottlenecks

linear bottlenecks本质上是不带ReLU的1x1的卷积层

具体的理由没有太看懂。。。

https://blog.csdn.net/kangdi7547/article/details/81431572

https://www.jianshu.com/p/630c27cb8c55

在进行element-wise sum之间的1*1卷积不使用激活函数

Inverted residuals

反向的residual模块

原始的residual模块,因此feature map的channel数很大,因此为了减少计算量,都会先使用1*1卷积降低通道数,然后再进行3*3卷积,最后使用1*1卷积恢复到想要的通道数

但是mobilenet的channel数已经很小了,而且使用了深度可分离卷积,不需要减少channel数进行计算了,因此本文提出了反向的residual

也就是先使用1*1卷积增大channel数,然后使用3*3的深度可分离卷积,最后在使用1*1卷积减少channel数

并且激活函数都采用了ReLu6

ReLu6(x)=min(max(0,x),6)

也就是只得到0-6之间的输出

网络结构

Mobilenets V3

论文地址:Searching for MobileNetV3

其实就是使用NAS(network architecture search)来搜索最优的网络结构

对mobilenets v2的block做了一点改进,加入了SE(Squeeze-and-Excite)模块

https://zhuanlan.zhihu.com/p/65875440

发布了164 篇原创文章 · 获赞 36 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/py184473894/article/details/94624436