DO-Conv 涨点模块
作者:互联网
文章目录
DO-Conv无痛涨点:使用over-parameterized卷积层提高CNN性能
DO-Conv: Depthwise Over-parameterized Convolutional Layer
论文: https://arxiv.org/pdf/2006.12030.pdf
代码: https://github.com/yangyanli/DO-Conv
0.动机
CNN应用于计算机视觉领域的很多任务中,增加CNN中线性层—非线性层的数量,能够增加网络的表达能力,从而提高网络的性能。
然而,很少有人考虑只增加线性层,只增加线性层会造成过拟合现象,因为多个连续的线性层可以被一个线性层替代,而使用一个线性层参数更少。
在这篇文章中,作者通过在一个普通的卷积层中加入额外的depthwise卷积操作,构成一个over-parameterized的卷积层,并将其命名为DO-Conv,通过实验证明,使用DO-Conv不仅能够加速网络的训练过程,还能在多种计算机视觉任务中取得比使用传统卷积层更好的结果。
在推理时,DO-Conv可以转换为传统的卷积操作,因此将一个网络中的传统卷积替换为DO-Conv并不会增加计算需求。
1.传统的卷积和Depthwise卷积
1.1 传统的卷积
给定输入feature map,传统的卷积操作使用滑动窗口的形式,将卷积核作用到feature map的窗口区域中。
假设feature map的通道数为,卷积核作用的窗口尺寸为,则卷积核作用的窗口可以表示为一个3维张量,记作,为便于后续说明,也可以将其表示为2维张量,即。
假设这个卷积层的输出feature map通道数为,一般使用4维张量表示卷积核,但是也可以用3维张量表示卷积核,记作。使用表示卷积操作,则可以表示如下:
上式中只是表示了输出feature map的1个通道的计算过程。上述表示以及计算过程如下图所示:
在上图中,,,。第一行的个元素与做点积运算,完成输出feature map第一个通道的计算,即的第一行。
1.2 Depthwise卷积
与传统卷积不同的是,在Depthwise卷积中,输出特征某个通道只与输入特征的某个通道和对应权重有关,与输入特征的其他通道无关。
对于某个特定通道的输入特征,个卷积核作用于窗口,输出个特征,通常将称作depth multiplier。若输入特征通道为,则输出特征通道数为。如下图所示:
在上图中,权重矩阵被描述成3维张量,即,令表示Depthwise卷积操作,则上图可表示为,该式含义如下:
在上图中,,,。
2.Depthwise over-parameterized卷积(DO-Conv)
2.1 基本原理
对于输入特征,先使用权重进行depthwise卷积,对输出结果进行权重为的传统卷积,且。
使用表示DO-Conv操作,则上述运算可表示为。如下图所示
上图中图(a)的计算过程可表示为,即:
- 对输入特征进行depthwise卷积操作,即,得到中间变量;
- 对中间变量进行传统卷积操作,即,得到最终结果。
图(b)的计算过程可表示为,即:
- 先计算2个权重的乘积,即,得到新的权重;
- 再用权重对输入特征做传统的卷积操作,即,则到最终结果。
作者将图(a)的计算方式称作feature composition,将图(b)的计算方式称作kernel composition。
由于传统的卷积和depthwise卷积都是线性操作,再根据图(a)和图(b)的表示,不难得出下面的公式:
需要注意的是,从图(b)可以明显看出,对输入特征进行DO-Conv操作的感受野仍然为。
同样是作用于输入特征中的区域,使用传统卷积,卷积核的参数量为;在DO-Conv中,由于使用了2个权重:和,且,即使令,DO-Conv中权重的参数也比传统卷积的参数多。
因此,相比于传统的卷积,DO-Conv是一个over-parameterized操作。
2.2 DO-Conv的训练与推理
在训练时,DO-Conv中的参数和可以使用训练普通CNN的优化方法训练,比如SGD。
在训练包含DO-Conv的网络时,两种方法的前向计算的计算量如下图所示,和分别表示feature map的高度和宽度。
在DO-Conv中,要求,且一般而言,因此在训练时使用kernel composition方式计算DO-Conv,需要更少的操作,且存储比存储更节省内存资源。
在推理时,先计算并存下来,然后做权重为的传统卷积操作,显然,在推理阶段使用DO-Conv与使用相同设置的传统卷积有相同的计算量。
2.3 DO-Conv与深度可分离卷积的区别
使用feature composition模式计算DO-Conv,计算方式很类似于深度可分离卷积(depthwise separable):对于通道数为的输入特征,先进行depthwise卷积运算,输出通道数为的中间变量,然后再进行卷积核尺寸为的传统卷积运算。
但是DO-Conv和深度可分离卷积有一些区别:
- 使用目的不同:DO-Conv的目的是用更多的参数加快训练,同时能达到更好的性能;深度可分离卷积用于替代传统卷积以减少计算量,便于在终端部署。
- 超参数不同:在DO-Conv中,以保证足够的参数量;在深度可分离卷积中,以保证更快的运算速度。
- 结构不同:DO-Conv是两个紧挨着的线性运算,在推理时2个运算可以组合成一个传统卷积 ;深度可分离卷积的depthwise卷积和卷积之间一般有非线性激活函数。
3.DO-DConv和DO-GConv
不仅仅可以使用DO-Conv代替传统的卷积以加快收敛速度、提高网络性能,也可以在depthwise卷积中使用同样的操作,构成DO-DConv,如下图所示:
从上图中可以看出,与DO-Conv类似,DO-DConv也可以通过两种方式计算得到
同样地,在训练阶段得到权重和权重;在推理阶段,将和合并为1个权重。
此外,可以使用同样的策略,将group卷积替换为DO-GConv,此处不再赘述。
4.在视觉任务中使用Depthwise over-parameterized卷积
4.1 DO-Conv的使用技巧
- 当传统卷积的卷积核尺寸为时,不要将其替换为DO-Conv;
- 一般情况下可以令,此时DO-Conv中的权重与原来传统卷积中的权重尺寸相同,权重是一个方阵;
- 使用恒等矩阵初始化,此时,使得包含DO-Conv的网络也能够使用pretrained的权重;
- 在实际使用时,通常优化,且使用0矩阵初始化,以防止正则项对中对角线元素的过度压制。
4.2 DO-Conv对计算机视觉任务的性能提升效果
- 图像分类
在CIFAR-10和CIFAR-100数据集上,测试ResNet-v1、ResNet-v2和Plain(将ResNet-v1中的短接去除)3个网络以及使用DO-Conv替换其中传统卷积的网络,不改变其他超参数,Top1分类正确率如下图所示:
在ImageNet数据集上,测试Plane、ResNet-v1、ResNet-v1b和ResNet-v2这4个网络以及使用DO-Conv替换其中传统卷积的网络,Top1分类正确率如下图所示:
使用DO-DConv和DO-GConv分别替换MobileNet和ResNeXt中的深度分离卷积和group卷积,在ImageNet数据集上的Top1分类正确率如下图所示:
- 语义分割
使用ResNet-50和ResNet-100作为Deeplabv3的backbone,分别用于Cityscapes和PASCAL VOC这2个数据集,作者测试了只将Segmentation head的传统卷积替换为DO-Conv和将整个网络中的传统卷积替换为DO-Conv这2种情况,测试结果如下图所示:
- 目标检测
在COCO数据集上使用backbone为ResNet-50的Faster R-CNN,作者测试了只将Detection head中的传统卷积替换为DO-Conv和将整个网络中的传统卷积替换为DO-Conv这2种情况,测试结果如下图所示:
从上面多个结果可看出,使用DO-Conv替代传统卷积,能提升CNN在多种视觉任务中的性能。需要特别指出的是,上述实验过程中并未针对DO-Conv改变超参数。
4.3 使用Depthwise over-parameterized卷积加速训练过程
为了对比使用DO-Conv与否对训练过程的影响,作者使用了不同深度的ResNet-v1b,在ImageNet数据集上训练,记录下训练过程中网络在训练集和验证集下的Top1错误率,如下图所示:
从图中可以看出,使用DO-Conv代替传统卷积,不仅收敛更快,而且能收敛到更低的错误率。
5.总结
- 在传统卷积操作中增加额外的参数形成DO-Conv,使用DO-Conv代替传统卷积能够加快收敛速度,在不增加网络推理计算量的前提下提高网络性能;
- 将DO-Conv拓展到DO-DConv和DO-GConv,拓宽其应用范围;
- 通过实验证明了DO-Conv在多种视觉任务中的性能提升。
标签:DO,涨点,Depthwise,Conv,卷积,使用,传统 来源: https://blog.csdn.net/wsp_1138886114/article/details/115372816