depth wise CNN

depth wise cnn相对于传统的CNN,区别在于:它是逐通道作卷积操做spa

例子以下:移动

(1)使用传统卷积,输入:H*W*C_in,最终输出h*w*C_out:卷积核尺寸为K*K*C_in*C_out,则参数量=K*K*C_in*C_out,计算量=K*K*h*w*C_in*C_out;参数

(2)使用depth wise cnn(通常还要加上1*1卷积),输入:H*W*C_in,最终输出h*w*C_out:首先是depth wise cnn,卷积核尺寸为K*K*C_in,该层的参数量=K*K*C_in,计算量=h*w*K*K*C_in,通过它的输出为h*w*C_in;而后是1*1卷积层,卷积核尺寸为1*1*C_in*C_out,该层参数量=1*1*C_in*C_out,计算量=h*w*C_in*C_out;综上,总的参数量=K*K*C_in + C_in*C_out,总的计算量=K*K*h*w*C_in + h*w*C_in*C_out。模型

而后咱们来作比较:

参数量:(K*K + C_out) * C_in < K*K*C_out*C_in,即depth wise cnn具备更小的参数量;

计算量:(K*K + C_out)*h*w*C_in < K*K*C_out*h*w*C_in,即depth wise cnn具备更小的计算量;

综上,depth wise cnn相比较于传统cnn,参数量和计算量都更小,且模型表达能力在检测领域能够达到传统cnn同样的水平,因此普遍用于移动端或者对实时性要求较高的场景中;

相关文章
相关标签/搜索