清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA

692次阅读
没有评论

点击下方卡片,关注AI视界引擎」公众号

清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA

作者介绍了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的潜力。然而,最近的工作如IntermImage和ConvNeXt表明,基于ConvNet的视觉模型在各种下游任务上保持了健壮的性能、效率、简单性和适合的归纳偏差。值得注意的是,在图像生成的领域,卷积仍然是首选方法。这种情况突显了基于卷积方法的价值。

基于卷积的优势,Deformable Convolution v3 (DCNv3) – InternImage高级卷积模型的核心操作符 – 创新地将稀疏注意力机制与卷积相结合:它以滑动窗口方式处理每个输出位置,窗口大小较小(个点),作为局部、稀疏的运算符如卷积,同时动态地采样具有自适应范围的点,并使用输入相关的注意力权重聚合空间特征。由于其较小的窗口大小和卷积的归纳偏差,DCNv3预计可以实现更快的收敛速度和较低的推理延迟,尤其是在与密集全局或基于局部窗口的注意力方法相比。

尽管具有这些优势,DCN并没有成为视觉 Backbone 模型的首选解决方案。这一观察使作者调查了DCN操作符的遗留限制。作者首先注意到的是运行速度。DCN的缓慢速度是一个长期存在的问题,因为它在采样非附近位置时引入了额外的开销,使其不适合现代卷积算法。作者的比较分析,如图0(a)所示,揭示了DCNv3可以比适当优化的密集全局注意力更慢,突显了进一步优化的需要。此外,作者还发现DCNv3在 Backbone 训练阶段的收敛速度甚至比全局注意力慢,如图0(b)所示,这与直觉相反,因为DCNv3配备了卷积的归纳偏差。

为了克服这些挑战,作者提出了Deformable Convolution v4 (DCNv4),这是一个创新性的优化稀疏DCN操作符以提高实际效率的进步。DCNv4具有更快实现的实现和改进的操作符设计,以提高其性能,作者将在以下内容中详细阐述:

  • 首先,作者对现有实现进行了指令级 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-pLKNet说明,利用大核深度可分卷积的纯卷积网络可以在效率和有效性方面达到竞争性能。变形卷积(DCN)系列通过向卷积核中添加可学习偏移量,显著提高了卷积的适应性。

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

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

尽管DCN操作符在FLOPs方面没有劣势,但与DW-Conv相比,它们的延迟要显著长得多,主要原因是大量的内存访问成本。在本工作中对与DCN操作符相关的内存访问成本进行彻底分析和优化,显著加快了DCN的运行速度。

3 Method

Rethinking the Dynamic Property in Deformable Convolution

重新审视DCNv3:给定一个输入,其中高度,宽度和通道,DCNv3操作具有个点的定义如下:

其中表示空间聚合组的数量。

对于第组,表示具有的切片输入/输出特征图,其中表示组维度;表示第个采样点在第组中的空间聚合权重(也称为调制标量),基于输入并通过维softmax函数归一化;表示常规卷积中预定义的网格采样的第个位置,对应于第组中的网格采样位置的偏移量。可以在DCNv3运算符之前和之后应用的点积卷积,以增强模型的表达能力,遵循可分卷积。

DCNv3是卷积和注意力的结合:一方面,它以滑动窗口方式处理输入数据,这遵循卷积并具有其内在偏差;另一方面,采样偏移量和空间聚合权重是从输入特征中动态预测的,显示其动态性质并使其更像一个注意力机制。作者比较了不同的运算符,每个运算符都有自己的特性,如图2所示。

清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA

softmax归一化:卷积和DCNv3之间的一个关键区别是,DCNv3使用softmax函数归一化,即空间聚合权重,遵循缩放点积自注意力的传统。相反,卷积不对其权重使用softmax,并且仍然工作良好。

为什么注意力需要softmax的原因很简单:具有的缩放点积自注意力可以定义如下:

在公式(3)中,softmax操作是必需的,因为没有softmax,可以首先计算出来,然后对于同一注意力窗口中的所有 Query ,会退化为线性投影,导致性能退化。然而,对于卷积运算符,如深度卷积和DCNv3,每个点都有自己的专用聚合窗口,每个聚合窗口中的值已经不同,且没有“Key”的概念,这种退化问题不再存在,归一化变得不必要的。

事实上,使用softmax在固定0-1范围内归一化卷积权重可能会对运算符的表达能力产生重大限制,并使学习速度变慢。

为了证实这个假设,作者训练一个ConvNeXt模型,并在卷积前对窗口的深度卷积权重应用softmax。从表1的结果中,作者观察到模型性能和收敛速度显著下降。这表明对于每个位置都有专用聚合窗口的运算符(如卷积或DCN),无界范围聚合权重比softmax归一化、有界范围权重具有更好的表达能力。

清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA

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

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

清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA

Speeding up DCN

从理论上讲,DCN作为一个具有窗口的稀疏运算符,应该比使用较大窗口大小的其他常见运算符(如密集注意或卷积)更快。然而,作者发现这并不是实际情况,如图1(a)所示。在本小节中,首先对GPU效率进行理论分析,显示内存访问成本根据作者如何读取内存而有很大的变化。作者进一步根据观察结果进行优化,显著提高了DCN的速度,通过节省额外的内存指令,将稀疏运算符的速度优势变为现实。

GPU效率的理论分析

研究始于对DCNv3运算符的计算行为的理论检查。作者使用屋顶模型来评估其性能,重点关注理论FLOPs和内存访问成本(MAC)。对于形状为的输入和输出张量,DCNv3运算符需要36HWC FLOPs,其中3×3表示卷积核的 spatial维度,4因子考虑了每个采样点的双线性插值。

遵循Shufflenet v2中概述的框架,DCNv3的MAC计算如下:

第一项对应输入/输出特征图的大小,第二项对应DCNv3的偏移量和聚合权重(每个组)。假定组维度为16,将G近似为,结果为大约的MAC。然而,这假设了一个理想的情况,即无限缓存且每个值只进行一次内存读取,这在并行计算环境中通常是不可行的,因为在并发线程执行时需要同时访问数据。

为了估计最大内存访问需求,作者考虑一个没有缓存的场景,其中每个输出位置都需要进行新的内存读取,涉及36次双线性插值读取,27次偏移量和聚合权重读取,以及一次写操作,结果导致MAC为64HWC。这是理想情况下的17倍。

这项分析揭示了计算与内存访问比例(范围为0.6到9.7)之间的巨大差距,突显了内存访问优化的显著潜力。值得注意的是,尽管DCNv3使用输入相关的动态偏移量导致非确定性内存访问,但同一组内的通道共享偏移量值。这导致作者提出了一个特定的优化策略来提高DCNv3的速度。

消除冗余工作负载:在DCN核函数的CUDA实现中,对于形状为的输入,偏移量和聚合权重,将总共创建个线程以最大化并行性,其中每个线程处理一个通道对于一个输出位置。

值得注意的是,每个组内的个通道共享每个输出位置的相同的采样偏移量和聚合权重值。使用多个线程在同一输出位置处理这些个通道是浪费的,因为不同的线程将从GPU内存中多次读取相同的采样偏移量和聚合权重值,这对于内存受限的运算符至关重要。处理每个组内的多个通道(每个输出位置)在一个线程中,可以消除这些冗余的内存读取请求,大大减少内存带宽使用。由于采样位置相同,作者也可以只计算DCN中使用的双线性插值系数一次。具体来说,如果每个线程处理个通道,那么读取偏移量和聚合权重的内存访问成本以及计算双线性插值系数的计算成本都可以减少倍。

消除冗余内存指令:在实践中,仅使用重用的线程进行多个通道的重复将不会看到速度提升。原因是当增加时,作者创建的线程数量更少,每个线程的工作负载现在增加了倍,这实际上减少了CUDA核的并行度。

幸运的是,DCN核现在在计算上非常轻便,因为双线性插值只需要对所有个通道执行一次,而大部分工作负载是读取不同通道的输入值。

当内存布局为通道-末(channel-last)时,并且所有个通道的值都是连续的,作者可以利用向量化加载:例如,要从一个32位浮点值中读取四个值,而不是使用四个指令分别读取四个32位浮点值,作者可以使用一个指令一次加载一个128位打包值,从而减少指令数量和每个线程的执行时间。作者可以在将最终结果写入GPU内存时应用类似的技巧,最小化内存访问时间并提高内存带宽利用率。

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

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

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

4 Experiments

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

Speed Benchmark for Operators

设置:作者进行运算符 Level 的基准测试,只测量构建最先进的视觉 Backbone 模型所使用的一些代表性运算符的运行时间,包括使用PyTorch实现的完全注意以及高级FlashAttention-2实现,窗口注意力以及基于窗口大小为7×7的卷积,由cuDNN实现,以及来自PyTorch的ATen库实现。为了简单起见,只对空间聚合的核心操作进行基准测试,并排除了其他线性层,如qkv投影和输出投影层,并将其排除在运行时间测量之外。请参阅附录进行更全面的模块级比较。

对于输入尺度,首先考虑由标准224×224输入分辨率生成的特征图形状,用于图像分类,降采样比为4,8,16,32倍,如常见的卷积神经网络/Transformer Backbone 结构所使用;作者还考虑了像ViT这样的各向同构 Backbone 结构的降采样比为16和更大的隐藏维度的特征图形状。

作者还考虑了在下游任务如目标检测中经常使用的高分辨率输入。作者将输入形状设置为800×1280和1024×1024,分别用于分级的特征图和各向同构的特征图,这是目标检测的常见做法。批量大小分别为64和1对于这两个输入集。对于具有头/组概念的运算符,作者将每个头的维度设置为32,并在隐藏维度变化时更改头/组的数量。

结果:在Tab. 2和Tab. 3中分别报告了在标准分辨率和高清输入下的基准结果。作者报告了使用FP32和FP16数据格式的结果,除了FlashAttention,它没有FP32实现。使用PyTorch实现的密集全局注意力在输入分辨率较大且甚至超出内存时,速度明显较慢。FlashAttention显著提高了注意力的速度,在某些情况下甚至比7×7窗口注意力更快,表明适当的优化非常重要。

清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA

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

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

清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA

Image Classification

设置:在ImageNet分类任务上评估DCNv4的有效性。从InternImage开始,因为它在基于卷积模型的最新性能中表现最出色。将原始的DCNv3替换为DCNv4,并创建了FlashInternImage。

除网络架构和超参数外,其他实现细节与Internimage相同。还比较了Transformer和卷积模型的两个代表性 Baseline ,即Swin-Transformer和ConvNeXt。遵循常见做法,在ImageNet-1K上训练FlashInternImage-Tiny/Small/Base 300个epoch,FlashInternImage-Large首先在ImageNet-22K上训练90个epoch,然后在ImageNet-1K上进行20个epoch的微调。其他 Baseline 使用相同的设置进行公平比较。

结果:Tab. 4显示了不同规模模型的结果。除了模型大小和训练/推理分辨率外,还报告了每个模型在FP32/FP16数据格式下的整体吞吐量(每秒处理的图像数量)。

为了进行公平比较,使用timm实现的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 vs. 174),显示出DCNv4模块的有效性。

清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA

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。

清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA

结果如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在不同模型规模上的性能,从而实现了新的最先进状态。

清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA

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

在nuScenes测试集上报告了每个模型的结果(FPS),并注意到BEVFormer v2中的BEV编码器和物体解码器部分是“过度优化的”,它们占据了运行时间的50%以上(更快的主干网络甚至更多);因此,作者还报告了 Backbone 网络的FPS,以更清晰地说明这一点。结果表明,当仅考虑 Backbone 网络时,FlashInternImage可以比InternImage Backbone 网络快两倍甚至三倍,同时性能相当,极大地提高了模型效率。

为了实现这一目标,在ViT和ConvNeXt中替换了注意力模块和深度卷积层,并使用FlashInternImage和InternImage的相同架构和超参数在ImageNet-1K上进行监督学习,类似于FlashInternImage和InternImage。结果如Tab. 4所示。可以看到,在这些经过特定运算符精心调优的架构上,DCNv4可以实现同样的性能。得益于DCNv4的高速性能,新的模型甚至可以实现更好的吞吐量,展示了DCNv4的优越性能。

扩散模型中的drop-in替换:DCN已被认为是感知任务的有效运算符。随着生成模型成为AI生成的内容(AIGC)的基本工具,作者也很好奇DCNv4是否能在基于扩散的生成任务上表现良好。

具体来说,选择Stable Diffusion中使用的U-Net作为 Baseline ,替换掉U-Net中的注意力模块和常规的卷积。使用U-ViT的代码库,遵循其训练schedule,并使用Stable Diffusion提供的图像自动编码器训练一个基于图像潜在的扩散模型。作者将在Tab. 9中展示结果。

清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA

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

Ablation Study

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

清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA

表格中的时间为使用输入,批处理大小为64,4组(每组32个通道)时获得的。作者首先删除了softmax操作并改进了微观设计,这意味着作者将两个线性层合并为一个,并删除了offset/aggregation权重计算中的昂贵层规范化(layer normalization)和GELU激活,简化了整体模块并增加了速度。然后,作者开始修改DCNv3的设计。

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所示。

清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA

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

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

清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA

在应用更先进的任务头时,DCNv4在准确性上仍然保持显著优势,同时提供具有竞争力的推理速度。

除上述 Backbone 网络之外的其他 Backbone 网络的下游结果:如Tab. 4所示,在下游任务上评估了”ConvNext+DCNv4″和”ViT+DCNv4″的表现,特别是使用UperNet头进行语义分割任务。

清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA

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

清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA

图像生成的可视化:将在图1中展示基于DCNv4的潜在扩散模型的定性结果,以更好地说明。DCNv4也可以在生成任务中表现良好。

模块级速度基准:在Tab. 2和5中展示了模块级速度基准结果,其中还包括每个操作中的额外线性投影层。作者还包括了一个具有窗口的常规卷积,因为它混合了通道信息。

对于DCNv4,作者展示了两种实现方式:第一种实现是在模块内部移除输入/输出投影层(称为轻量级实现)。作者在“ConvNeXt + DCNv4”实验中使用这种实现方式,因为它与原始的深度卷积具有相似的属性(仅执行空间聚合)和计算/参数数量。第二种实现包括输入/输出线性投影,并在本文中描述的其他模型中使用。

清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA

参考

[1]. Efficient Deformable ConvNets: Rethinking Dynamic and Sparse Operator for Vision Applications


清华/南大/港中文/OpenGVLab/商汤等联合提出DCNv4 | 全部任务皆SOTA

点击上方卡片,关注「AI视界引擎」公众号

 

Read More 

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 
评论(没有评论)
Generated by Feedzy