HetConv--Heterogeneous-Kernel-Based-Convolutions-for-Deep-CNNs

when

  • CVPR 2019

what

  • 对于深度卷积神经网络而言,准确度和计算成本往往难以得兼,研究界也一直在探索通过模型压缩或设计新型高效架构来解决这一问题。印度理工学院坎普尔分校的一篇 CVPR 论文则给出了一个新的思路——使用异构的卷积过滤器;实验表明这种方法能在保证准确度的同时显著降低计算成本。

who (动机)

  • 卷积神经网络(CNN)在视觉和自然语言处理领域都已经取得了卓越的表现。进一步提升性能的总体趋势使得模型越来越复杂且越来越深。但是,使用更深度的网络,通过提升模型复杂度来提升准确度并不是毫无代价的——计算成本(FLOPs)会大幅增长。因此,为了降低 FLOPs 以让模型更高效,研究者们已经提出了各种不同类型的卷积运算/卷积过滤器。
  • 已有的卷积过滤器大致可以分为三类:
    • 1)深度方面的卷积过滤器,用于执行逐深度的卷积(DWC)[38];
    • 2)点方面的卷积过滤器,用于执行逐点卷积(PWC)[36];
    • 3)分组方面的卷积过滤器,用于执行逐分组卷积(GWC)[19]。
  • 近来的大多数架构都使用了这些卷积过滤器的组合来得到高效的模型。很多常见的模型也使用了这些卷积(比如 DWC、PWC 和 GWC)来探索可以降低 FLOPs 的新架构。但是,设计一种新架构需要大量研究工作才能找到最优的过滤器组合,进而使得 FLOPs 最小。
  • 另一种提升模型效率的常用方法是压缩模型。模型压缩大致可以分为三类:连接剪枝 [6]、过滤器剪枝 [24, 11, 21, 10, 32, 31, 33] 和量化 [6, 27]。
    • 过滤器剪枝的思想是将模型中贡献最小的过滤器剪枝掉,在移除这个过滤器/连接之后,模型通常还会得到微调以维持其性能。在给模型剪枝时,我们需要一个预训练模型(可能需要计算成本很高的训练作为预处理步骤),然后我们再丢弃贡献最小的过滤器。因此这是一个成本很高且很困难的过程。因此,比起剪枝,使用高效的卷积过滤器或卷积运算来设计高效的架构才是更常用的方法。这不需要昂贵的训练,然后在训练后进行剪枝,因为训练是从头开始高效完成的。
  • 使用高效的卷积过滤器会有两种不同的目标。
    • 一类研究的重心是设计 FLOPs 最小的架构,同时会在准确度上妥协。这些研究的目标是为物联网/低端设备开发模型。这类模型有准确度较低的问题,因此必须搜索最佳可能的模型来实现准确度和 FLOPs 之间的平衡。因此这类模型在 FLOPs 和准确度之间会有所权衡。
    • 另一类研究则专注于在保证模型的 FLOPs 与原架构相同的同时提升准确度。Inception [35]、RexNetXt [40] 和 Xception [2] 等近期架构就属于这一类。他们的目标是使用高效的卷积过滤器设计一种更加复杂的模型,同时保持其 FLOPs 与基础模型一样。通常可以预期更复杂的模型能学习到更好的特征,从而得到更优的准确度。但是,这类模型的重点不是设计一种新架构,而主要是在标准的基础架构中使用已有的高效过滤器。因此这些工作会保持层的数量与架构和基础模型一样,再在每层上添加过滤器以使得 FLOPs 不增大。
  • 不同于这两类方法,我们的方法主要侧重于通过设计新的卷积核(kernel)来降低给定模型/架构的 FLOPs,同时无损准确度。通过实验我们发现我们提出的方法的 FLOPs 比当前最佳的剪枝方法显著更低,同时还能维持基础模型/架构的准确度。而该剪枝方法则成本高昂,在实现 FLOPs 压缩时会导致准确度显著下降。
  • 在我们提出的方法中,我们选择了一种不同的策略来提升已有模型的效率,同时不牺牲其准确度。架构搜索方法需要数年的研究才能得到一种最优化的架构。因此,我们没有去设计一种新的高效架构,而是设计了一种高效的卷积运算(卷积过滤器),并可直接用在任意已有的标准架构中来降低 FLOPs。为了实现这一目标,我们提出了一种新型的卷积——异构卷积(HetConv)。

where

创新点

  • 文章提出的“Heterogeneous Convolution”,顾名思义,就是卷积核的尺寸大小不一。比如在有256个通道的卷积核中,一部分kernel size为1,另一部分kernel size为3。
  • HetConv带来的好处是可以无缝替换VGG、ResNet、MobileNet等结构的卷积形式,这种新的卷积形式,可以向标准卷积一样,从新开始训练,得到比pruning更好的性能效果。文章还指出,HetConv与标准卷积一样,实现latency zero。

HetConv--Heterogeneous-Kernel-Based-Convolutions-for-Deep-CNNs_第1张图片

贡献

  • 我们设计了一种高效的异构卷积过滤器,可用在任何已有架构中,能在不牺牲准确度的同时提升这些架构的效率(将 FLOPs 降低 3 到 8 倍)。

  • 我们提出的 HetConv 过滤器是按零延迟的方式设计的。因此,从输入到输出的延迟可忽略不计。

how

  • HetConvolution的方式很简单,就是将一部分卷积核尺寸设置为K,另一部分设置为1。更直观的可以看下图。

HetConv--Heterogeneous-Kernel-Based-Convolutions-for-Deep-CNNs_第2张图片

1. 网络结构

HetConv--Heterogeneous-Kernel-Based-Convolutions-for-Deep-CNNs_第3张图片

1.2 第L层的网络

HetConv--Heterogeneous-Kernel-Based-Convolutions-for-Deep-CNNs_第4张图片

2. 计算量的分析:

**标准卷积】**计算量:

其中 是卷积输出特征图的尺寸,M是输入通道数,N是输出通道数,K是卷积核尺寸。

**HetConvolution:**假设输入通道数为M,有比例为P的卷积核尺寸为K,这样的kernel数为 ,其他都是大小,这样的kernel数为 ,

那么 卷积的计算量为:

卷积的计算量为:

因此总的计算量为:

HetConvolution与标准卷积的计算量之比:

当P=1时,HetConv变为标准卷积,计算量之比为1。

【DW+PW】计算量: (原文有误)

DW+PW与标准卷积的计算量之比:

由公式(3)可知,增大P,HetConv变为标准卷积,控制P的大小,可以控制accuracy和FLOPs。

极端情况下,P=M的时候,公式(3)和(5):

因此,MobileNet比HetConvolution计算量更大。

GW+PW】计算量:

与标准卷积的计算量之比:

由公式(3)和(8)可知,P=G的时候:

HetConv的计算量比GW+PW更少。

3. 为什么保持 3x3的核

  1. ensure that the filter does cover the spatial correlation on some channels
  2. need not to have the same spatial correlation on all channels.

how much

作者选取了VGG、ResNet、MobileNet等网络,通过在CIFAR-10、ImageNet数据集上的实验验证HetConv的有效性。

image-20190525160451204

不同p值的影响

HetConv--Heterogeneous-Kernel-Based-Convolutions-for-Deep-CNNs_第5张图片

why (为什么好)

  • 文章提出了一种新的卷积方式,通过计算FLOPs和实验证明,HetConv可以在更少计算量的上面取得更高的精度,文章也和model conpression进行了对比,从实验结果来看,效果也挺明显。HetConv可以和现有的网络结构结合,操作简单方便。

    对于HeConv的实用性方面可能还需要时间来证明,毕竟理论计算量和实际情况还是有些差距,另外作者没有在detection、segmentation任务做实验,但从分类任务来说,缺少一定的可信度。希望尽快有开源实现。

你可能感兴趣的:(分类)