摘要
卷积是现代机器学习算法中最常用的算子,是许多主流AI模型的基础构件。为了更好的适用于不同场景,常规卷积也发展出了各类变形。本文讨论了各种不同卷积的实现,分析了各自特点。随着深度学习研究的深入和应用的拓展,相信会有更多高性能的算子会被发明出来。
卷积是现代机器学习算法中最常用的算子。从信号处理的角度来看,它分析的是输入信号经过线性移不变系统后的输出。卷积包括三个要素:输入x,输出y和移不变系统f。移不变系统的表达一般以卷积核来代替。在深度学习等领域,卷积操作以离散形式表达。以二维信号卷积为例。若多通道输入为x(n,m,c),卷积核 f(k,c,r,s),输出y(n,m,k),卷积操作可以表达为:
可以看出离散卷积的输出是输入与卷积核逐单元(像素)点乘后累加。在具体实现时,卷积可以通过适当的数据处理后以矩阵乘的形式来完成。这种操作也是许多AI芯片加速计算的核心点之一。多级的深度卷积网络可以提取输入信号各尺度的不同特征,极大提升了神经网络的处理能力,促进AI性能的爆发,从而被广泛应用于各种实践领域。在各类实践中,人们发现存在一些不同的场景,常规的卷积操作要么不能取得好的效果,要么计算效率低下。针对这样一些情况,各种特定的卷积被发明出来。这些“卷”出来的卷积操作在特定应用中取得了比常规卷积更好的效果。除了标准的多通道卷积外,已经有许多卷积算子被应用于深度学习中。- Depthwise卷积:输入信号各通道独立混合的卷积[2]
- 分组卷积:将输入信号通道分组,组内混合的卷积[3],而shuffled grouped卷积则进一步将分组的通道打散重排分组[4]
除了上述这些常用的算子,深度学习中还用到了dilated卷积、involution(内卷)等等卷积实现。针对特定应用,学者也提出了各种特殊的卷积算子,包括本文介绍的deformable卷积和稀疏卷积等。
在自动驾驶和交通监控等CV任务中,检测目标由于运动和视角等变化存在大的形变。常规卷积不能很好的捕获这样的形变特征。因此,研究者们提出了deformable卷积[5]。DCN算子对卷积时视野中每个点加一个偏移量。也就是说卷积核不是与对应的点相乘,而是与偏移后位置的点相乘。因此偏移后卷积核的感受野不是方形的,而是与输入特征匹配的。
图1 DCN算子的采样点分布, 左1,常规;其它,各种变形的偏移采样 (Fig.1 in [5])
DCN的要点在于每个位置偏移量不是固定的,根据输入feature map计算来确定。偏移量的计算模式是通过训练得到的。考虑到偏移后每个采样点对卷积的影响不同,DCN又引入了对采样点值加权的调制量。这个调制量也是用训练后的参数逐点计算,并通过sigmoid函数控制在[0,1]之间[6]。DCN的实现原理如下图例子所示:
输入x经过计算偏移量和调制量的卷积核,得到逐点的偏移量(dx, dy)和调制量m。对于图中3x3卷积,每个点有9组偏移量和调制量。通常情况下,计算得到的偏移量都不是整数,无法直接得到对应点的输入特征值。因此DCN用插值方法来计算偏移位置所有通道的特征值x_offset。计算结果经偏移量调制,作为DCN卷积的输入。偏移调制后的特征值x_offset_mod与DCN卷积核(图中左下)乘累加计算,得到最终的DCN结果y。在上述DCN计算流程中,除了DCN卷积核,计算偏移量的卷积核参数也是可学习的,需要在训练中优化。实验证明DCN的感受野比一般卷积更大且变形灵活,对物体形变具有更强的提取能力。如图所示,DCN对目标的采样点分布能很好地匹配不同目标形状。
图3 实际图像上各目标采样分布:从左到右,背景、小目标、大目标(Fig 6 in [5])
实际应用中许多信号包含大量为零的单元,比如用于立体视觉的点云数据。如果直接用普通的计算方式对这类高度稀疏的信号卷积,会有大量乘0的操作,白白浪费计算资源。另一方面自动驾驶等应用对实时性要求高,需要及时处理输入的感知信号,其中就包括激光雷达产生的点云数据。因此学者们提出了针对稀疏信号的稀疏卷积计算实现[7]。其核心思想很简单:仅让非零的元素参加计算。为此,该实现在计算前首先建立包含非零输入和输出位置的索引表,然后构建一个Rule矩阵。Rule矩阵每一行是一个点乘的atomic操作,包含了给定input的indexi和卷积核偏移k相对应的输出在索引表的index j。计算时,稀疏卷积首先gather参数与非零输入,完成矩阵乘法(GEMM),计算结果scatter到输出矩阵相应位置,最后累加输出每个单元的GEMM值。整个计算可以简化为gather->GEMM->scatterAdd。
图4 稀疏卷积计算的实现 (Fig.2 in [7])上述实现计算前首先要建立rule矩阵,会付出额外的计算代价。但计算时仅非零单元参与计算。对于高度稀疏的点云等数据卷积,整体的计算效率还是会有很大的提升。实验结果表明,在相近性能情况下,稀疏卷积算子构建的检测网络在KITTI数据集上比主流模型有5-10倍的速度提升。
为了更大限度“压榨”出卷积提取特征的性能,研究者们根据应用和信号特定设计了不同的算子实现,并在实现中取得了更好的性能。当然,“卷”不是没有代价的。这些特殊卷积往往会增加在实现和计算等方面的开销。以Deformable卷积为例,为了更准确的根据输入形状选取采样点,我们需要增加额外的卷积和插值计算。这也意味着更高的计算需求。特别是在实时检测等实时要求高的场景,高计算量会限制Deformable卷积的应用。类似的,稀疏卷积尽管减少了参与计算的单元,但构建用于计算的rule矩阵需要额外的开销。当数据稀疏度不够高时,稀疏卷积反而会增加计算量,降低计算效率。因此在实践中,我们往往会根据需求、硬件等各方面因素在性能增益和开销之间综合考虑和折衷。
本文讨论了AI应用中一些特殊的卷积算子及实现。这些卷积在特定领域可以取得比常规卷积更好的性能。随着深度学习研究的深入和应用的拓展,相信会有更多高性能的算子会被发明出来,提升AI模型的整体性能,推动机器学习的发展,甚至会对AI加速器软硬件发展带来更多的挑战与机遇。
参考文献
[1] Austin Derrow-Pinion, Jennifer She, David Wong, et al. ETA Predictionwith Graph Neural Networks in Google Maps. 2021[1] Min Lin, Qiang Chen, Shuicheng Yan, Network In Network, arXiv:1312.4400.
[2] A. Howard, et.al., MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications, arXiv:1704.04861.
[3] S. Xie, et.al., Aggregated Residual Transformations for Deep Neural Networks, arXiv:1611.05431.
[4] X. Zhang, ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices, arXiv:1707.01083.
[5] J.Dai, et.al., Deformable Convolution Networks, arXiv:1703.06211.
[6] Z.Zhu, et.al., Deformable ConvNets v2: More Deformable, Better Results, arXiv:1811.11168v2.
[7] Yan Yan, Yuxing Mao, & Bo Li, SECOND: Sparsely Embedded Convolutional Detection, Sensors 2018, 18, 3337
壁仞科技研究院作为壁仞科技的前沿研究部门,旨在研究新型智能计算系统的关键技术,重点关注新型架构,先进编译技术和设计方法学,并将逐渐拓展研究方向,探索未来智能系统的各种可能。壁仞科技研究院秉持开放的原则,将积极投入各类产学研合作并参与开源社区的建设,为相关领域的技术进步做出自己的贡献。