CVPR 2019的文章, arxiv链接
为了设计一个轻量化的深度学习网络, 文章提出了名叫Heterogeneous Kernel-Based Convolution, 简称HetConv
的卷积操作. 首先回顾下之前提出来的轻量型网络的结构方式, 主要分为以MobileNet为代表的深度可分离卷积+逐点卷积(DWC+PWC
), 及以ShuffleNet为代表的分组卷积+逐点卷积(GWC+PWC
).和这两个不一样的是, HetConv
是直接改变原有的卷积核组成方式来进行传统的卷积, 从而降低了FLOPS. 简单来说, 就是原来一个正常的卷积有256个3x3的卷积核, HetConv
则会把它变成128个3x3+128个1x1的卷积核来进行卷积, 这样就大大降低了卷积所用的操作次数(128这个数可控),
HetConv卷积次数
在HetConv
里, 会用一个变量p
来控制到底保留多少比例的正常的卷积核参与运算. 假设一个输入featuremap
大小为 D i D_{i} Di x D i D_{i} Di x M, 输出 featuremap
大小为 D o D_{o} Do x D o D_{o} Do x N, 卷积核的大小的为 K x K x M x N, 那么对于一个正常的卷积来说, 需要的计算次数为:
- F L s = D o ∗ D o ∗ M ∗ N ∗ K ∗ K FL_{s} = D_{o} *D_{o} * M * N * K * K F