该文是谷歌大神Quov V.Le出品,一种条件卷积,我更愿称之为动态卷积。卷积是当前CNN网络的基本构成单元之一,它的一个基本假设是:卷积参数对所有样例共享。作者提出一种条件参数卷积,它可以为每个样例学习一个特定的卷积核参数,通过替换标准卷积,CondConv可以提升模型的尺寸与容量,同时保持高效推理。作者证实:相比已有标准卷积网络,基于CondConv的网络在精度提升与推理耗时方面取得了均衡即精度提升,但速度持平。在ImageNet分类问题中,基于CondConv的EfficientNet-B0取得了78.3%的精度且仅有413M计算量。
文章作者: Happy
Introduction
CNN在诸多计算机视觉任务中取得了前所未有的成功,但其性能的提升更多源自模型尺寸与容量的提升以及更大的数据集。模型的尺寸提升进一步加剧了计算量的提升,进一步加大优秀模型的部署难度。
现有CNN的一个基本假设:对所有样例采用相同的卷积参数。这就导致:为提升模型的容量,就需要加大模型的参数、深度、通道数,进一步导致模型的计算量加大、部署难度提升。由于上述假设以及终端部署需求,当前高效网络往往具有较少的参数量。然而,在某些计算机视觉应用中如终端视频处理、自动驾驶,模型实时性要求高,对参数量要求较低。
作者提出一种条件参数卷积用于解决上述问题,它通过输入计算卷积核参数打破了传统的静态卷积特性。特别的,作者将CondConv中的卷积核参数化为多个专家知识的线性组合其中,$?1,⋯,??$是通过梯度下降学习的加权系数:(?1?1+⋯+????)∗?。为更有效的提升模型容量,在网络设计过程中可以提升专家数量,这比提升卷积核尺寸更为高效,同时专家知识只需要进行一次组合,这就可以在提升模型容量的同时保持高效推理。
Method
在常规卷积中,其卷积核参数经训练确定且对所有输入样本“一视同仁”;而在CondConv中,卷积核参数参数通过对输入进行变换得到,该过程可以描述为:
??????(?)=?((?1?1+⋯????)∗?)
其中??=??(?)一个样本依赖加权参数。在CondConv中,每个卷积核??具有与标准卷积核参数相同的维度。
常规卷积的容量提升依赖于卷积核尺寸与通道数的提升,将进一步提升的网络的整体计算;而CondConv则只需要在执行卷积计算之前通过多个专家对输入样本计算加权卷积核。关键的是,每个卷积核只需计算一次并作用于不同位置即可。这意味着:通过提升专家数据量达到提升网络容量的目的,而代码仅仅是很小的推理耗时:每个额外参数仅需一次乘加。
CondConv等价于多个静态卷积的线性组合,见上图b。因此它具有与n个专家同等的容量,但计算更为高效。而这其中最关键是:加权参数??。它必须具有数据依赖,否则CondConv将等价于静态卷积。那么如何设计该数据依赖型参数呢???作者采用三个步骤计算该参数:
?(?)=???????(???(?)?)
所提CondConv可以对现有网络中的标准卷积进行替换,它同时适用于深度卷积与全连接层。
很明显,这里所提的CondConv就是一种标准的动态滤波器卷积,只不过它这里卷积核设计方式与已有其他动态滤波器卷积存在一些区别,但本质不变:数据依赖性。
Experiments
作者在ImageNet分类任务上评估了所提CondConv的性能,相对性能对比见下表。
此外,作者还对比提升专家数量对模型性能的影响。
除了分类任务,作者还在COCO检测任务上对所提CondConv进行对比分析,见下图。
更多的消融实验分析详见原文,这里不再赘述。
Conclusion
总而言之,作者在静态卷积之外提出一种条件参数卷积:CondConv。它打破了静态卷积的假设:卷积核对所有输入“一视同仁”。这为提升模型容量同时保持高效推理打开了一个新的方向:提升卷积核生成函数的尺寸与复杂度。由于卷积核参数仅需计算一次,相比卷积计算,这些额外的计算量可以忽略。也就是说:提升卷积核生成的计算量要远比添加更多卷积或更多通道数高效。CondConv同样突出一个重要的研究问题:如何更好的覆盖、表达与利用样本的相关性以提升模型性能。
推荐阅读
本文章著作权归作者所有,任何形式的转载都请注明出处。更多动态滤波,图像质量,超分辨相关请关注我的专栏深度学习从入门到精通。