MobileNets论文解析

作者: rock4you | 来源:发表于2019-03-23 23:05 被阅读1次

    论文全称:

    MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

    下载地址:
    https://arxiv.org/pdf/1704.04861.pdf

    论文核心思想:

    本文对我们常见的卷积操作进行了改进,使得计算量得到了降低。

    设:
    输入图片F的大小是Df * Df * M,Df表示宽、高,M表示通道数。
    stride为1,padding取使得输出图片的宽、高均等于输入图片的宽、高的值。
    输出图片G的大小是Df * Df * N,Df表示宽、高,N表示通道数。

    常规卷积操作的示意图:


    常规卷积

    设常规卷积中,卷积核G的大小是Dk * Dk * M * N,Dk表示宽、高,M表示通道数,N表示卷积核个数。
    则常规卷积的操作需要执行的计算量为:
    乘法次数:Dk * Dk * M * N * Df * Df,加法次数:Dk * Dk * M * N * Df * Df - 1
    由于乘法更加耗时,所以重点考察乘法次数,则 Cost A= Dk * Dk * M * N * Df * Df
    其中,Dk * Dk * M表示每个卷积核每滑动到一个位置需要执行的乘法的次数;Df * Df表示每个卷积核需要卷积的次数。前者等于每个卷积核的大小,后者等于输出图片的宽*高。

    MobileNets论文提出的深度可分离卷积(Depthwise separable convolutions)由两部分组成:

    第1部分:在深度上进行卷积(Depthwise convolution),即:在每一个通道的二维矩阵上进行卷积。

    在这个部分中的卷积核是2维的,即卷积核的深度为1,输入图片的深度是多少,卷积核就有多少个。

    depthwise convolution 示意图:


    在深度上卷积

    第2部分:在点上进行卷积(Pointwise convolution ),即:在二维矩阵每一个点上对所有的通道进行卷积。

    在这个部分中的卷积核虽然是3维,但是宽和高均为1,输入图片的面积(宽*高的值)是多少,就有多少个卷积核。

    pointwise convolution 示意图:


    在点上卷积

    最后,用一张图来描述完整的深度可分离卷积:


    完整示意图

    设深度可分离卷积中,第1步的卷积核K1大小是Dk* Dk * M,Dk表示宽、高,M表示通道数。
    卷积核K1的每个通道分别与图片的每个通道进行卷积,得到输出图片的每个通道。
    第1步的乘法次数为:Dk * Dk * M * Df * Df,其中Dk*Dk为卷积核每个通道的大小,Df * Df为每个卷积核需要遍历的位置数。

    第2步的卷积核K2大小是1 * 1 * M * N,1表示宽、高,M表示通道数,N表示卷积核个数。
    卷积核K2与上层输出图片中每个点对应的M个通道进行卷积。
    第2步的乘法次数为:Df * Df * M * N,其中Df * Df为图片大小。

    累计乘法次数为Dk * Dk * M * Df * Df + Df * Df * M * N
    因此,Cost B = Dk * Dk * M * Df * Df + Df * Df * M * N

    Cost A / Cost B = 1/N + 1/(Dk * Dk)

    所以,论文提出的卷积方法的计算量小于常规卷积的计算量。

    由上式可见,性能的提升主要与卷积核的个数和卷积核的宽、高有关,这3个参数越大,性能提升越明显。

    如有问题,欢迎交流。

    文中图片来自网络:
    https://eli.thegreenplace.net/2018/depthwise-separable-convolutions-for-machine-learning/
    侵删。

    欢迎关注公众号

    相关文章

      网友评论

        本文标题:MobileNets论文解析

        本文链接:https://www.haomeiwen.com/subject/wfoevqtx.html