1 论文简介
论文:GhostNet: More Features from Cheap Operations(华为诺亚团队)
源代码:https://github.com/huawei-noah/ghostnet
2 动机
由于内存和计算资源的限制,在嵌入式设备上部署卷积神经网络非常困难。
本文提出的GhostNet:
- 降低计算复杂度:只保留固有特征;
- 保持特征多样性:将固有特征进行线性变换得到冗余特征。
图1的分析如下:
- (1)固有特征;
- (2)线性变换;
- (3)冗余特征。
在分类任务中,GhostNet在速度精度平衡上比 mobilenetv3 好。
3 相关工作
3.1 模型压缩(Model Compression)
- Pruning connections
- Channel pruning
- Model quantization
- binarization methods
- Tensor decomposition
- Knowledge distillation
3.2 紧凑模型设计(Compact Model Design)
- MobileNets
- MobileNets V2
- MobileNets V3
- ShuffleNet
- ShuffleNet V2
4 具体方案
常规的卷积操作:
- 输入数据: X ∈ R c × h × w X \in \mathbb{R}^{c \times h \times w} X∈Rc×h×w, c c c为通道数(如3通道,RGB), h h h为图片的高度, w w w为图片的宽度;
- 输出数据: Y ∈ R h ′ × w ′ × n Y \in \mathbb{R}^{h' \times w' \times n} Y∈Rh′×w′×n, h ′ h' h′为输出特征映射的高度, w ′ w' w′为输出特征映射的宽度, n n n个通道;
- 操作: Y = X × f + b Y = X \times f + b Y=X×f+b, f ∈ R c × k × k × n f \in \mathbb{R}^{c \times k \times k \times n} f∈Rc×k×k×n为卷积操作, k × k k \times k k×k为卷积核大小, b b b为偏置;
- 缺点:因为 n n n和 c c c一般取值很大(例如256或512),导致计算量大。
建议的GhostNet操作:
- 输入数据: X ∈ R c × h × w X \in \mathbb{R}^{c \times h \times w} X∈Rc×h×w, c c c为通道数(如3通道,RGB), h h h为图片的高度, w w w为图片的宽度;
- 输出数据: Y ′ ∈ R h ′ × w ′ × m Y' \in \mathbb{R}^{h' \times w' \times m} Y′∈Rh′×w′×m, h ′ h' h′为输出特征映射的高度, w ′ w' w′为输出特征映射的宽度, m m m个通道( m ≤ n m \leq n m≤n);
- 操作1: Y ′ = X × f ′ Y' = X \times f' Y′=X×f′, f ′ ∈ R c × k × k × m f' \in \mathbb{R}^{c \times k \times k \times m} f′∈Rc×k×k×m为卷积操作, k × k k \times k k×k为卷积核大小,为了简化,取消了偏置 b b b;
- 操作2:为了特征多样性,对操作1得到的固有特征进行线性变换, y i j = Φ i , j ( y i ′ ) , ∀ i = 1 , … , m , j = 1 , … , s y_{i j}=\Phi_{i, j}\left(y_{i}^{\prime}\right), \quad \forall i=1, \ldots, m, \quad j=1, \ldots, s yij=Φi,j(yi′),∀i=1,…,m,j=1,…,s, y i ′ ∈ Y ′ y_{i}^{\prime} \in Y^{\prime} yi′∈Y′为第 i i i个固有特征映射, Φ i , j \Phi_{i, j} Φi,j为第 j j j个线性变换,通过线性变换,可以得到 { y i j } j = 1 s \{y_{ij}\}_{j=1}^s {yij}j=1s; 通过线性变换,我们可以得到 n = m ⋅ s n = m \cdot s n=m⋅s个冗余特征 Y = [ y 11 , y 12 , … , y m s ] Y = [y_{11}, y_{12}, \dots, y_{ms}] Y=[y11,y12,…,yms]。