Mobile net原理
引言
- 为什么要使用mobile net*
卷积神经网络从出现到现在早已经在各大赛场大放异彩,但是在某些真实应用的场景下,仍然具有明显不足(如移动或者嵌入式设备)
原因:
- 模型过于庞大,可能存在内存不足等问题
- 实际环境中要求响应速度极快(如自动驾驶的行人检测系统)
诞生
所以有2个方向我们可以考虑(核心是保持模型性能的前提下,降低模型大小)
- 压缩训练好的复杂模型
- 直接设计小模型进行训练
所以google提出了mobile_net,一种小型的CNN模型
原理
mobile net采用的是深度可分离卷积。可分为2步depthwise convolution和pointwise convolution
输入 D x D x N ,输出D x D x M时
depthwise covolution
depthwise 卷积和传统卷积不同,它的卷积核单独作用于每个通道中,结果不相加(输入D x D x N的模型,卷积核大小为 K x K x N,进行的运算量为 D x D x N x K x K ,传统卷积核是M组卷积核每组结果相加得到一个通道,而depthwise不相加,只运算一组卷积核,卷积后通道大小不变)
pointwise covolution
实际上就是1x1的卷积核,对每个通道的同一部位进行卷积,结果相加,进行M组卷积操作,最后输出M个通道(这一步操作类似传统卷积,但它是是1x1的卷积,运算量为D x D x N x M )
总运算量 = D x D x N x K x K + D x D x N x M
传统卷积 = D x D x N x K x K x M
理解: 把卷积拆分为2步,先对每个通道单独卷积,再对每个通道的相同位置求和得到一个新通道(M组),把乘法变为了加法,减小了运算量


浙公网安备 33010602011771号