论文阅读——GhostNet: More Features from Cheap Operations

论文阅读之GhostNet:More Features from Cheap Operations
从简单操作中获取更多特征
——来自华为诺亚实验室&北大
来源:CVPR2020
GhostNet
目前代码已开源:
GhostNet

摘要

由于嵌入式设备有限的片上存储及计算资源,限制了将CNN部署在嵌入式设备。而目前较为成功的卷积神经网络中含有大量冗余的特征图,但在研究中很少涉猎到。因此本文提出了Ghost module从基础操作中获得更多丰富的特征图谱,而这些feature map可以进一步揭示背后的特征信息。
本文提出的幻影模块?(Ghost Module)可看做一种在网络中可随时引入的(随插随用)的模块,也可以用来搭建轻量级的GhostNet网络。本文还进行了一系列实验,如在ImageNet分类数据集中采用和MobileNetV3相近的参量前提下取得了更高的分类准确率。证实了提出的GhostModule可作为传统conv层的有效替代。

Section 1 Introduction

卷积神经网络已在多种计算机视觉任务中取得优异性能,如图像识别,物体检测,语义分割等。传统的卷积神经网络(如ResNet)涉及到海量的参数和大量的浮点运算,近期则越来越关注于可用于移动终端及无人驾驶类的轻量级网络。,如MobileNet和shuffleNet.
另一方面,也有学者在不断研究网络的精简,如剪枝、量化,知识蒸馏等,这部分相关的工作有使用l1正则化去除网络中不那么重要的权重;将权重及激活值使用1bit量化进行加速和网络压缩;通过将复杂网络中的知识迁移到简单网络中,使得以较为精简的网络达到类似的预测效果(teacher-student?);但上述方法都受限于其baseline model的性能。

在深度网络特征图谱中存在丰富甚至冗余的信息,从而确保对输入图像数据一个整体的理解。比如我们对ResNet-50中的一些特征图谱进行可视化,可以看到存在相似的特征图谱对,彼此就像对方的ghost(幻影??),而这些相似的特诊图谱可以从其中一个经过简单地变换得到近似的表达。而丰富甚至冗余的特征图谱也是深度神经网络的特征之一,在本文中我们尝试以一种更高效方式来表达这些特征图谱。
论文阅读——GhostNet: More Features from Cheap Operations_第1张图片
因此本文通过引入Ghost Module,只需通过很少的桉树就完成丰富特征的表达。因此传统的卷积层也被分为了两部分,第一部分依旧是常规的卷积操作,但是我们会从数量上进行严格控制;随后我们将前一部分得到的基础特征结合一系列线性操作用来产生更为丰富的特征图谱。基于ghost module我们搭建了GhostNet并通过在benchmark上的实验验证了ghost module的有效性。在一些任务中GhostNet的性能超过了MobileNet-V3.

Section II Related Work

Related Work主要介绍模型压缩及紧凑模型设计两方面的工作。

Model Compression
模型压缩旨在减少计算成本、能耗等。比如
权重剪枝:将不重要的神经元之间的连接给cut;通道剪枝则是对部分通道进行移除;
模型量化则是将网络中的权重、激活值等完成浮点到定点的转化,比如二值化就可通过二进制运算对网络进行极大加速;
张量分解则是通过得到权重的低秩近似完成模型压缩;
知识蒸馏则是通过较大模型学习的知识引导小型网络的预测。

以上方法主要取决于采用的baseline model.

Compact Model Design
紧凑模型设计:compact model是为了在嵌入式设备中部署CNN,近年来提出的轻量级网络有:SqueezeNet,Xception,MobileNetV1-3以及ShuffleNet。但上述模型都没有仔细研究过特征图冗余性这一问题。

Section III GhostNet

本章将通过Ghost Module的设计,从少量filter产生的特征图谱中生成更为丰富的特征信息,并以及为基础搭建了GhostNet网络。

Part A Ghost Module


DCNN海量的特征图谱往往会导致大量的计算成本,虽然有轻量级网络引入了一系列精简操作,但11卷积仍需要大量的浮点运算。
鉴于主流CNN中间层次的特征图谱含有大量冗余性,我们想通过限定filter的数目并通过运算产生更为丰富的特征信息。
论文阅读——GhostNet: More Features from Cheap Operations_第2张图片输入图像和每一层卷积进行的操作是:
在这里插入图片描述在这里插入图片描述而Ghost Moudule则是通过卷积产生m个intrinsic feature maps,再经过下述线性操作获得n个feature map
在这里插入图片描述

通过identity mapping保留原始的intrinsic featuremap。而intrinsic feature到最终outputfeature是通过在每一通道上线性运算得出的,比卷积运算消耗的计算资源少的多。
Ghost Module的独特之处:(1)使用的是常规的filter size而不是1
1 的pointwise conv(2)与常规使用通道压缩获得空间激活以及空间池化获得通道激活的方式不同,本文是通过对intrinsic feature进行线性操作后得到feature maps
复杂度分析:GhostModule与常规conv layer产生同样数目的feature map,因此Ghost Module可以很方便的嵌入已有的网络框架中用来减少计算开销。而为了充分利用CPU、GPU资源我们建议同层采用同一规模的kernel size。
加速比和压缩比依次为:
论文阅读——GhostNet: More Features from Cheap Operations_第3张图片compression raio

Part B Ghost Bottleneck
本文提出了类似residual block的Ghost bottleneck(G-bneck),结构如Fig 3所示。Redual block在不同conv layer中引入残差连接,(stride=1的)G-bneck包含2个ghost module,第一个Ghost module主要用于featuremap的特征通道数,这就引入扩展比这个概念(expansion ratio = output channel / input channel)。第二个Ghost module则会减少通道数用以匹配shortcut connection,这个shortcut同残差连接一样,从输入直接连到ghost module的输出。
每一个卷积层都包含conv+BN+ReLU操作,除了最后一个Ghost Module的最后一层conv操作。
而对于stride=2的情况,shortcut则是经过了下采样层,在两个Ghost Module中还插入了depthwise convolution
论文阅读——GhostNet: More Features from Cheap Operations_第4张图片Part C GhostNet
GhostNet才用了MobileNetV3的架构,只是将其中的bottleneck换成了堆叠的G-bneck。最开始是16个filter的卷积层,随后堆叠的G-Bbneck的通道数逐渐增多,每一级堆叠的G-bneck,除最后一个stride=2其余stride=1.最终在经过全局的均值池化和一个conv层映射到1280维的向量用以最后分类。堆叠的G-bneck中部分还使用了SE module。最终的网络结构如Table7所示。
论文阅读——GhostNet: More Features from Cheap Operations_第5张图片Part D Width Multiplier
尽管上表中的GhostNet已经很高效了,,但对于默写特定需要更加精简快速的任务,还设定了width multiplier这一参数,对每一层的通道数都乘以width multiplier用以快速调整网络的宽度,这样可以快速高效的调整网络的规模和计算成本。

Section IV Experiments

实验分两步走,首先将传统的卷积层替换为GhostModule来测试其有效性;随后基于ghost module搭建GhostNet用于图像分类及物体检测。
分类数据集CIFAR-10,ImageNet
检测数据集MS-COCO

Part A Ghost Module
本文首先进行了一个toy experiment来比较原图与生成的ghost feature map之间的重建误差。以Fig1为例,将每一组左侧的featuremap作为输入,通过DW conv完成线性映射,实验测试了不同的kernel size对MSE的影响。MSE的结果足以说明缺失可以通过intrinsic feature生成其他的featuremap。同时我们还建议在同层采用同样规格的kernelsize,以及通过depthwise convolution完成线性操作。
论文阅读——GhostNet: More Features from Cheap Operations_第6张图片
** Part B Classification on CIFAR-10**
分类实验:使用VGG-16和ResNet56作为基本框架,将其中所有的conv layer替换成GhostModule,涉及到的超参数主要有s(决定intrinsic feature map数目)和kernel size d。
经实验发现33的kernelsize性能最佳,其中d=1无法包含空间信息,d=5/7则会导致过拟合以及增加计算开销。。固定d=3后测试了s对分类效果的影响。s越大模型枷锁和加速程度越大。当s=2时压缩后的模型分类效果甚至比原网络更佳。
论文阅读——GhostNet: More Features from Cheap Operations_第7张图片随后还可视化了2nd featuremap,红色是原始的 绿色是生成的
论文阅读——GhostNet: More Features from Cheap Operations_第8张图片Part C Classification on ImageNet
随后在ImageNet进行了分类实验,根据计算复杂度分了3级,而GhostNet在每一种量级上都取得了最优的效果。
由于GhostNet轻量级网络的提出是为了移动终端上的应用,因此本文将GhostNet部署在ARM核的移动终端上,accuracy比MobileNet-V2高0.5%,而且推断时间更短(40ms)
论文阅读——GhostNet: More Features from Cheap Operations_第9张图片** Object Detection**
物体检测
为了进一步验证GhostNet的泛化性,在MS COCO数据集上进行了物体检测实验。实验设定:在Imagenet以SGD预训练12个epoch,输入resize为800
1333.最终GhostNet和其他轻量级框架也取得了相近的结果。

Section V Conclusion

本文提出的GhostModule主要为了降低计算开销搭建更有效的轻量级网络。Ghost Module将传统的conv操作分为两部分,以较少的filter数目获取图像的intrinsic feature map,随后再通过线性变换(本文通过Depthwise Convolution实现)获得ghost feature map。而且Ghost Module是一种即插即用(Plug-and play)的模块,很方便的用于模型的压缩/精简。最终实验表明无论在efficiency还是accuracy都达到了SOTA.

下一步是学习源码。

你可能感兴趣的:(CV,神经网络,卷积,计算机视觉,机器学习)