深度学习:卷积神经网络之移动网络(MobileNet)

可以在手机上运行的CNN,所以称之为移动网络,主要是运用了深度可分离卷积(depthwise-separable convolution)降低了运算量使得网络能在低算力情境下运行。

深度可分离卷积

先看看普通的的卷积运算:
在这里插入图片描述
上图展示的是一个 6 × 6 × 3 6\times 6\times 3 6×6×3的输入矩阵经过 5 5 5 3 × 3 × 3 3\times 3\times 3 3×3×3的过滤器得到 4 × 4 × 5 4\times 4\times 5 4×4×5的输出矩阵需要的计算,次数大概是过滤器大小乘以输出矩阵大小,即 3 × 3 × 3 × 4 × 4 × 5 = 2160 3\times 3\times 3\times 4\times 4\times 5=2160 3×3×3×4×4×5=2160次。对于一个 6 × 6 6\times 6 6×6像素的图片尚且如此,不难想象在正常图片甚至高清大图上应用卷积的计算量。

为了减少计算,深度可分离卷积应运而生。

首先,我们的过滤器不再是 3 × 3 × 3 3\times 3\times 3 3×3×3的整体,而是3个 3 × 3 3\times 3 3×3的过滤器,区别就在于现在每个过滤器只与对应通道的输入矩阵卷积,也就是所谓在深度上分离:
在这里插入图片描述
所以只需要运算 3 × 3 × 4 × 4 × 3 = 432 3\times 3\times 4\times 4\times 3=432 3×3×4×4×3=432次,省掉了过滤器个数这个维度。

下一步,则是通过一个 1 × 1 1\times 1 1×1过滤器,这一步用的就是正常卷积,采用5个 1 × 1 1\times 1 1×1过滤器得到 4 × 4 × 5 4\times 4\times 5 4×4×5的输出矩阵:
在这里插入图片描述
这一步计算需要 1 × 1 × 3 × 4 × 4 × 5 = 240 1\times 1\times 3\times 4\times 4\times 5=240 1×1×3×4×4×5=240次乘法。

所以深度可分离卷积只会用到 432 + 240 = 672 432+240=672 432+240=672次运算,只有普通卷积的 1 3 \frac{1}{3} 31不到。更一般的,对于滤波器大小为 f × f × n c f\times f\times n_c f×f×nc,个数为 n c ′ n_c' nc,输出矩阵大小为 n × n × n c ′ n\times n\times n_c' n×n×nc的卷积运算,正常计算需要
f × f × n c × n × n × n c ′ = f 2 n c n 2 n c ′ f\times f\times n_c\times n\times n\times n_c'=f^2n_cn^2n_c' f×f×nc×n×n×nc=f2ncn2nc次,而采用深度可分离卷积只需要
f × f × n × n × n c + 1 × 1 × n c × n × n × n c ′ = f 2 n c n 2 + n c n 2 n c ′ = n c n 2 ( f 2 + n c ′ ) f\times f\times n\times n\times n_c+1\times 1\times n_c\times n\times n\times n_c'=f^2n_cn^2+n_cn^2n_c'=n_cn^2(f^2+n_c') f×f×n×n×nc+1×1×nc×n×n×nc=f2ncn2+ncn2nc=ncn2(f2+nc)次,仅为普通卷积的 f 2 + n c ′ f 2 n c ′ = 1 f 2 + 1 n c ′ \frac{f^2+n_c'}{f^2n_c'}=\frac{1}{f^2}+\frac{1}{n_c'} f2ncf2+nc=f21+nc1倍。而一般而言, n c ′ n_c' nc要远大于 f 2 f^2 f2,因此运算量差不多只占 1 9 \frac{1}{9} 91 1 25 \frac{1}{25} 251

搭建移动网络

在这里插入图片描述
第一个版本就是上面讲的深度可分离版本的卷积网络,在13次重复以后连接到池化层、全连接层和softmax层。

下方是改进的第二个版本,加入了残差以及扩展层:
在这里插入图片描述
在扩展层中,我们用大量的 1 × 1 1\times 1 1×1过滤器做卷积,使矩阵通道数增加,然后再做深度可分离卷积,一通操作以后矩阵规模变回原来的大小。因为第二次 1 × 1 1\times 1 1×1过滤的时候通道数目减少了,所以这一层又被称为投影层。

通过扩展层,我们向网络中加入了更丰富的运算,使得网络可以实现更复杂的功能,而在瓶颈块结束的时候又用一个投影层还原,使得移动设备不需要储存太多的值,节省内存。

EfficientNet

在结尾,吴恩达还介绍了一下移动网络的变体EfficientNet,它可以根据设备所有的资源自动调整输入图像分辨率、网络深度以及宽度等,从而更充分地利用移动设备资源,也能在资源有限的设备上进行调整使得网络能够运行。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值