论文题目:Efficient Deformable ConvNets: Rethinking Dynamic and Sparse Operator for Vision Applications
- 论文地址:https://arxiv.org/abs/2401.06197
- 项目地址:https://github.com/OpenGVLab/DCNv4
摘要
本文提出可变形卷积 v4(DCNv4),这是一种专为多种视觉应用设计的高效算子,它通过去除空间聚合中的 softmax 归一化增强动态性和表达力,并优化内存访问减少冗余操作,相比 DCNv3 收敛更快且前向速度提高三倍多。在图像分类、分割及生成等任务中表现出色,如在潜扩散模型的 U - Net 中替代卷积可提升性能;在 InternImage 模型中替换 DCNv3 形成 FlashInternImage,速度提升 50% - 80% 且性能增强,有望成为未来视觉模型的基础组件。
Part.01 研究贡献
- 优化 DCN 算子设计,去除 DCNv3 空间聚合中的 softmax 归一化,提升动态性和表达能力,使 DCNv4 收敛速度大幅快于 DCNv3 及其他常见算子。
- 深入分析并优化 DCN 内存访问成本,通过多种策略减少冗余工作量和内存指令,显著提升运行速度,使 DCNv4 成为速度领先的核心视觉算子。
- 验证 DCNv4 在多种视觉任务和架构中的有效性与通用性,在不同模型中替代相关模块可提高速度和性能,在生成模型中也展现潜力,为视觉领域研究提供有力工具。
Part.02 模型结构
DCNv4 作为可变形卷积网络的创新升级版本,在结构设计上有诸多独特之处。
DCNv4继承了可变形卷积的核心思想,在处理输入特征图时,依然以一种类似滑动窗口的方式进行操作。对于输入的特征图(假设其维度为 H×W×C),DCNv4 会在每个输出位置以一个相对较小的窗口(如 3×3)来局部处理数据,这与传统卷积的局部性操作有相似之处,从而保留了一定的卷积归纳偏置,有助于模型在处理图像数据时更好地捕捉局部特征信息。
在空间聚合机制方面,DCNv4 与 DCNv3 不同,它摒弃了 softmax 归一化操作。在 DCNv3 中,对于空间聚合权重 mgk (其中 g 表示空间聚合组,k 表示采样点)会通过 softmax 函数进行归一化处理,使得权重范围被限制在 0 到 1 之间。而 DCNv4 认识到这种归一化对于具有专用聚合窗口的卷积操作并非必要,去除 softmax 后,聚合权重变为无界的动态权重,类似于传统卷积的权重特性,极大地增强了模型的动态表达能力,能够更灵活地适应不同输入数据的特征分布,从而在训练过程中能够更快地收敛到更优的解。
在内存访问优化上,DCNv4 深入分析了 DCNv3 的内存访问模式。在传统的 DCNv3 实现中,对于给定的输入和相关参数(如偏移量 (H,W,G,K2 ×2) 和聚合权重 (H,W,G,K2)),通常会创建大量线程(如 H×W×C 个线程),每个线程处理一个输出位置的一个通道。然而,DCNv4 发现同一组内的通道(假设每组有 D=C/G 个通道)在每个输出位置共享相同的采样偏移和聚合权重值。基于此,DCNv4 采用了更高效的线程利用方式,让一个线程处理同一组内的多个通道,这样就大大减少了从 GPU 内存中重复读取相同采样偏移和聚合权重值的次数,显著降低了内存带宽的消耗。同时,由于同一组内通道的采样位置相同,DCNv4 只需计算一次双线性插值系数,从而进一步减少了计算量。
此外,DCNv4 在模块的微观设计上也进行了优化。在计算偏移和动态权重的部分,将原本分开的两个线性层合并为一个,减少了网络的碎片化程度,避免了因多次内核启动和同步操作带来的额外开销,有效提高了在 GPU 上的运行效率。在原始 DCNv3 模块中,计算偏移和动态权重时采用了较为复杂的子网络结构,包含深度 3×3 卷积、层归一化(LN)、GELU 等操作。DCNv4 参考 Xception 的设计理念,去除了其中的 LN - GELU 层,并保留了原始的可分离卷积结构,进一步简化了网络结构,降低了运行时间。在一些对延迟要求较高的应用场景中,经过实验发现甚至可以去除深度卷积层,在牺牲少量性能的情况下,能够获得更快的运行速度,为模型在不同性能需求场景下的应用提供了更多的灵活性。
Part.03 数据集
本研究选用了多个具有代表性的数据集来全面评估 DCNv4 算子在不同视觉任务中的性能表现。
-
ImageNet 数据集:作为计算机视觉领域的经典图像分类数据集,它包含了超过 1000 个类别、数百万张的高分辨率自然图像,涵盖了动物、植物、日常用品、交通工具等丰富多样的类别,这些图像在拍摄角度、光照条件、背景环境等方面存在显著差异,为模型在通用图像识别场景下的性能评估提供了基准,有利于研究 DCNv4 在大规模图像分类任务中的能力。
-
COCO 数据集:其拥有超过 80 个类别、约 33 万张图像以及 200 万个实例的精细标注信息,这些标注不仅明确了图像中每个目标的类别,还精确勾勒出目标的轮廓边界。通过该数据集,能够有效测试 DCNv4 对不同物体的分割精度与效果,充分检验模型在复杂场景下识别和分割单个目标的能力。
-
ADE20K 数据集:它涵盖了 150 个语义类别,包含 20000 多张图像,以其多样化的图像场景和精细的语义标注著称,这些图像场景包括城市街道、室内环境、自然景观等各种复杂环境,标注信息详细到每个像素的语义类别。利用此数据集可深入探究 DCNv4 在复杂环境下对图像语义的理解和分割能力,推动模型在语义分割领域的性能优化。
-
nuScenes 数据集:专门针对自动驾驶场景设计,它包含了 1000 个场景、每个场景约 20 秒的视频数据,总共约 40 万张图像,提供了多视角、多传感器的丰富数据,为 3D 目标检测任务构建了真实的测试环境。数据集中的目标类别涵盖了常见的汽车、行人、自行车、交通标志和信号灯等,借助该数据集,能够全面考察 DCNv4 在复杂现实场景中对 3D 目标的检测性能,确保模型在实际应用中的可靠性。
Part.04 实验结果
算子速度基准测试:在不同分辨率输入下对比多种算子,DCNv4 表现突出。从表 1 可以看出,在标准分辨率输入(如 56 x 56 x 128、28 x 28 x 256 等)时,DCNv4 相比 DCNv3 速度提升超 3 倍,超越注意力机制、深度可分离卷积等常见算子,在 FP32 和 FP16 数据格式下均保持优势。例如,在 56 x 56 x 128 输入下,DCNv3 的运行时间为 1.45/1.52 ms(FP32/FP16),而 DCNv4 仅需 0.606/0.404 ms。同样,在高分辨率输入(如 200 x 320 x 128、100 x 160 x 256 等)时,如表 2 所示,DCNv4 依然优势明显。如 200 x 320 x 128 输入下,DCNv4 的运行时间为 0.210/0.136 ms(FP32/FP16),远低于其他算子。


图像分类任务:在 ImageNet - 1K 上以 InternImage 为基线实验,FlashInternImage(含 DCNv4)显著提升吞吐量 50% - 80% 且模型性能略有提高。从表 3 可知,FlashInternImage - S 准确率达 84.4% 超过 ConvNeXt - B 的 83.8% 且速度更快,FlashInternImage - L 比 ConvNeXt - XL 和 InternImage - XL 更快且准确率达 88.1%,展示 DCNv4 对分类任务的积极影响。

下游任务:在实例分割(COCO 数据集)、语义分割(ADE20K 数据集)和 3D 目标检测(nuScenes 数据集)等下游任务中,FlashInternImage 均取得优异结果。在实例分割的 Mask R - CNN 和 Cascade Mask - RCNN 框架下,不同模型规模和训练计划中 FlashInternImage 速度 - 准确率权衡更优,具体数据见表 4;语义分割中 UperNet 训练下 FlashInternImage 速度更快且性能提升,如表 5 所示;3D 目标检测中 BEVFormer v2 训练时 FlashInternImage 骨干网络速度比 InternImage 快 2 - 3 倍且性能相当,详见表 6。



Part.05 总结与研究展望
论文提出的 DCNv4 通过对可变形卷积的深度优化,有效解决了 DCN 系列算子长期存在的速度瓶颈与性能局限。在理论层面,重新审视并改进空间聚合机制及内存访问策略,从根本上提升了算子效率;实验方面,在多个核心视觉任务及不同网络架构中表现卓越,无论是图像分类、实例与语义分割等传统任务,还是新兴的图像生成领域,均展现出远超 DCNv3 及其他常见算子的性能优势,有力推动了视觉模型的发展进程,为后续研究提供了极具价值的高效算子范例与创新思路。
但DCNv4也仍存在进一步探索空间:在算子设计上,可继续挖掘其与新型网络架构或模块的融合潜力,探索更适配复杂视觉场景的动态聚合规则与稀疏采样策略,提升其在极端条件下的适应性与精度。性能优化方面,针对不同硬件平台进行深度适配,如开发更高效的 GPU 并行算法、探索在边缘计算设备上的轻量化部署方法,以拓展其应用范围。此外,在生成模型应用中,深入研究如何结合特定生成任务需求定制 DCNv4 结构与超参数,充分释放其在 AIGC 领域的潜力,有望实现视觉模型性能与效率的更大提升。