文献阅读-DCNv4

Scroll Down

Efficient Deformable ConvNets: Rethinking Dynamic and Sparse Operator for Vision Application

论文链接: https://arxiv.org/pdf/2401.06197.pdf
github链接: https://github.com/OpenGVLab/DCNv4

Abstract

我们介绍了可变形卷积v4 (DCNv4),这是一种高效的算子,专为广泛的视觉应用而设计。DCNv4通过两个关键增强解决了其前身DCNv3的局限性:去除空间聚合中的softmax归一化,增强空间聚合的动态性和表现力;优化内存访问以最小化冗余操作以提高速度。与DCNv3相比,这些改进显著加快了收敛速度,并大幅提高了处理速度,其中DCNv4的转发速度是DCNv3的三倍以上。DCNv4在各种任务中表现出卓越的性能,包括图像分类、实例和语义分割,尤其是图像生成。当在隐式扩散模型中与U-Net等生成模型集成时,DCNv4的性能优于其baseline,强调了其增强生成模型的可能性。在实际应用中,将InternImage模型中的DCNv3替换为DCNv4来创建FlashInternImage,无需进一步修改即可使速度提高80%,并进一步提高性能。DCNv4在速度和效率方面的进步,以及它在不同视觉任务中的强大性能,显示了它作为未来视觉模型基础构建块的潜力。

1.Introduction

在计算机视觉领域,一直存在是卷积神经网络还是Transformer性能更优的疑问。近年来,Transformer模型[12,25,44]在具有注意机制的大视觉模型中取得了显著的效果,显示出超越ConvNets的潜力。然而,最近的研究,如InternImage[38]和ConvNeXt[26]表明,基于convnet的视觉模型在各种下游任务中保持了稳健的性能、效率、简单性和合适的归纳偏倚[15,41]。值得注意的是,在图像生成等领域[29,31],卷积仍然是首选的方法。这种情况揭示了基于卷积的方法的持久价值。

基于卷积的优势,Deformable convolution v3 (DCNv3)——高级ConvNet模型InternImage的核心算子——创新地将稀疏注意机制与卷积结合在一起:它以滑动窗口的方式处理每个输出位置,小窗口大小(例如3 × 3 = 9个点)作为局部,像卷积这样的稀疏算子,以自适应范围对点进行动态采样,并以输入依赖的注意权值对空间特征进行聚合。DCNv3具有较小的窗口大小和ConvNet归纳偏倚,特别是与密集的全局[12]或基于局部窗口的[25]注意力方法相比,DCNv3有望实现更快的收敛速度和更低的推理延迟。

尽管有这些优点,DCN还没有成为视觉主干模型的首选解决方案。这一观察结果使我们开始研究DCN算子的局限性。我们首先注意到的是运行速度。DCN的速度慢是一个长期存在的问题[1],因为它在采样非附近位置时引入了额外的开销,使其不适合现代卷积算法。我们的对比分析(如图1a所示)表明,DCNv3可能比适当优化的密集全局关注慢[9],这突出了进一步优化的必要性。此外,我们发现DCNv3在初始骨干训练阶段甚至比全局注意力收敛得更慢,如图1b所示,这是反直觉的,因为DCNv3配备了ConvNet归纳偏倚。

为了克服这些挑战,我们提出了可变形卷积v4 (DCNv4),这是一种创新的进步,用于优化稀疏DCN算子的实际效率。DCNv4具有更快的实现和改进的操作符设计,以增强其性能,我们将在下面详细说明。

首先,我们对现有实现进行指令级内核分析,发现DCNv3已经是轻量级的。计算成本不到1%,而内存访问成本为99%。这促使我们重新审视运算符实现,并发现DCN转发过程中的许多内存访问是冗余的,因此可以进行优化,从而实现更快的DCNv4实现。

其次,从卷积的无界权值范围中得到启发,我们发现在DCNv3中,密集关注下的标准操作——空间聚合中的softmax归一化是不必要的,因为它不要求算子对每个位置都有专用的聚合窗口。直观地说,softmax将有界的0 ~ 1值范围放在权重上,并将限制聚合权重的表达能力。这一见解使我们消除了DCNv4中的softmax,增强了其动态特性并提高了其性能。

因此,DCNv4不仅收敛速度明显快于DCNv3,而且正向速度提高了3倍以上。这一改进使DCNv4能够充分利用其稀疏特性,成为最快的通用核心视觉算子之一。

我们进一步将InternImage中的DCNv3替换为DCNv4,创建FlashInternImage。值得注意的是,与InternImage相比,FlashInternImage在没有任何额外修改的情况下实现了50 ~ 80%的速度提升。增强后的FlashInternImage在保持优越性能的同时成为最快的现代视觉骨干网络。在DCNv4的帮助下,FlashInternImage显著提高了ImageNet分类[10]和迁移学习设置的收敛速度,并进一步提高了下游任务的性能。

此外,DCNv4在各种架构和任务中显示出作为通用视觉算子的潜力。我们将DCNv4集成到其他现代骨干架构中,包括ConvNeXt[26]和ViT[12],取代深度卷积[6]和密集自注意力层[35]。令人惊讶的是,在没有任何超参数调整的情况下,这些精心设计的带有DCNv4的网络表现相当,而且速度快得多,显示出动态、稀疏的DCNv4的功效和效率。此外,我们还探索了DCNv4在生成模型中作为一个新的应用领域的潜力。具体来说,我们将其应用于隐式扩散模型[29]中使用的U-Net[30]架构,用DCNv4取代正则卷积。我们的实验结果表明,DCNv4在图像生成方面可以比基线更好地工作,显示了使用DCN改进生成模型的巨大潜力。

我们将发布我们的DCNv4实现,希望这个高效的算子能够促进未来视觉界的研究。

在视觉模型中的核心运算符: 标准卷积[17]是最普遍和最具影响力的算子,构成了大多数计算机视觉体系结构的支柱[14,16,32]。然而,无数的运算单元,每一个都有独特的特点,共同在计算机视觉的发展中发挥着至关重要的作用。深度可分离卷积(DWConv)[6]分离了空间和通道操作,并在开发轻量级和高效模型方面发挥了关键作用[26,27]。RepLKNet[11]表明,利用大核深度卷积的纯卷积网络,在效率和有效性方面都能获得有竞争力的表现。可变形卷积(Deformable Convolution, DCN)序列[7,38,47]通过在卷积核中加入可学习的偏移量,显著地跨越了卷积的适应性。与卷积相反,注意机制[35]具有模拟远程依赖关系的能力,并已成功地应用于各种计算机视觉任务中[3,12,24,33]。窗口注意[25,36]通过将注意操作限制在固定大小的窗口中,降低了普通注意固有的计算复杂性。为了减轻与vallina attention相关的高计算复杂性,可变形注意力[48]使每个查询能够集中在选定数量的关键采样点上,并动态确定位置和权重。这种有效的方法被广泛应用于下面的艺术感知方法。DynamicConv[40]和dynamicDWNet[13]通过结合动态权重来增强深度卷积(DWConv),从而能够使用动态适应的实例特定权重。对于非网格结构化数据,稀疏算子[34,37,42]利用通过双线性插值或参数方式获得的动态权重。

视觉骨干网的内存访问开销(MAC): 正如之前的研究[18,27]所强调的那样,FLOPs虽然是一个经常用来衡量模型复杂性的指标,但并不能准确地表示模型的速度或延迟。在实际场景中,模型的运行速度受到多种因素的影响,而不仅仅是FLOPs。在这种情况下,内存访问成本(MAC)起着特别重要的作用。[27]。Flash-Attention[9]通过减少对高带宽内存(HBM)的访问次数,在实践中实现了明显更快的速度,尽管与vanilla attention相比具有更高的FLOPs。虽然DCN操作在FLOPs方面没有表现出劣势,但在相同的FLOPs预算下,与DW-Conv相比,它们的延迟要长得多,这主要是由于大量的内存访问成本。在这项工作中,我们对与DCN操作相关的内存访问成本进行了全面的分析和优化,显著提高了DCN的运行速度。

3.Method

3.1 对可变性卷积动态特性的再思考

image.png

修正DCNv3
给定输入image.png,在每个位置p0带有k个采样点的DCNv3可以定义成公式2:
image.png
式中,G为空间聚合组的个数。对于第g组,image.png表示切片的输入/输出特征映射,image.png表示组的维度,image.png表示第g组中第k个采样点的空间聚集权值(又称调制标量),以输入x为条件,并由softmax函数沿维度K归一化,pk表示预定义网格的第k个位置,image.png表示常规卷积采样,∆pgk为第g组网格采样位置pk对应的偏移量。可以在DCNv3算子前后分别对x和y进行1 × 1的逐点卷积,增强模型的表达能力,之后进行可分离卷积[6]。DCNv3是卷积和注意的结合:一方面,它以滑动窗口的方式处理输入数据,这种方式遵循卷积并固有其归纳偏置;另一方面,从输入特征动态预测采样偏移量∆p和空间聚集权值m,显示其动态特性,使其更像一种注意机制。我们比较不同的操作符,每个操作符都有自己的属性,如图2所示:
image.png

Softmax归一化
卷积和DCNv3之间的一个关键区别是,DCNv3使用softmax函数规范化空间聚集权值m,遵循缩放点积自关注的惯例。相反,卷积在权值上不使用softmax,仍然可以很好地工作。注意需要softmax的原因很简单:Q, K, V∈R N×d的缩放点积自注意定义为:
image.png
其中N为同一关注窗口内的点数(可以是全局的[12],也可以是局部的[25]),d为隐藏维数,Q、K、V为从输入计算出的查询矩阵、键矩阵和值矩阵。注意,需要在式(3)中进行Softmax运算;没有softmax,image.png可以先计算,然后在相同的注意窗口对所有的query简化为简单的线性投影,导致性能退化。然而,对于深度卷积和DCNv3等卷积算子,每个点都有自己的专用聚合窗口,并且每个聚合窗口中的值已经不同,并且没有“键”概念,这样的退化问题就不再存在,规范化也变得不必要。事实上,使用softmax在固定的0-1范围内对卷积权值进行归一化可能会严重限制算子的表达能力,并使学习变慢。

为了验证这一假设,我们训练了一个ConvNeXt模型,并在卷积前对深度卷积权值的7 × 7窗口应用softmax。从表1的结果中,我们观察到模型性能和收敛速度的显著下降。这表明,对于卷积或DCN等在每个位置上都有专用聚合窗口的算子,具有无界范围的聚合权值比softmax标准化的有界范围权值具有更好的表达能力。

增强动态特性
基于这一观察结果,我们去掉了DCNv3中的softmax归一化,将范围从0到1的调制标量转换为类似于卷积的无界动态权值。如图2所示,这种改变进一步放大了DCN的动态特性,而其他算子有一定的局限性,如有限定的取值范围(attention/DCNv3)或具有与输入无关的聚合权值的固定聚合窗口(convolution)。从图1b中可以看出,通过这种改变,DCNv4的收敛速度明显快于DCNv3和其他常用算子,包括卷积和注意算子。第4节的结果进一步表明,DCNv4在预训练和迁移学习设置中都能很好地工作。

3.2 加速DCN

理论上,DCN作为一个具有3 × 3窗口的稀疏算子,应该比其他使用更大窗口大小的常见算子(如密集注意或7 × 7深度卷积)更快。然而,我们发现情况并非如此,如图1a所示。在本小节中,我们首先对GPU效率进行了理论分析,显示了内存访问成本的巨大差异,这取决于我们如何读取内存。我们根据观察结果进一步进行优化,通过节省额外的内存指令和实现稀疏算子的速度优势,显著提高了DCN的速度。
理论上GPU效率的分析
我们的研究从DCNv3算子的计算行为的理论检验开始。我们采用roofline模型来评估其性能,重点关注理论FLOPs和内存访问成本(MAC)。对于形状为(H, W, C)的输入和输出张量,DCNv3算子需要36HWCFLOPs,其中3 × 3表示卷积核空间维度,因子4表示每个采样点的双线性插值。

根据[27]所述的框架,DCNv3的MAC计算为2HW C + 27HW G。第一项对应输入/输出特征映射大小,第二项对应DCNv3与G组的偏移量和聚合权值。假设群维数为16,我们将G近似为C/16,得到约3.7HWC MAC。然而,这假设了一个理想的场景,即无限缓存和对每个值读取一次内存,这在并行计算环境中通常是不现实的,因为并发线程执行需要同时访问数据。

为了估计最大内存访问需求,我们考虑一个没有缓存的场景,其中每个输出位置都需要新的内存读取,并且涉及36个双线性插值读取,27个偏移/聚合权重,以及一个写操作,导致MAC为64HW C。这比理想情况大17倍。

该分析揭示了计算与内存访问比率的巨大差距(从0.6到9.7不等),突出了内存访问优化的巨大潜力。值得注意的是,尽管DCNv3使用了依赖输入的动态偏移量,导致不确定的内存访问,但确定的一点是,同一组内的通道共享偏移量值。这导致我们提出了一个特定的优化策略来提高DCNv3的速度。

消除冗余工作量
在以前的DCN内核的CUDA实现中,对于形状(H, W, C) 1,偏移量(H, W, G, K2 x2)和聚合权重(H, W, G, K2)的输入,我们将总共创建H ×W ×C线程以最大化并行性,其中每个线程为一个输出位置处理一个通道。值得注意的是,每个组中的D = C/G通道共享相同的采样偏移量和每个输出位置的聚合权重值。在相同的输出位置使用多个线程来处理这些D通道是浪费的,因为不同的线程会从GPU内存多次读取相同的采样偏移和聚合权重值。这对于内存受限的操作符来说是至关重要的。在每个输出位置上使用一个线程处理同一组中的多个通道可以消除这些冗余的内存读取请求,从而大大减少内存带宽的使用。由于采样位置相同,我们也可以只计算一次DCN中使用的双线性插值系数。具体来说,如果每个线程处理D '个通道,读取偏移量和聚合权值的内存访问成本以及计算双线性插值系数的计算成本都可以减少D '倍。
image.png

消除冗余内存指令:
在实践中,仅仅为多个通道重用线程不会看到速度的提高。原因是当D '增加时,我们创建的线程更少,每个线程的工作负载现在增加D '倍。这基本上降低了CUDA内核的并行度。幸运的是,DCN内核现在在计算上是轻量级的,因为双线性插值只需要对所有D通道执行一次,大部分工作负载是内存指令读取来自不同通道的输入值。当内存布局是通道最后,并且所有D通道值是连续的,我们可以利用矢量加载:例如,从内存中读取四个32位浮点值,而不是用四个指令读取一个32位浮点值四次,我们可以使用单个指令一次加载一个128位打包值,从而减少指令的数量和每个线程的执行时间。我们可以在将最终结果写入GPU内存时应用类似的技术,从而最大限度地减少内存访问时间并增加内存带宽利用率。此外,现代的半精度数据格式(float16/bfloat16)将需要加载的字节数减半,这意味着在相同的内存带宽下,使用半精度格式的内存效率可以提高两倍。然而,在原始的DCNv3实现中,我们没有看到半精度数据的速度提高,可能是由于数据访问和计算的开销太大,而在我们的新实现中,速度提高是显著的。值得注意的是上述优化技术也可以应用于DCNv1/v2和可变形注意力[48],因为它们具有类似的性能瓶颈和问题。

DCN模块的微设计:
DCNv3模块引入多个微设计;随着核心内核的优化,它们对速度的影响变得不可忽略。我们确定了DCNv3设计中可以进一步优化的两点:首先,在去除softmax并将调制标量转换为前文提到的动态聚合权值之后。用于计算偏移量和动态权重的线性层实际上可以组合成一个线性层。这减少了网络碎片并消除了额外的开销,例如内核启动和同步,提高了GPU上的运行时效率;其次,在原始DCNv3模块设计中,使用深度3×3 conv、层归一化(LN)、GELU和线性层组成的复杂子网络来计算偏移量和动态权值。按照Xception[6]中的设计,我们去掉了额外的LN-GELU层,使用原始的可分离卷积结构,进一步减少了运行时间。我们的经验发现,如果延迟是一个更高的优先级,深度卷积也可以被删除,只有一个小的性能牺牲。

4.Experiments

在本节中,我们将从速度和性能的角度验证我们提出的DCNv4模块的有效性。我们首先对运营商级速度进行基准测试,并将DCNv4集成到骨干模型中,进一步测试系统级性能。所有速度测试结果均使用NVIDIA A100 80G SXM GPU获得。由于篇幅限制,我们提供了额外的实验结果和实现细节,包括其他超参数设置和硬件/软件环境

4.1 运算速度基准

设置
我们通过单独测量几个具有代表性的操作员构建最先进的视觉骨干模型的运行时间来进行op级基准测试,包括使用PyTorch实现的全注意力[35]以及先进的FlashAttention-2[8]实现,基于窗口的注意力窗口大小是7×7,7 × 7窗口的深度卷积,分别由cuDNN[5]和PyTorch[28]的ATen库实现。为简单起见,我们只对空间聚合的核心操作进行基准测试,而qkv投影和输出投影层等额外的线性层被排除在外,不包括在运行时测量中。有关更全面的模块级比较,请参阅support。对于输入尺度,我们首先考虑由标准224 × 224输入分辨率生成的特征映射形状,用于图像分类,其下采样比为普通分层ConvNet/transformer主干使用的4、8、16、32倍;我们还添加了像ViT这样的各向同性主干的特征图形状,其下采样比为16,隐藏维数更大。我们进一步考虑了经常用于下游任务(如目标检测)的高分辨率输入。我们将分层特征图和各向同性特征图的输入形状分别设置为800 × 1280和1024 × 1024,因为它们是物体检测中的常用方法[15,20]。这两个输入集的批大小分别为64和1。对于具有头/组概念的操作符,我们将每个头/组的维度设置为32,并在隐藏维度变化时更改头/组的数量。

结果:
我们分别在表2和表3中显示了标准分辨率和高分辨率输入的基准测试结果。我们报告了FP32和FP16数据格式的结果,除了FlashAttention,它没有FP32实现。当输入分辨率很大甚至内存不足时,PyTorch实现的密集全局关注的执行速度会明显变慢。FlashAttention显著提高了注意力的速度,在某些情况下甚至可以比7×7窗口注意力更快,这表明适当优化的重要性。然而,它并没有改变注意力的二次复杂度;当输入分辨率很高时,它仍然落后于局部/稀疏算子,如窗口注意或卷积。虽然DCNv3可以比普通实现的DWConv更快,但它比经过大量优化的cuDNN版本慢。与DCNv3相比,我们的DCNv4可以提供3倍以上的加速,大大节省了运行时间。此外,DCNv4可以成功地利用使用3 × 3稀疏窗口的优势,在不同设置下比其他基线执行得快得多。
image.png

4.2 图像分类

设置
我们评估了DCNv4在ImageNet分类任务上的有效性。我们从一个强大的基线interimage[38]开始,因为它在基于convnet的模型中显示了最先进的性能。我们用DCNv4替换InternImage中原来的DCNv3,并创建FlashInternImage。所有其他实现细节,包括网络架构和超参数,与[38]保持一致。我们还比较了swing -Transformer和ConvNeXt这两个在Transformer和ConvNet模型中具有代表性的基线。我们遵循惯例[25,26,38],在ImageNet1K上训练FlashInternImage-Tiny/Small/Base 300 epoch。FlashInternImage-Large首先在ImageNet-22K上进行90个epoch的训练,然后在ImageNet-1K上进行20个epoch的微调。为了进行公平的比较,其他基线共享相同的设置.

结果
表4显示了模型在不同尺度下的结果。除了模型大小和训练/推理分辨率外,我们还以FP32/FP16数据格式报告每个模型的总体吞吐量(每秒图像数量)。为了公平的比较,我们使用了timm[39]实现的ConvNeXt和Swin Transformer,这实际上比原来的实现要快。配备DCNv4后,FlashInternImage显著提高了InternImage对应的吞吐量50% ~ 80%,并略微提高了模型性能。FlashInternImage现在匹配ConvNeXt的速度与更高的精度。值得注意的是,FlashInternImage-S可以优于ConvNeXt-B (84.4% vs. 83.8%),同时比它更快,显示出更好的速度-精度权衡。此外,FlashInternImage-L甚至可以超过ConvNeXt-XL和InternImage-XL,速度快30% ~ 130%(401比174),显示了我们的DCNv4模块的有效性。
image.png

4.3 具有高分辨率输入的下游任务

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

实例分割

我们在COCO数据集[23]上以1×(12个epoch)和3×(36个epoch)的训练计划,使用两个代表性的实例分割框架Mask R-CNN[15]和Cascade Mask- rcnn[2]训练FlashInternImage。结果如表5所示。我们还报告了FP32/FP16数据格式的批大小为16的FPS。FlashInternImage在所有模型尺度和训练计划上显示出优越的结果,实现了更高的速度-精度权衡。例如,FlashInternImage-T/S超过了所有其他具有相同比例的模型,并且与更大的InternImage-S/B相当,同时速度提高了80% - 90%。

语义分割
我们使用supernet[41]在ADE20K[46]数据集上训练FlashInternImage,迭代160K。我们可以从表6的结果中得出与实例分割类似的结论,在FP32/FP16中,批大小为16的FPS报告。FlashInternImage w/ DCNv4能够实现了显著更快的速度,并进一步提高了InternImage在不同模型尺度上的性能,从而达到了新的水平。
image.png

3D检测
我们进一步测试了DCNv4在自动驾驶场景下基于摄像头的3D物体检测任务,我们训练了BEVFormer v2[43],一个最先进的多摄像头3D物体检测器,在nuScenes数据集上使用FlashInternImageSmall和Base主干模型进行了24次epoch的训练。我们在表7中报告了nuScenes测试集的结果,每个模型的FPS。我们注意到,报头部分,如BEVFormer v2中的BEV编码器和对象解码器,优化不足,占用了50%以上的运行时间(更快的主干甚至更多);因此,为了更清楚地说明,我们也报告了骨干的FPS。我们的研究结果表明,当只考虑主干时,FlashInternImage可以比InternImage主干快两倍甚至三倍,并且性能相当,大大提高了模型效率。

4.4 DCNv4作为通用操作符

其他视觉主干的插入式替换:

我们验证了DCNv4是否仍然可以很好地工作在与其他运营商设计的架构中,如ConvNeXt和ViT。为了达到这个目的,我们将ViT和ConvNeXt中的注意力模块和深度卷积层替换为DCNv4,在不改变任何其他架构和超参数的情况下对ImageNet-1K进行监督学习,类似于FlashInternImage和InternImage。结果如表4所示。我们可以看到,在这些针对特定操作符进行了精心调整的体系结构上,我们的DCNv4可以同样出色地执行。由于DCNv4的速度快,新模型甚至可以实现更好的吞吐量,展示了DCNv4的优越性能。

image.png
image.png

在扩散模型中替换
DCN已被认为是一种有效的感知任务算子。随着生成模型成为生成内容(AIGC)的基本工具,我们也很好奇DCNv4是否可以很好地处理基于扩散的生成模型的生成任务。具体地说,我们选择使用UNet的stable diffusion作为我们的基准,并取代U-Net中的注意力模块和规则的3x3卷积。我们使用U-ViT的代码库,遵循其训练时间表,并基于从Stable diffusion提供的图像自编码器中提取的图像潜函数训练潜扩散模型。我们在表9中显示了结果。我们可以看到,DCNv4在生成建模方面也很好,与U-Net中的常规卷积相比,在FID/Throughput方面使用更少的参数获得了更好的结果。请注意,架构/超参数对于DCNv4可能不是最优的,重新设计模型或为DCNv4搜索新的超参数可能会得到更好的结果。
image.png

4.5 消融实验

我们在第3.2节所述的优化选择中进行了消融研究。结果如表10所示。表中的时间为56 × 56 × 128输入,批大小为64,4组(每组32通道)。我们首先去掉了softmax操作并改进了微设计,这意味着我们将两个线性层合并为一个,并在偏移/聚合权重计算中去掉了昂贵的层范数和GELU激活,从而简化了整个模块并提高了速度。然后我们开始修改内核实现。首先,我们改变并行执行模式,让每个线程处理8个通道而不是1个通道,这样可以节省在加载采样偏移量和GPU内存聚合权重值时不必要的内存访问。正如我们所期望的那样,随着并行度的降低,单独应用此更改不会提高速度,并且每个线程的工作负载现在增加了8倍。延迟反而增加了。通过重用双线性插值系数(第4行)来消除冗余计算可以节省一些时间,但并不重要。通过向量化load/store去除冗余内存指令可以大大减少每个线程的工作负载,并大大加快GPU内核速度(第5行)。使用半精度数据类型,使内核读/写所需的字节数减半,进一步提高了数据吞吐量,如第6行所示。最后,我们得到了最终的DCNv4设计,其效率是原始实现的三倍。

5. Conclusion

提出了一种高效的动态稀疏算子——变形卷积算子(DCNv4)。通过重新考虑可变形卷积的动态特性和简化内存访问,DCNv4比其前身DCNv3更快、更有效。配备dcnv4的FlashInternImage骨干不仅提高了速度,而且提高了各种视觉任务的性能。通过将DCNv4集成到最先进的架构(如ConvNeXt和ViT)中,提高吞吐量和准确性,我们进一步展示了DCNv4作为通用运营商的多功能性和有效性;它在潜在扩散模型中也能很好地发挥作用,显示了其增强生成模型的潜力。