【论文笔记】CondConv

题目:
【论文笔记】CondConv
发表于:2019NeurIPS
摘要:
卷积层是现代深度神经网络的基本构成结构,一个基本的假设是卷积核应该被数据集中的所有例子共享。我们提出了条件化的带参数的卷积,即condconv,可以对每一个例子都学到专门的卷积核。通过将一般卷积替换为CondConv能够在保持推理能力的同时,增加一个网络的尺寸和容量(同样多的参数下condconv的容量更大)。我们证明了,与现存的卷积神经网络结构在分类和检测任务上作比较,通过condconv扩展网络能够更好的平衡性能提升和推理成本。在ImageNet分类上,我们的CondConv方法应用于EfficientNet-B0结构,在只用了413M个乘法累加(multiply-adds)操作的前提下,获得了最高水平的性能——78.3%的准确率。
介绍:
深度卷积神经网络在很多计算机视觉方面的任务中都获得了非常领先的性能。性能的提升很大程度上来源于为扩展到更大的数据集而增加的模型尺寸和容量。然而,目前的用来扩容的方法都需要高昂的计算开销,部署具有最好性能的推理模型会消耗掉数据中心的大量容量,并且对于具有严格延迟约束的应用程序不可行。
在设计卷积层时的一个基本假设是:相同的卷积核用于数据集中的每一个实例(即卷积核是固定不不变的)。为了增加模型的容量,模型的开发者通常会增加更多的卷积层,或者增加现存卷积的大小(卷积核的高和宽,输入和输出的通道数)。在这两种情况下,额外的容量增加与卷积输入的大小成正比,这可能会很大。(输入越多,需要的层数越多,卷积核的大小越大?是这个意思吧)
由于这个假设,以及人们对其在移动设备上应用的关注,当前高效计算的模型都只有很少的参数。然而,越来越多的计算机视觉应用程序不受参数数量的限制,但在推理时有着严格的延迟要求,比如,实时服务器端视频处理,自动驾驶汽车的感知获取。这篇文章目标就是,设计出更好的服务于这些应用的模型。
我们提出有条件的参数化卷积(CondConv),通过将卷积核的计算作为输入的一个函数,对静态卷积核的范式提出挑战。尤其是,我们对CondConv层的卷积核进行了参数化,使其成为了n个专家(expert)的一个线性组合(α1W1+…+αnWn)*x,其中,α1,…,αn是通过梯度下降学到的输入的函数。为了有效的增加一个condconv层的容量,最近的开发者们可以增加专家的数量。这比起增加卷积核本身的大小在计算上更加高效,因为卷积核需要用于输入(比如一个feature map)中的许多不同位置,而专家在每次输入中只组合一次(这个解释挺奇怪的,不能理解为什么这样计算就高效了)。这允许模型开发者在维持推理效果的同时,增加模型的容量和性能。
CondConv可以被用来作为一个CNN中现存卷积层的简单替代。我们证明了在几个CNN结构使用CondConv替换(传统)卷积层,在imagenet分类和coco目标检测任务中,在保留高效推理能力的同时,能够提升模型的容量和性能。