本文提出了MobileNets的模型,有助于减少inference的时间,使得其可以在移动端开展运行。最重要的算法为depthwise separable convolutions,是将传统的卷积算法分解为了两步,可以减少卷积的时间复杂度和实际的运行时间。同时为了在移动端更加灵活地应用,文章提出了两个全局的超参数用来权衡latency和accuracy。
相比于其他的将CNN移植到移动端的方法,MobileNets的关注点不在于压缩整个模型,而是更注重对于Latency的优化。
1 MobileNet Architecture
1.1 Depthwise Separable Convolution
基本思想是将传统卷积拆分成两步:depthwise convolution和pointwise convolution(1×1的卷积)。
首先depthwise convolution,对于每一张input channel施加一个filter;然后使用1×1的pointwise convolution将得到的depthwise convolution的output组合起来。所以,现在我们可以将传统卷积视为一个两层的卷积网络,一层做depthwise convolution,一层做pointwise convolution。
下面来分析一下两种卷积方式的时间复杂度,假设input有M个channel,每个kernel size是Dk×Dk,在卷积之后得到的是N个channel的output,每个feature map是Df×Df。
Standard convolution
总体需要的计算量为: