MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

【常规convolutions】

定义输入feature map尺寸为 D F × D F × M D_F\times D_F\times M DF×DF×M,输出feature map尺寸为 D F × D F × N D_F\times D_F\times N DF×DF×N,假设卷积前后空间维度不变,通道数由 M M M变为 N N N

定义卷积核为 N N N D K × D K × M D_K\times D_K\times M DK×DK×M

常规卷积的计算量为
N ⏟ N 个 ⋅ D K ⋅ D K ⋅ M ⏟ 一个位置上卷积 ⋅ D F ⋅ D F ⏟ 遍历所有位置 \underbrace{N}_{N个}\cdot\underbrace{D_K\cdot D_K\cdot M}_{\text{一个位置上卷积}}\cdot\underbrace{D_F\cdot D_F}_{\text{遍历所有位置}} N N一个位置上卷积 DKDKM遍历所有位置 DFDF

【depthwise separable convolutions】

depthwise separable convolutions的思想是首先孤立 M M M个channel,各个channel自己做卷积,然后使用conv1x1联系 M M M个channel,输出 N N N个channel

第一步,depthwise convolution
因为把每个channel独立开来,所以看作 M M M D F × D F × 1 D_F\times D_F\times 1 DF×DF×1,那么卷积核的尺寸一定是 M M M D K × D K × 1 D_K\times D_K\times 1 DK×DK×1,这一步的结果为 D F × D F × M D_F\times D_F\times M DF×DF×M
这一步的计算量为
M ⏟ M 个 ⋅ D K ⋅ D K ⋅ 1 ⏟ 一个位置上卷积 ⋅ D F ⋅ D F ⏟ 遍历所有位置 \underbrace{M}_{M个}\cdot\underbrace{D_K\cdot D_K\cdot 1}_{\text{一个位置上卷积}}\cdot\underbrace{D_F\cdot D_F}_{\text{遍历所有位置}} M M一个位置上卷积 DKDK1遍历所有位置 DFDF

第二步,pointwise convolution
利用conv1x1改变通道数,那么卷积核的尺寸为 N N N 1 × 1 × M 1\times1\times M 1×1×M
这一步的计算量为
N ⏟ N 个 ⋅ 1 ⋅ 1 ⋅ M ⏟ 一个位置上卷积 ⋅ D F ⋅ D F ⏟ 遍历所有位置 \underbrace{N}_{N个}\cdot\underbrace{1\cdot1\cdot M}_{\text{一个位置上卷积}}\cdot\underbrace{D_F\cdot D_F}_{\text{遍历所有位置}} N N一个位置上卷积 11M遍历所有位置 DFDF

故整个的计算量为
D K ⋅ D K ⋅ M ⋅ D F ⋅ D F + M ⋅ N ⋅ D F ⋅ D F ( 5 ) = D F ⋅ D F ⋅ M ⋅ ( D K ⋅ D K + N ) \begin{aligned} &D_K\cdot D_K\cdot M\cdot D_F\cdot D_F + M\cdot N \cdot D_F\cdot D_F \qquad(5) \\ &=D_F\cdot D_F\cdot M\cdot(D_K\cdot D_K + N) \end{aligned} DKDKMDFDF+MNDFDF(5)=DFDFM(DKDK+N)

【MobileNet Architecture】

常规的网络有Conv3x3-BN-ReLU模块,在MobileNet中修改如下

(N, C, H, W)
【Depthwise Conv3x3】
【BN + ReLU】
(N, C, H, W)
【Conv1x1 C→C】
【BN + ReLU】
(N, C, H, W)

若要实现空间维度减半,channel翻倍,则为

(N, C, H, W)
【Depthwise Conv3x3, s=2, p=1】
【BN + ReLU】
(N, C, H/2, W/2)
【Conv1x1 C→2C】
【BN + ReLU】
(N, 2C, H/2, W/2)

MobileNet结构

(N, 3, 224, 224)
【Conv3x3 332 s=2 p=1】
【BN + ReLU】
(N, 32, 112, 112)

【Conv3x3 dw s=1 p=0】(第1组,通道3264)
【BN + ReLU】
(N, 32, 112, 112)
【Conv1x1 3264 s=1 p=0】
【BN + ReLU】
(N, 64, 112, 112)

【Conv3x3 dw s=2 p=1】(第2组,通道加倍,空间减半)
【BN + ReLU】
(N, 64, 56, 56)
【Conv1x1 64128 s=1 p=0】
【BN + ReLU】
(N, 128, 56, 56)

【Conv3x3 dw s=1 p=0】(第3组,残差)
【BN + ReLU】
(N, 128, 56, 56)
【Conv1x1 128128 s=1 p=0】
【BN + ReLU】
(N, 128, 56, 56)

【Conv3x3 dw s=2 p=1】(第4组,通道加倍,空间减半)
【BN + ReLU】
(N, 128, 28, 28)
【Conv1x1 128256 s=1 p=0】
【BN + ReLU】
(N, 256, 28, 28)

Conv3x3 dw s=1 p=0】(第5组,残差)
【BN + ReLU】
(N, 256, 28, 28)
【Conv1x1 256256 s=1 p=0】
【BN + ReLU】
(N, 256, 28, 28)

【Conv3x3 dw s=2 p=1】(第6组,通道加倍,空间减半)
【BN + ReLU】
(N, 256, 14, 14)
【Conv1x1 256512 s=1 p=0】
【BN + ReLU】
(N, 512, 14, 14)

Conv3x3 dw s=1 p=0】(第7组,残差,重复5次)
【BN + ReLU】
(N, 512, 14, 14)
【Conv1x1 512512 s=1 p=0】
【BN + ReLU】
(N, 512, 14, 14)

【Conv3x3 dw s=2 p=1】(第8组,通道加倍,空间减半)
【BN + ReLU】
(N, 512, 7, 7)
【Conv1x1 5121024 s=1 p=0】
【BN + ReLU】
(N, 1024, 7, 7)

【Global AvgPool】
(N, 1024, 1, 1)(N, 1024)
【Linear 10241000】
【Softmax】
(N, 1000)

缩放参数

设置width multiplier α \alpha α表示对通道数进行缩减
α = 1 \alpha=1 α=1时,通道数3→32→64→128→256→512→1024
α = 0.75 \alpha=0.75 α=0.75时,通道数3→24→48→96→192→384→768
α = 0.5 \alpha=0.5 α=0.5时,通道数3→16→32→64→128→256→512
α = 0.25 \alpha=0.25 α=0.25时,通道数3→8→16→32→64→128→256

设置resolution multiplier ρ \rho ρ
ρ = 1 \rho=1 ρ=1时,空间尺寸224→112→56→28→14→7
ρ = 6 / 7 \rho=6/7 ρ=6/7时,空间尺寸192→96→48→24→12→6
ρ = 5 / 7 \rho=5/7 ρ=5/7时,空间尺寸160→80→40→20→10→5
ρ = 4 / 7 \rho=4/7 ρ=4/7时,空间尺寸128→64→32→16→8→4

Table 6和7给出了不同 α \alpha α ρ \rho ρ的实验结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值