《GhostNet: More Features from Cheap Operations》笔记

拜拜、爱过 提交于 2020-03-06 19:38:19

GhostNet

Introduction

GhostNet是从模型设计方面精简卷积神经网络模型。

Motivation

卷积神经网络模型得到的特征中有许多特征是冗余的。比如下图是ResNet-50的第一个残差块得到的特征图,红色、绿色和蓝色框的特征图表现出非常高的相似性。同颜色的下一个特征图就像是上一个特征图的镜像(ghost)。而这些相似度高的特征图是由不同的卷积核参数计算得到的。作者的想法是,既然这些特征图相似,我们可以通过卷积只得到部分的特征图,再由得到的特征图经过简单的变换得到其他相似的特征图。这样做既可以减少卷积核,减少模型的参数量,也可以减少模型的运算量。

模型的冗余特征

Approach

Ghost Module

作者提出的镜像模块是基于卷积操作的。如同上面所说的,作者把原来的卷积层分成两步。第一步是卷积,只是输出的通道数减少了。假设原来的通道数是nn,现在的通道数是m(mn)m (m \le n),得到的特征图用YY'表示。

第二步,用YY'生成其他特征图:
yij=Φi,j(yi),i=1,,m,j=1,,s y_{ij} = \Phi_{i,j}(y'_i), \forall i = 1,\cdots,m, j=1,\cdots,s
其中yiy'_i表示YY'第i个特征图。Φi,j\Phi_{i,j}表示第j个线性操作,用于生成yiy'_i的第j个镜像特征图yijy_{ij}。最后一个操作Φi,s\Phi_{i,s}是一个自身映射操作,用于保留卷积的输出结果。所有的yijy_{ij}组成最后的输出。

下图是镜像模块的示意图:
镜像模块
镜像模块的主要特征是每个特征图通过线性操作生成自身的镜像特征图,特征图和镜像特征图组合成输出,输出的通道数和原来的卷积层输出的通道数一致。

Ghost Bottlenecks

Ghost Bottlenecks的作用和残差块的作用一样,结构也和残差块的结构类似。Ghost Bottlenecks的结构如下图所示:
Ghost Bottlenecks

左边的输入输出大小不变,右边进行了下采样,用在网络中不同阶段的连接处。

GhostNet

GhostNet是由镜像模块组成的网络。GhostNet是模仿MobileNetV3而设计的,主要区别是MobileNetV3的卷积模块换成了镜像模块。GhostNet的网络结构如下表所示
GhostNet网络结构

Experiments

把卷积模块换成镜像模块前后特征图学习到的内容如下图所示
前后对比

图5是换之前的特征图,图4是换之后的特征图。图4的红色表示卷积特征图,绿色表示镜像特征图。通过对比发现,红色的特征图中相似的特征少了,图4学习到的内容和图5学习到的内容差不多。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!