Deformable Convolution v4 (DCNv4),这是一个创新性的优化稀疏DCN操作符以提高实际效率的进步。DCNv4具有更快实现的实现和改进的操作符设计,以提高其性能。

论文: arxiv.org/pdf/2401.06197.pdf

开源链接: https://github.com/OpenGVLab/DCNv4

Deformable Convolution v4 (DCNv4)_运算符

这是一个用于广泛视觉应用的高效且有效的操作符。DCNv4解决了其前驱DCNv3的局限性,通过两个关键的改进:

  1. 在空间聚合中移除softmax归一化,以增强其动态特性和表达能力
  2. 优化内存访问,以最小化冗余操作以提高速度

这些改进导致DCNv4相对于DCNv3的收敛速度显著加快,处理速度大幅提升,DCNv4实现了超过三倍的正向速度。DCNv4在各种任务上表现出卓越的性能,包括图像分类、实例分割和显著的图像生成。当集成到潜在扩散模型中的生成模型(如U-Net)时,DCNv4超过了其 Baseline ,证实了其提高生成模型的可能性。在实际应用中,将DCNv3替换为DCNv4在IntermImage模型中创建FlashhturerInImage,实现了高达80%的速度提升,且无需进一步修改即可获得进一步的性能提升。DCNv4在速度和效率方面的改进,以及其在各种视觉任务上的强大性能,表明其作为未来视觉模型基础构建块的潜力。

1 Introduction

在计算机视觉领域,人们一直在讨论卷积网络 (ConvNets) 和Transformer模型哪个具有更好的性能。近年来,Transformer模型在大视觉模型中通过注意力机制取得了显著的成果,显示出超越ConvNets的潜力。然而,最近的工作如Intermlmage和ConvNeXt表明,基于 ConvNet的视觉模型在各种下游任务上保持了健壮的性能、效率、简单性和适合的归纳偏差。值得注意的是,在图像生成的领域,卷积仍然是首选方法。这种情况突显了基于卷积方法的价值。

Deformable Convolution v4 (DCNv4)_人工智能_02

  • 首先,作者对现有实现进行了指令级 Kernel 分析,并发现DCNv3已经非常轻量。计算成本不到1%,而内存访问成本为99%。这激励作者重新检查操作符实现,并发现DCN向前过程中许多内存访问都是冗余的,因此可以进行优化,从而导致DCNv4实现速度大大提高。
  • 第二,受到卷积无限权重范围启发,作者发现空间聚合中的softmax归一化在密集注意力中是标准操作,但在DCNv3中是不必要的,因为每个位置都有专用的聚合窗口,不是所有聚合运算都需要softmax归一化。直观上,softmax将权重限制在0~1的范围内,将限制聚合权的表达能力。这一洞察力使作者删除了DCNv4中的softmax,增强了其动态特性和性能。因此,DCNv4不仅比DCNv3收敛得更快,而且前向速度提高了超过3倍。这种改进使DCNv4能够充分利用其稀疏特性,成为最快的基本核心视觉运算符之一。
  • 进一步将DCNv3替换为DCNv4,创建了FlashInternImage。值得注意的是,FlashInternImage与InternImage相比,在没有任何额外修改的情况下,实现了50%~80%的速度提升。这种改进使FlashInternImage成为最快的现代视觉 Backbone 网络之一,同时保持了优越的性能。借助于DCNv4,FlashInternImage在ImageNet分类和迁移学习设置中的收敛速度显著提高,进一步在下游任务中展示了改进的性能。
  • 此外,DCNv4在各种架构和任务中显示出作为通用视觉运算符的潜力。作者将DCNv4集成到其他现代 Backbone 架构中,包括ConvNeXt和ViT,用深度卷积和密集自注意力层替换。令人惊讶的是,在没有任何超参数调整的情况下,这些精心设计的网络在DCNv4下表现得一样好,而且更快,展示了动态稀疏DCNv4的有效性和效率。此外,作者在生成模型作为新的应用领域中探索了DCNv4的潜力。
  • 具体来说,在潜在扩散模型中使用U-Net架构,用DCNv4替换常规卷积。作者的实验结果显示,DCNv4在图像生成方面可以比 Baseline 表现更好,显示了使用DCN改进生成模型的巨大潜力。

2 Related Work

视觉模型中的核心运算符: 标准卷积是最普遍和最具影响力的运算符,构成了大多数计算机视觉架构的基础。然而,许多具有独特特性的运算符共同发挥重要作用,在计算机视觉的发展中起着关键作用。深度可分卷积 (DWConv) 将空间和通道操作分离,在开发轻量和高效模型中发挥了关键作用。Re-pLKNeti兑明,利用大核深度可分卷积的纯卷积网络可以在效率和有效性方面达到竞争性能。变形卷积 (DCN) 系列通过向卷积核中添加可学习偏移量,显著提高了卷积的适应性。

与卷积相反,注意力机制具有建模长程依赖的能力,并在各种计算机视觉任务中成功应用。窗口注意力通过限制注意力操作到固定大小的窗口,减少了纯注意力固有的计算复杂性。为了减轻纯注意力的高计算复杂性,变形注意力使每个 Query 可以集中于一组选择的关键采样点,这些位置和权重是动态确定的。这种有效的方法广泛应用于以下艺术感知方法。动态卷积和动态-DWNet通过引入动态权重,增强深度可分卷积(DWConv),从而允许使用实例特定的权重,这些权重可以动态地适应。对于非网格结构的数据,稀疏运算符利用通过双线性插值或参数方式获得的动态权重。

视觉 Backbone 模型中的内存访问成本 (MAC) : 正如以前的研究所强调的那样,FLOPs虽然是一个常用的度量模型复杂性的指标,但并不能准确地反映模型的速度或延迟。在实际场景中,模型的运行速度受到多个因素的影响,而不仅仅是FLOPs。内存访问成本 (MAC) 在这种背景下起着特别重要的作用。Flash-Attention通过减少对高带宽内存 (HBM) 的访问次数,在具有比纯注意力更高的FLOPs 的情况下,实现了显著更快地速度。

Deformable Convolution v4 (DCNv4)_卷积_03

3 Method

Rethinking the Dynamic Property in Deformable Convolution

Deformable Convolution v4 (DCNv4)_卷积_04

Deformable Convolution v4 (DCNv4)_权重_05

Deformable Convolution v4 (DCNv4)_人工智能_06

Deformable Convolution v4 (DCNv4)_权重_07

增强动态性质: 受此观察启发,作者在DCNv3中移除了softmax归一化,将介于0和1之间的调制标量转换为类似于卷积的无界动态权重。如图2所示,这种改变进一步增强了DCN的动态性质,其中其他运算符具有一定的限制,例如有界值范围(注意/DCNv3)或具有输入无关聚合权的固定聚合窗口(卷积)。

图1(b)显示,通过进行这种改变,DCNv4的收敛速度显著快于DCNv3和其他常见运算符,包括卷积和注意。第4节的结果进一步展示了DCNv4在预训练和迁移学习设置中表现良好。

Deformable Convolution v4 (DCNv4)_卷积_08

Speeding up DCN

Deformable Convolution v4 (DCNv4)_卷积_09

GPU效率的理论分析

Deformable Convolution v4 (DCNv4)_权重_10

Deformable Convolution v4 (DCNv4)_权重_11

此外,现代半精度数据格式 (float16/bfloat16) 将需要加载的字节减半,这意味着在相同内存带宽下使用半精度格式时,内存效率可以提高一倍。然而,在作者的原始DCNv3实现中,使用半精度数据并未看到速度提升,这可能是由于数据访问和计算上的开销太大,而在作者的新实现中,速度提升显著。值得注意的是,上述优化技术也可以应用于DCNv1/v2和变形注意力,因为它们共享类似的性能瓶颈和问题。

DCN 模块的微观设计: DCNv3模块引入了多个微观设计;作为核心 Kernel 被优化后,它们对速度的影响变得非可忽略。作者确定了DCNv3设计中可以进一步优化的两个点:

  • 首先,在去除softmax并将其调制标量转换为动态聚合权重(如前所述)之后。计算偏移量和动态权重的线性层实际上可以合并为一个线性层。这减少了网络碎片化并消除了额外的开销,例如 Kernel 启动和同步,从而提高了GPU上的运行效率;
  • 其次,在原始DCNv3模块设计中,使用了一个复杂的子网络,包括深度卷积3x3卷积、层规范化(LN)、GELU和线性层来计算偏移量和动态权重。遵循Xception的设计,删除了额外的LN-GELU层并使用原始的可分卷积结构,进一步减少了运行时间。实际发现,如果延迟是首要考虑的因素,深度卷积也可以删除,但仅会牺牲少量性能。

4 Experiments

在本节中从速度和性能的角度验证了所提出的DCNv4模块的有效性。首先在运算符 Level 进行速度基准测试,并将DCNv4集成到 Backbone 模型中以测试系统级性能。所有速度测试结果都是在NVIDIA A100 80G SXM GPU上获得的。由于空间限制,作者将其他超参数设置和硬件/软件环境等实验结果和实现细节包括在附录中。

Speed Benchmark for Operators

Deformable Convolution v4 (DCNv4)_人工智能_12

然而,它并没有改变注意力的二次复杂度;当输入分辨率较高时,它仍然落后于局部/稀疏运算符,如窗口注意力和卷积。虽然DCNv3在简单实现上可以比DWConv更快,但在优化的cuDNN版本中仍然较慢。相反,DCNv4可以比DCNv3快3倍以上,大大节省运行时间。

此外,DCNv4可以成功地利用使用3×3稀疏窗口的优势,在不同的设置下比其他 Baseline 快得多。

Deformable Convolution v4 (DCNv4)_运算符_13

Image Classification

Deformable Convolution v4 (DCNv4)_人工智能_14

Deformable Convolution v4 (DCNv4)_运算符_15

Downstream Tasks with High-Resolution Input

作者进一步评估DCNv4在高分辨率输入下的代表性下游感知任务性能,包括实例分割、语义分割和3D目标检测。作者保持所有实现细节与InternImage相同,仅将 Backbone 模型更改为FlashInternImage进行公平比较。在训练下游模型时, Backbone 模型从ImageNet预训练权重初始化。

实例分割: 在COCO数据集上使用两个代表性的实例分割框架,Mask R-CNN和Cascade Mask-RCNN,以1(12个epoch)和3(36个epoch)的训练schedule训练FlashInternImage。

Deformable Convolution v4 (DCNv4)_运算符_16

结果如Tab. 5所示还报告了批处理大小为16的FP32/FP16数据格式下的FPS。FlashInternImage在所有模型规模和训练schedule上都表现出优越的结果,实现了更高的速度-准确性权衡。例如,FlashInternImage-T/S在相同规模下超越了所有其他模型,与较大的InternImage-S/B相当,同时快80%-90%。

语义分割: 在ADE20K数据集上使用UperNet训练FlashInternImage,进行了160K次迭代。从Tab. 6的结果中可以得出与实例分割类似的结论,其中FPS以批处理大小16的FP32/FP16报告。配备DCNv4的FlashInternImage可以实现显著更快的速度,并进一步提高了InternImage在不同模型规模上的性能,从而实现了新的最先进状态。

Deformable Convolution v4 (DCNv4)_权重_17

3D检测: 进一步在基于相机的3D目标检测任务上测试DCNv4,该任务是自动驾驶场景中的一个重要应用。在nuScenes数据集上使用BEVFormer v2,这是一个最先进的基于多摄像头的3D目标检测器,使用Flashlnternlmage-Small和Base Backbone 模型进行24个epoch的训练。

Deformable Convolution v4 (DCNv4)_运算符_18

Deformable Convolution v4 (DCNv4)_人工智能_19

作者可以看到,DCNv4在生成建模方面也表现良好,与U-Net中的常规卷积相比,在FID/吞吐量方面取得了更好的结果,而参数更少。请注意,DCNv4的架构/超参数可能不是最优的,可能重新设计模型或为DCNv4寻找新的超参数会得到更好的结果。

Ablation Study

在Sec. 3.2描述的优化选择中进行了ablation study。结果如下所示:Tab. 10。

Deformable Convolution v4 (DCNv4)_运算符_20

5 Conclusion

作者提出了Deformable Convolution v4 (DCNv4),这是一个高效且稀疏的动态运算符。通过对变形卷积的动态性质进行重新思考,并优化内存访问,DCNv4比其前驱DCNv3更快、更有效。

配备了DCNv4的FlashInternImage Backbone 不仅提高了速度,还改善了各种视觉任务上的性能。作者还展示了DCNv4的通用性和有效性,将其集成到最先进的架构(如ConvNeXt和ViT)中,提高了吞吐量并提高了准确性;同时,它在潜在扩散模型中也表现出色,展示了其增强生成模型的潜力。

Appendix A Implementation Details

环境: 在所有实验中使用NVIDIA A100 80GB SXM GPU来衡量吞吐量。软件环境是PyTorch 1.13,CUDA 11.7,cuDNN 8.5。在测试Flash Attention时,使用Flash Attention 2.3.1。当在Swin Transformer中测试窗口注意力时,作者使用timm 0.9.7的PyTorch实现。

在COCO数据集上进行2D目标检测以验证DCNv4的有效性。采用了两种目标检测方法:Mask R-CNN和Cascade Mask R-CNN,主要参考Interimange的设置。作者使用两个调度:1x(12个epochs)和3x(36个epochs),以分别评估模型的收敛速度和最终性能。对于1xschedule,将图像重新缩放到较短的一侧为800像素,较长的一侧不超过1333像素。

在评估阶段,输入图像的较短一侧始终设置为800像素。对于3xschedule,将较短的一侧重新缩放到480到800像素之间,而较长的一侧保持为1333像素。基本学习率设置为1e-4,批处理大小为16。使用AdamW优化器,并包含0.05的重量衰减。Backbone 网络的初始化是预训练的分类权重。

在ADE20K数据集上进行2D语义分割以验证DCNv4的有效性。作者的实验设置主要基于InternImage。对于FlashInternImage-T/S/B和FlashInternImage-L,分别使用AdamW优化器,学习率分别为6e-5和2e-5。FlashInternimage T/S/B的裁剪大小设置为512,而FlashInternImage-L的裁剪大小设置为640。使用16的批处理大小在160k迭代下训练所有模型,以确保与以前方法进行公平比较。Backbone 网络的初始化也是预训练的分类权重。

在nuScenes数据集上进行3D目标检测以验证DCNv4的有效性。作者采用了BEVFormerV2来验证在nuScenes数据集上进行3D目标检测的方法。遵循BEVFormerV2的设置, Backbone 网络在COCO数据集上进行预训练。与BEVFormerV2一致,使用了总共8秒的数据,涵盖过去和未来的信息。使用AdamW优化器,批处理大小为16,学习率为4e-4。训练模型24个epoch。

Appendix B Additional Experimental Results

带有高级标题的下游结果:使用更先进的DINO和Mask2Former来进一步验证FlashInternImage的有效性,如Tab. 1和Tab. 3所示。

Deformable Convolution v4 (DCNv4)_运算符_21

Deformable Convolution v4 (DCNv4)_卷积_22

对于COCO上的2D目标检测,使用DINO头,在12个epoch下训练作者的模型。在训练期间,采用与上述多尺度训练策略相同的策略。其他设置,包括优化器、权重衰减和学习率,也与Mask-RCNN中使用的设置相同。

对于ADE20K上的2D语义分割,将学习率设置为1e-4,批处理大小为16。对于Base和Large规模,使用640的裁剪大小。其他设置与UperNet中使用的设置相同。

Deformable Convolution v4 (DCNv4)_运算符_23

Deformable Convolution v4 (DCNv4)_人工智能_24

观察表明,用DCNv4替换之前使用的DWConv或Attention可以提高推理速度。对于ConvNext,使用DCNv4而不是DWConv也可以实现更高的性能。

Deformable Convolution v4 (DCNv4)_卷积_25

Deformable Convolution v4 (DCNv4)_卷积_26