19

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

 3 years ago
source link: https://mp.weixin.qq.com/s/DAc9KX15o9pgO_sJXPr5aA
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

Image

原文链接:https://arxiv.org/pdf/1911.11907.pdf代码:https://github.com/huawei-noah/ghostnet

主要思想

由于存储和计算资源的限制,卷积神经网络(CNNs)在嵌入式设备上的应用非常困难。特征映射的冗余性是这些成功的神经网络的一个重要特征,但在神经网络结构设计中却鲜有研究。本文提出了一种新的Ghost模块,可以从廉价的操作中生成更多的特征图。基于一组内在特征映射,以低廉的成本应用一系列线性变换来生成许多能充分揭示内在特征信息的ghost feature maps。论文提出的Ghost模块可以作为一个即插即用的组件来升级现有的卷积神经网络。Ghost bottlenecks用来堆叠Ghost模块,从而可以方便地建立轻量级GhostNet。在benchmarks上进行的实验表明,所提出的Ghost模块是baselines models中可以替代卷积层的好方法,并且GhostNet可以在ImageNet ILSVRC-2012分类数据集上以相似的计算成本实现比mobilenet3更高的识别性能(例如75:7%的top-1精度)。

提出背景

  1. 传统的CNN通常需要大量的参数和浮点运算(FLOPs)才能达到满意的精度;

  2. 尽管最近的工作,例如MobileNet和ShuffleNet引入了深度可分离卷积或混淆卷积操作,以使用较小的卷积核(浮点运算)来构建有效的CNN,但1x1卷积层仍将占用大量内存和FLOPs;

  3. MobileNet和ShuffleNet这类模型在较少FLOPs下获得了高性能,但特征映射之间的相关性和冗余性却从未得到很好的利用;

  4. 深度网络处理过的特征有一部分冗余,这类特征可以通过更廉价的方式获取,不一定非要传统代价较为高昂的运算方式;

创新点

  1. 引入了一种新的Ghost模块,通过使用较少的参数来生成更多的特征;

  2. Ghost深层神经网络中的一个普通卷积层将被分成两部分。第一部分涉及普通卷积,但它们的总数将受到严格控制,给定第一部分的内在特征映射,然后应用一系列简单的线性运算来生成更多的特征映射;

  3. 在不改变输出特征映射大小的情况下,与普通卷积module相比该Ghost模块所需的参数总数和计算复杂度相比减少了;

  4. 基于Ghost模块,本文建立了一个高效的神经网络结构:GhostNet;

  5. 实验结果表明,所提出的Ghost模块在保持相似识别性能的同时,能够降低通用卷积层的计算成本,在移动设备上快速推理的各种任务上,Ghost网络可以超过MobileNet3等最新的高效深层模型;

网络模型结构

论文提出了Ghost module,针对传统方式,设定输入数据维度为 640?wx_fmt=svg ,卷积核为 640?wx_fmt=svg ,其中 640?wx_fmt=svg 为卷积核大小, 640?wx_fmt=svg 为卷积核数量,设输出的feature map尺寸为 640?wx_fmt=svg ,那么计算量为: 640?wx_fmt=svg 。
640?wx_fmt=png
然而,输出的feature map中会有很多类似或者冗余的特征,如下图所示,这类冗余特征可以基于某个基础特征通过廉价的线性变换获得,下图的扳手是线性操作,箭头起点为基础特征,终点为冗余或相似特征。
640?wx_fmt=png
论文的方法:设定每个基础特征对应 640?wx_fmt=svg 个冗余特征,那么只需要输出 640?wx_fmt=svg 个基础特征即可,然后对每个基础特征执行线性变换(论文采取 640?wx_fmt=svg 的卷积核进行运算),生成对应的冗余/相似特征即可,这样即可降低网络本身的FLOPs。相比于原有方式,FLOPs是原来的 640?wx_fmt=svg 。
640?wx_fmt=png
GhostNet中的主要有两类bottleneck,主要由上述Ghost module堆积,Stride分别为1和2。
640?wx_fmt=png
Ghost bottleneck 1结构类似于ResNet,集成了多个卷积层和shortcut,Ghost bottleneck1主要由两个堆叠的Ghost模块组成。第一个Ghost模块用作扩展层,增加了通道数。Ghost bottleneck2通过深度可分离卷积减少通道数,并使用shortcut连接输入和输出。GhostNet网络结构:如下图所示,GhostNet通过Ghost bottleneck堆叠,并使用SE模块。
640?wx_fmt=png

实验结果

为了验证所提出的Ghost模块和GhostNet架构的有效性,我几个基准视觉数据集上进行了实验,包括CIFAR-10、ImageNet ILSVRC 2012数据集和MS-COCO对象检测基准。针对d和s的大小,论文进行了实验,最终确定了d=3,s=2。

640?wx_fmt=png
CIFAR-10上的实验对比:
640?wx_fmt=png
ImageNet上的实验对比:
640?wx_fmt=png
640?wx_fmt=png
COCO数据集上的实验对比:
640?wx_fmt=png
上述内容,如有侵犯版权,请联系作者,会自行删文。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK