当Swin Transformer遇上DCN,清华可变形注意力Transformer模型优于多数ViT

简介: 当Swin Transformer遇上DCN,清华可变形注意力Transformer模型优于多数ViT

Transformer 近来在各种视觉任务上表现出卓越的性能,感受野赋予 Transformer 比 CNN 更强的表征能力。然而,简单地扩大感受野会引起一些问题。一方面,使用密集注意力(例如 ViT)会导致过多的内存和计算成本,并且特征可能会受到超出兴趣区域的无关部分的影响;另一方面,PVT 或 Swin Transformer 中采用的稀疏注意力与数据无关,可能会限制对远程(long range)关系建模的能力。

为了缓解这些问题,清华大学、AWS AI 和北京智源人工智能研究院的研究者提出了一种新型可变形自注意力模块,其中以数据相关的方式选择自注意力中键值对的位置。这种灵活的方案使自注意力模块能够专注于相关区域并捕获更多信息特征。

在此基础上,该研究提出了可变形注意力 Transformer(Deformable Attention Transformer,DAT),一种具有可变形注意力的通用主干网络模型,适用于图像分类和密集预测任务。该研究通过大量基准测试实验证明了该模型的性能提升。


论文地址:https://arxiv.org/abs/2201.00520v1

可变形注意力 Transformer

现有的分层视觉 Transformer,特别是 PVT 和 Swin Transformer 试图解决过多注意力的挑战。前者的下采样技术会导致严重的信息损失,而后者的 Swin 注意力导致感受野的增长要慢得多,这限制了对大型物体进行建模的潜力。因此,需要依赖于数据的稀疏注意力来灵活地对相关特征进行建模,从而导致首先在 DCN [9] 中提出可变形机制。

然而,在 Transformer 模型中实现 DCN 是一个不简单的问题。在 DCN 中,特征图上的每个元素单独学习其偏移量,其中 H ×W ×C 特征图上的 3 × 3 可变形卷积具有 9 HWC 的空间复杂度。如果在注意力模块中直接应用相同的机制,空间复杂度将急剧上升到 N_qN_kC,其中 N_q、N_k 是查询和键的数量,通常与特征图大小 HW 具有相同的比例,带来近似于双二次的复杂度。

尽管 Deformable DETR [54] 已经设法通过在每个尺度上设置较少数量的 N_k = 4 的键来减少这种开销,并且可以很好地作为检测头,但由于不可接受的信息丢失(参见附录中的详细比较),在骨干网络中关注如此少的键效果不佳。与此同时,[3,52] 中的观察表明,不同的查询在视觉注意力模型中具有相似的注意力图。因此,该研究选择了一个更简单的解决方案,为每个查询共享移位键和值,以实现有效的权衡。

模型架构

该研究在 Transformer(等式 (4))中的可变形注意力替换了 vanilla MHSA,并将其与 MLP(等式 (5))相结合,以构建一个可变形的视觉 transformer 块。在网络架构方面, DAT 与 [7, 26, 31, 36] 共享类似的金字塔结构,广泛适用于需要多尺度特征图的各种视觉任务。如下图 3 所示,形状为 H × W × 3 的输入图像首先被步长为 4 的 4 × 4 非重叠卷积嵌入,然后一个归一化层获得补丁嵌入。


为了构建分层特征金字塔,主干包括 4 个阶段,步幅逐渐增加。在两个连续的阶段之间,有一个步长为 2 的非重叠 2×2 卷积,对特征图进行下采样,将空间大小减半并将特征维度加倍。

在分类任务中,该研究首先对最后阶段输出的特征图进行归一化,然后采用具有池化特征的线性分类器来预测对数;在对象检测、实例分割和语义分割任务中,DAT 在集成视觉模型中扮演主干的角色,以提取多尺度特征。该研究为每个阶段的特征添加一个归一化层,然后将它们输入到以下模块中,例如对象检测中的 FPN [23] 或语义分割中的解码器。

实验

该研究在 3 个数据集上进行了实验,以验证提出的 DAT 的有效性。该研究展示了在 ImageNet-1K [10] 分类、COCO 目标检测和 ADE20K 语义分割任务上的结果。此外,该研究提供了消融研究和可视化结果,以进一步展示该方法的有效性。

ImageNet-1K 分类

ImageNet-1K [10] 数据集有 128 万张用于训练的图像和 5 万张用于验证的图像。研究者在训练分割上训练 DAT 的三个变体,并报告验证分割上的 Top-1 准确度,并与其他 Vision Transformer 模型进行比较。

该研究在下表 2 中给出了有 300 个训练 epoch 的结果。与其他 SOTA 视觉 Transformer 模型相比, DAT 在具有相似计算复杂性的情况下在 Top-1 精度上实现了显著提高。DAT 在所有三个尺度上都优于 Swin Transformer [26]、PVT [36]、DPT [7] 和 DeiT [33]。没有在 Transformer 块 [13, 14, 35] 中插入卷积,或在补丁嵌入 [6, 11, 45] 中使用重叠卷积,DAT 比 Swin Transformer [26] 实现了 +0.7、+0.7 和 +0.5 的增益。在 384 × 384 分辨率下进行微调时,该模型继续比 Swin Transformer 性能好 0.3。


COCO 目标检测

COCO 目标检测和实例分割数据集有 118K 的训练图像和 5K 的验证图像。该研究使用 DAT 作为 RetinaNet [24]、Mask R-CNN [17] 和 Cascade Mask R-CNN [2] 框架中的主干,以评估该方法的有效性。该研究在 ImageNet-1K 数据集上对该模型进行 300 个 epoch 的预训练,并遵循 Swin Transformer [26] 中类似的训练策略来公平地比较该方法。该研究在 1x 和 3x 训练计划中报告在 RetinaNet 模型上的 DAT。如下表 3 所示,在微型和小型模型中,DAT 的性能优于 Swin Transformer 1.1 和 1.2 mAP。


当在两阶段检测器(例如 Mask R-CNN、Cascade Mask R-CNN)中实现时,DAT 模型在不同尺寸的 Swin Transformer 模型上实现了一致的改进,如下表 4 所示。


下表 5 给出了在验证集上各种方法的 mIoU 分数。


消融实验


为了验证 DAT 模型中关键组件设计的有效性, 该研究进行了消融实验,报告了基于 DAT-T 的 ImageNet-1K 分类结果。对于几何信息开发,该研究首先评估了所提可变形偏移和可变形相对位置嵌入的有效性,如下表 6 所示。


对于不同阶段的可变形注意力,该研究用不同阶段的可变形注意力替换了 Swin Transfomer [26] 的移位窗口注意力。如下表 7 所示,仅替换最后阶段的注意力提高了 0.1,替换最后两个阶段导致性能增益为 0.7(达到 82.0 的整体准确度)。然而,在早期阶段用更多可变形注意力替换会略微降低准确性。


可视化


该研究在 DAT 中可视化学习变形位置的示例,以验证该方法的有效性。如下图 4 所示,采样点描绘在对象检测框和实例分割掩码的顶部,从中可以看到这些点已转移到目标对象。

相关文章
|
机器学习/深度学习 缓存 监控
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
2044 0
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
|
IDE Linux 开发工具
如何在Linux运行RStudio Server并实现Web浏览器远程访问
如何在Linux运行RStudio Server并实现Web浏览器远程访问
741 0
|
人工智能 自然语言处理 Cloud Native
Bolt.diy 评测方案:从部署到创意实践的全方位探索
Bolt.diy 是阿里云推出的低代码开发平台,基于函数计算(FC)与百炼大模型服务构建。它通过自然语言交互、全栈开发支持及快速云端部署,让开发者和非技术人员能轻松实现创意落地。本文详细解析了 Bolt.diy 的部署流程、功能实践与应用场景,并结合测试案例探讨其价值与优化方向。无论是在教育、企业内部工具定制还是个人兴趣开发中,Bolt.diy 均展现出高效便捷的优势,但复杂业务需求仍需传统工具补充。未来,随着大模型能力升级,Bolt.diy 将进一步推动 AI 辅助开发的发展。
|
测试技术 Docker 容器
使用Docker构建多环境应用:开发、测试、生产环境
Docker已经成为了现代应用程序开发和部署的核心工具之一。通过使用Docker,开发团队可以轻松地在不同的环境中构建、测试和部署应用程序,从而提高开发速度和应用程序的可移植性。本文将介绍如何使用Docker构建多环境应用,包括开发、测试和生产环境,并提供丰富的示例代码,以帮助大家轻松应对不同环境的挑战。
|
传感器 网络协议 物联网
嵌入式开发中的常用实时操作系统(RTOS)介绍
选择合适的RTOS是嵌入式开发中的关键步骤,不同的RTOS具有各自的优势和适用场景。开发者需要根据项目需求综合考虑硬件平台、实时性要求、开发资源和支持等因素,选择最合适的RTOS系统。例如,如果需要开源和灵活的解决方案,可以选择Zephyr或RT-Thread;如果需要高性能和商业支持,可以选择VxWorks或ThreadX。希望本文能帮助您更好地了解各类RTOS,并为您的嵌入式开发项目提供参考。
1654 1
|
PyTorch 算法框架/工具 芯片
新手入门:DGL在昇腾上的安装问题
本文介绍了在aarch64架构和Python 3.10环境下安装DGL(Deep Graph Library)的过程。首先通过`uname -a`确认硬件架构,接着使用`python --version`检查Python版本。为确保兼容性,从指定链接下载适合的whl包或通过pip安装dgl。过程中遇到了torchdata版本不兼容的问题,通过降级torchdata至0.7.1版本解决。此外,针对NPU芯片适配,重新安装了与CANN 8.0.RC2兼容的torch和torch_npu组件。最终成功导入dgl包并准备进行模型训练验证。
1153 14
|
前端开发 安全 Ubuntu
Elasticsearch安装和配置
Elasticsearch安装和配置
407 0
|
机器学习/深度学习 并行计算 PyTorch
Swin Transformer实战:使用 Swin Transformer实现图像分类
目标检测刷到58.7 AP! 实例分割刷到51.1 Mask AP! 语义分割在ADE20K上刷到53.5 mIoU! 今年,微软亚洲研究院的Swin Transformer又开启了吊打CNN的模式,在速度和精度上都有很大的提高。这篇文章带你实现Swin Transformer图像分类。
10684 1
Swin Transformer实战:使用 Swin Transformer实现图像分类
|
人工智能 并行计算 PyTorch
AI计算机视觉笔记十八:Swin Transformer目标检测环境搭建
本文详细记录了Swin Transformer在AutoDL平台上的环境搭建与训练过程。作者从租用GPU实例开始,逐步介绍了虚拟环境的创建、PyTorch安装、mmcv及mmdetection的配置,并解决了安装过程中遇到的各种问题,如cython版本冲突等。最后,通过修改代码实现目标检测结果的保存。如需了解更多细节或获取完整代码,请联系作者。原文链接:[原文链接](请在此处插入原文链接)。
1468 5
|
存储 监控 Java
近亿级用户体量高并发实战:大促前压测干崩近百个服务引起的深度反思!
几年前,数百个服务,将堆内存从28GB升配到36GB,引发系统全面OOM的事件。
717 12

热门文章

最新文章