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同樣的水平,因此普遍用於移動端或者對實時性要求較高的場景中;

相關文章
相關標籤/搜索