点击我爱计算机视觉标星,更快获取CVML新技术


作者 | Kai Han, Yunhe Wang等

编译 | Conv

出品 | AI科技大本营(rgznai100)

受限于内存空间和计算资源,将卷积神经网络部署到嵌入式设备中会比较困难。CNNs中特征图的冗余性是保证其成功的关键,但是在神经网络的结构设计中却鲜有研究。

本文(GhostNet: More Features from Cheap Operations,CVPR 2020)提出了一个全新的Ghost模块,旨在通过极其小的代价操作生成更多更丰富的特征图。基于一组固有的特征图,作者应用一系列线性变换,以很小的代价生成许多能充分揭示固有特征信息的虚特征图(Ghost feature maps)。

新提出的Ghost模块可以作为一个即插即用的组件来升级现有的卷积神经网络,通过将Ghost模块堆叠得到Ghost bottlenecks,然后就可以轻易的构建出轻量级的Ghost网络——GhostNet。

实验证明了Ghost替代传统卷积层的有效性,在ImageNet分类数据集上,与MobileNet v3相比,GhostNet在相似计算复杂度的情况下,top-1 上的正确率达到75.7% 。

引言

深度卷积神经网络在诸如目标识别,目标检测,实例分割等任务上都取得了很大的进步。

为了获得更好地准确率表现,传统的卷积神经网络需要大量的参数和浮点运算,在ResNet-50中,大约有25.6M的参数,如果需要处理一张224x224的图片,需要的浮点数计算有4.1B。

这种需求需要巨大的存储空间和算力要求。对于嵌入式设备和移动计算来说基本不可能。

因此,需要探索同时兼顾轻量级和效率的网络结构来满足移动计算的需要。在过去的几年,有很多探索轻量级网络的方法被提出,代表性的有网络剪枝,知识蒸馏等,除此之外,高效的神经网络结构设计在建立高效的、参数和计算较少的深度网络方面具有很高的潜力,并且最近已经取得了相当大的成功。

这种方法也可以为自动搜索方法提供新的搜索单元,代表性的有MobileNet系列,将传统卷积方法拆分为深度卷积和点卷积。

ShuffleNet主要思路是使用Group convolution和Channel shuffle改进ResNet,可以看作是ResNet的压缩版本,进一步提升了轻量模型的性能。

在一个训练良好的深度神经网络特征图中,通常会包含丰富甚至冗余的信息,以保证对输入数据有全面的理解。如下图所示,在ResNet-50中,将经过第一个残差块处理后的特征图拿出来,其中三个相似的特征图使用相同颜色的框圈出。

其中一个特征图可以通过对另一个特征图进行简单的变换(用扳手表示)来近似得到。这些相似的特征映射对,就类似彼此的虚像,作者用Ghost表示,十分形象。

由此可见,特征图中的冗余度是深度神经网络成功的重要保证。作者并没有刻意避免冗余的特性图,而是倾向于采用它们,但是以了一种低成本的方式。

在本文中,作者引入了新的Ghost模块,旨在通过更少的参数生成更多更丰富的特征。具体来说,Ghost模块将传统的卷积层划分为两部分。第一部分就是常规的卷积但是它们的数量会受到严格的限制。将第一部分得到的特征图作为固有卷积,应用一系列的线性变换生成更多特征图。

在不改变输出特征图尺寸的情况下,与普通卷积神经网络相比,Ghost模块的参数总需求和计算复杂度都有所降低。GhostNet就是在Ghost模块的基础上建立的。

作者首先在基准神经架构中替换原有的卷积层来证明Ghost模块的有效性,然后在多个数据集上验证GhostNets的性能。

实验结果表明,所提出的Ghost模块在保持相似的识别性能的同时,能够有效降低计算成本,并且GhostNets能够超越目前最先进的深度模型模型MobileNetV3,适用于移动计算。

相关工作

目前对于轻量神经网络的设计主要有两大方法:模型压缩和紧凑模型设计。

  • 模型压缩

对于给定的神经网络,模型压缩的目的是减少计算和存储成本。

连接剪枝将那些不重要的神经元连接剪掉,通道剪枝将无用通道去除,实现计算加速。

模型量化用离散值表示神经网络中的权重,实现压缩和加速。

知识蒸馏将网络分为教师网络和学生网络,旨在通过强大的教师网络得到兼具正确率和轻量的学生网络。

  • 紧凑模型设计

为了将神经网络嵌入到移动设备上,近年来提出了很多紧凑型网络。SqueezeNet利用bottleneck结构在比AlexNet减少50倍参数的基础上,达到了相似精度。

MobileNets是一系列基于深度可分卷积的轻量级深度神经网络,经过三个版本的进化迭代,实现了很高的精度。

ShuffleNet引入了shuffle机制,改进了通道组之间的信息流交换。虽然这些模型获得了很好的性能,但是特征图之间的相关性和冗余性一直没有得到很好的利用。

方法

  • Ghost 模块

深度卷积神经网络通常包含大量的卷积计算,导致需要大量的计算成本,对移动计算,嵌入式设备来说很不现实。而事实上,主流CNNs的中间特征图中有广泛存在的冗余。

作者提出通过减少诸如CNNs中的卷积核数量等来减少所需的资源需求。给定输入数据X,表示为:

其中,c是通道数,h,w分别表示输入数据的高和宽。任意卷积层生成n个feature map的操作可以表示为:

其中,*表示卷积操作,b是偏置项,此时得到的特征图Y维度信息为[h’ x w’ x n],需要的卷积核f维度信息为[ c x k x k x n ]。

接下来计算一下这个卷积过程需要的浮点数(FLOPs):

这个数据量高达数十万,因为卷积核的数目n和通道数目c通常都非常大(例如256或512)

回顾常规卷积计算过程我们可以知道,要优化的参数(在f和b中)的数量由输入和输出特征映射的维数显式地确定,又因为卷积层的输出特征图往往包含大量的冗余,有些可能是相似的。作者认为没有必要用大量的FLOPs和参数一个个地生成这些冗余的特征图。

设输出的特性图是通过对固有特性图进行简单转换后得到的“幽灵”(Ghost)特征图。这些固有的特征图由常规卷积产生且尺寸较小。假定,现在的固有特征图Y’维度信息为[h’ x w’ x m ],可以通过一个普通卷积操作生成:

其中,f'维度为[c x k x k x m]。与上文中普通卷积的卷积核f相比,m小于等于n。其他的超参数诸如卷积核尺寸,填充方式,步长等都与普通卷积保持一致以此确保输出的特征图空间大小与普通卷积相同。

在保证了空间尺度相同的情况下,现在需要得到n维的feature maps,现在固有的feature maps只有m维。为此,作者对这些固有feature maps进行一系列简单线性变换。具体公式为:

其中, 表示固有feature maps中的第i个特征图, 表示对第i个feature map进行的第j个线性变换,也就是说,某一层feature map可能对应多个线性变换,得到多个变换结果。

在变换的最后,还需要增加一个同等映射,也就是将固有的feature maps原封不动的叠加到变换后的feature maps上去,以此保留固有特征中的信息。

通过上式,我们可以得到经过Ghost模块后的n维特征图Y=[y11,y12,...,yms],n=mxs,示意图如下:

线性操作操作每个通道的计算成本远小于普通的卷积,在实际操作中,在一个Ghost模块中可能会有几种不同的线性运算,这些将在实验部分进行分析。

与现有方法的不同:

  1. 与那些利用1x1点卷积的方法相比,Ghost模块对固有卷积的操作可以不限制卷积核大小。

  2. 现有的方法]采用逐点卷积跨通道处理特征,然后采用深度卷积处理空间信息。与之相反,Ghost模块首先通过普通卷积操作生成小数量的固有特征图,此时的空间大小信息已经固定,只需要再通过简单的线性变化进行空间通道的扩充和丰富。

  3. 在过去的结构中,处理每个特征图的操作仅限于深度卷积或移位操作,而Ghost模块中的线性操作可以具有较大的多样性。

  4. 在Ghost模块中,同等映射与线性变换并行,以保持原有的特征映射。

  • GhostNets的构建

Ghost Bottlenecks

ResNet中的bottleneck结构大家非常了解,作者针对Ghost模块,专门为小卷积构建了bottlenecks。

如下图所示,与ResNet中的结构很相似,在Ghost中,bottlenecks主要由两个堆积的Ghost模块构成,第一个Ghost模块的作用是扩展特征图的通道数,我们把输出通道数与输入通道数之比称为扩展比。

第二个Ghost模块的作用是减少通道数来匹配捷径路径(shortcut path)。

然后将这两个Ghost模块的输入和输出连接起来,除了按照MobileNetV2的建议在第二个Ghost模块之后不使用ReLU外,每一层之后都使用batch归一化(BN)和ReLU进行非线性激活。

下图是针对步长为1和2时的结构。当步长为2时,shortcut通过下采样实现,且在两个Ghost模块间插入步长为2的深度卷积。

有了Ghost bottlenecks,接下来开始构建GhostNets。作者参考了MobileNetV3的基本架构,利用Ghost bottlenecks代替了MobileNetV3中的bottlenecks。

在GhostNets中,第一层是有16个卷积核的普通卷积,然后是一系列通道数逐渐增加的Ghost bottlenecks。这些Ghost bottlenecks根据其输入特征图的大小被分组到不同的阶段。

所有的bottlenecks步长均为1,除了最后一个为2。最后利用全局平均池化和卷积层将特征图转化为一个1280维的特征向量进行最终分类。

SENet中的挤压激励模块(SE)也适用于某些bottlenecks层。

与MobileNetsV3不同,GhostNets并没用应用hard-swish激活函数,因为它的延时性很高。

宽度系数

尽管给定架构已经可以提供低延迟和保证精度,但在某些场景中,我们可能需要更小、更快的模型或更高的特定任务的精度。

定制所需的网络需求,可以在每一层简单地乘以一个系数α来加宽网络。

这个因子α称为宽度乘数,因为它可以改变整个网络的宽度。宽度乘数可以控制模型大小和计算成本大约α平方。

实验

数据集:CIFAR10,ImageNet,MS COCO

  • Ghost模块有效性实验

我们已经知道在卷积过程中生成的特征图中有一些相似的特征映射对,它们可以通过一些线性操作来有效地生成。作者首先进行实验来观察原始特征图和生成的Ghost特征图之间的重构误差。

以上图中的的三对特征映射为例,将左边的特征作为输入,另一个作为输出,利用一个小的深度卷积滤波器来学习映射,代表它们之间的线性操作。

利用均方差MSE作为评价标准,结果如下图所示,可以看到,MSE值非常小,表在深度神经网络中,特征图之间存在很强的相关性,这些冗余特征图可以由多个固有特征图生成。

除了上述实验中用到的卷积,我们还可以探索其他一些低成本的线性操作来构造Ghost模块,如仿射变换和小波变换。然而,卷积是一种高效的运算,已经得到了当前硬件的良好支持,它可以涵盖许多广泛使用的线性运算,如平滑、模糊、运动等。

在Ghost有两个超参数,分别是线性转换中的卷积核大小d和步长s,结果如下所示,可以看到,提出的d=3的Ghost模块比较小或较大的Ghost模块性能更好。

这是因为尺寸为1×1的卷积核不能在feature maps上引入空间信息,而尺寸较大的卷积核如d = 5或d = 7会导致过拟合和计算量增加。

因此,我们在接下来的实验中采用d = 3进行实验。s与得到的网络的计算代价直接相关,s越大,压缩比越大。当我们增加s的时候,FLOPs明显减小,准确率逐渐降低,这与预期一致。

特别是当s = 2表示将VGG-16压缩2倍时,本文方法的性能甚至比原模型稍好一些,说明了所提出的Ghost模块的优越性。

  • CIFAR-10实验结果

作者将Ghost模块嵌入VGG-16和ResNet-56中,得到新的网络结构,称为Ghost-VGG-16和Ghost-ResNet-56,利用CIFAR-10数据集评估Ghost模块。

结构如下图所示,我们将GhostNet与VGG-16和ResNet-56架构中具有代表性的最新模型进行了比较,对于VGG-16,本文模型得到的精度略高于原始的模型且速度快2倍以上,说明VGG模型存在较大的冗余。

  • 特征图可视化

如下图所示,通过ghost模块得到的特征图,虽然生成的feature maps来自于固有的feature maps,但是它们确实有显著的差异,这意味着生成的feature足够灵活,可以满足特定任务的需要。

左上角的图像为输入,左边红色框中的feature maps来自于固有卷积,右边绿色框中的feature maps来自于经过Ghost模块后的特征输出。

  • ImageNet实验结果

将Ghost模块嵌入到标准的ResNet- 50中,并在ImageNet数据集上进行实验。

结果如下表所示,在两倍多加速的情况下,本文的方法可以获得明显更好的性能。当s增加到4时,模型精度下降了0.3%,计算速度提高了4倍左右。

相比之下,采用相似权重或FLOPs的比较方法的性能要差得多。

  • GhostNet实验结果

下表是最先进的小网络在ImageNet上的实验结果,可以看到,GhostNet超越了SOTA,兼顾了速度和准确率。

结论

为了降低当前深度神经网络的计算成本,适应移动计算的需求。本文提出了一种新的Ghost模块,用于构建高效的神经网络结构。

基本的Ghost模块将原始的卷积分为两部分,首先利用较少的卷积核生成几个固有特征图,在此基础上,进一步应用一定数量的线性变换操作,有效地生成丰富的特征图。

在基准模型和数据集上的实验表明,该方法是一种即插即用的模型压缩方法,可以将原始模型转换为紧凑模型,同时保持可比较的性能。此外,使用新的Ghost模块构建的GhostNet在效率和准确性方面都优于最先进的轻量级神经网络架构。

论文链接:

https://arxiv.org/abs/1911.11907

GitHub 链接 (pytorch version):

https://github.com/iamhankai/ghostnet.pytorch


模型压缩与应用部署交流群

关注最新最前沿的模型压缩、轻量级网络设计、量化、剪枝、知识蒸馏技术,扫码添加CV君拉你入群,(如已为CV君其他账号好友请直接私信)

(请务必注明:部署)

喜欢在QQ交流的童鞋,可以加52CV官方QQ群:805388940。

(不会时时在线,如果没能及时通过验证还请见谅)


长按关注我爱计算机视觉

超越MobileNet v3!华为诺亚、北大提出GhostNet​,使用线性变换生成特征图相关推荐

  1. CVPR 2022 | 华为诺亚北大提出量子启发MLP,性能超越Swin Transfomer

    ©作者 | 机器之心编辑部 来源 | 机器之心 来自华为诺亚方舟实验室.北京大学.悉尼大学的研究者提出了一种受量子力学启发的视觉 MLP 新架构. 近年来,计算机视觉领域的新型架构层出不穷,包括视觉 ...

  2. 华为诺亚北大提出新视觉 MLP 架构,性能超越Swin (附代码下载)

    来源:计算机视觉研究院 来自华为诺亚方舟实验室.北京大学.悉尼大学的研究者提出了一种受量子力学启发的视觉 MLP 新架构. 近年来,计算机视觉领域的新型架构层出不穷,包括视觉 Transformer. ...

  3. 华为诺亚ViG架构媲美CNN、Transformer,图神经网络也能用作CV骨干模型

    华为诺亚实验室的研究员发现图神经网络(GNN)也能做视觉骨干网络.将图像表示为图结构,通过简洁高效的适配,提出一种新型视觉网络架构 ViG,表现优于传统的卷积网络和 Transformer.在 Ima ...

  4. 华为诺亚、北大提出GhostNet​,使用线性变换生成特征图,准确率超MobileNet v3 | CVPR 2020...

    作者 | Kai Han, Yunhe Wang等 编译 | Conv 出品 | AI科技大本营(rgznai100) 受限于内存空间和计算资源,将卷积神经网络部署到嵌入式设备中会比较困难.CNNs中 ...

  5. GhostNet : 轻量级网络模型,性能超越MobileNetV3(CVRP2020, 华为诺亚)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 原文链接:https://arxiv.org/pdf/1911.11907.pdf 代码:https: ...

  6. 性能超越最新序列推荐模型,华为诺亚方舟提出记忆增强的图神经网络

    作者 | Chen Ma, Liheng Ma等 译者 | Rachel 出品 | AI科技大本营(ID:rgznai100) 用户-商品交互的时间顺序可以揭示出推荐系统中用户行为随时间演进的序列性特 ...

  7. NeurIPS 2021 Transformer部署难?北大华为诺亚提出Vision Transformer的后训练量化方法...

    关注公众号,发现CV技术之美 本文分享 NeurIPS 2021 论文『Post-Training Quantization for Vision Transformer』,由北大&华为诺亚联 ...

  8. 收藏 | 图像处理Transformer:华为诺亚、北大等IPT模型,刷榜

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习> ...

  9. 中科院华为诺亚提出ViG:一种全新的骨干网络,性能不输CNN、ViT!

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CV 微信技术交流群 梦晨 发自 凹非寺 转载自:量子位(QbitAI) 用图神经网络( ...

最新文章

  1. nginx 稳定版 1.16.0 发布,支持动态加载 SSL 证书
  2. 【转】性能测试,影响 TPS 的一些因素
  3. linux开机自动联网设置
  4. Weblogic ./startWebLogic.sh Error 解决
  5. 课时13—横屏竖屏事件
  6. 记一次wireshark抓取QQ好友IP和火绒抓取微信IP
  7. lfw分类 python_无法在sklearn中使用LFW数据集
  8. 5个Web前端开发软件,零基础入门完全够用了!
  9. CSS font-family 属性值大全
  10. oracle分析函数结构,oracle之分析函数解析及其应用场景
  11. retrofit简单的网络请求
  12. 金三银四马-sb java面试突击资源
  13. 资深 iOS 开发工程师教你5 道题全面考察候选人
  14. Java输出4位数整数,输出这个数的千位,百位,十位,个位
  15. 程序模板(20210603笔记)
  16. 办公软件使用学习笔记:excel第五节。excel表格筛选和排序使用方法总结。
  17. 解决4K屏电脑显示问题
  18. mac 读linux格式文件内容,linux和mac osx 下查找替换并保存文件的方法
  19. Huffman编码/译码问题
  20. 使用百度地图实现车辆轨迹回放

热门文章

  1. VC皮肤库SkinCrafter v3 4 0 0使用
  2. db2有主键时默认hash分区_不允许设置db2主键问题的解决
  3. html写出五个文本标签,HTML的几个常用标签
  4. java classifier_Java 朴素贝叶斯分类器、SVM(5行代码)实现乳腺癌分类
  5. linux配置php项目路径,linux下如何修改php.ini路径
  6. 计算正方形面积和周长_小学三年级数学下册长方形和正方形面积计算练习题(无答案)...
  7. php七牛云rtmp直播推流,GitHub - jangocheng/FlutterQiniucloudLivePlugin: Flutter 七牛云直播云 推流/播放 SDK集成...
  8. Jsp页面用javascript加 滑动验证条
  9. wince系统安装软件_精密空调安装泄漏检测系统软件的作用
  10. 10备忘录没有表格_我的投资备忘录(2020年12月04日)