在深度学习领域,目标检测作为计算机视觉的核心任务之一,其性能的提升始终吸引着研究者们的目光。近期,我们创新性地将Swin Transformer这一前沿的Transformer架构引入到YoloV10目标检测模型中,通过替换其原有的主干网络,实现了检测性能的显著提升,为YoloV10系列模型注入了新的活力。
改进亮点概述:
https://blog.csdn.net/m0_47867638/article/details/142305357?spm=1001.2014.3001.5501
改进优点总结:
本次将Swin Transformer融入YoloV10的改进尝试,不仅是对传统目标检测模型的一次大胆革新,更是对深度学习技术在实际应用中潜力的一次深刻挖掘。我们相信,随着技术的不断进步和完善,这一改进方案将在更多领域展现出其独特的价值和魅力,引领目标检测技术迈向新的高度。欢迎广大研究者和开发者加入我们,共同探索深度学习技术的无限可能!
链接:https://arxiv.org/pdf/2103.14030.pdf 本文介绍了一种称为 Swin Transformer 的新视觉 Transformer,它可以作为计算机视觉的通用主干。将 Transformer 从语言适应到视觉方面的挑战源于两个领域之间的差异,例如视觉实体的规模差异很大,以及与文本中的单词相比,图像中像素的高分辨率。为了解决这些差异,我们提出了一种分层 Transformer,其表示是用移位窗口计算的。移位窗口方案通过将自注意力计算限制到非重叠的本地窗口同时还允许跨窗口连接来提高效率。这种分层架构具有在各种尺度上建模的灵活性,并且相对于图像大小具有线性计算复杂性。Swin Transformer 的这些品质使其与广泛的视觉任务兼容,包括图像分类(ImageNet-1K 上的 86.4 top-1 准确率)和密集预测任务,例如对象检测(COCO test 上的 58.7 box AP 和 51.1 mask AP) dev) 和语义分割(ADE20K val 上为 53.5 mIoU)。它的性能在 COCO 上以 +2.7 box AP 和 +2.6 mask AP 以及在 ADE20K 上 +3.2 mIoU 的大幅度超过了之前的最新技术,证明基于 Transformer 的模型作为视觉支柱的潜力。代码和模型将公布在 https://github.com/microsoft/Swin-Transformer 。
计算机视觉建模长期以来一直由卷积神经网络 (CNN) 主导。从 AlexNet [38] 及其在 ImageNet 图像分类挑战中的革命性表现开始,CNN 架构通过更大的规模 [29, 73]、更广泛的连接 [33] 和更复杂的卷积形式 [67, 17, 81]。随着 CNN 作为各种视觉任务的骨干网络,这些架构的进步导致了性能改进,从而广泛提升了整个领域。
另一方面,自然语言处理 (NLP) 中网络架构的演变采取了不同的路径,如今流行的架构是 Transformer [61]。Transformer 专为序列建模和转导任务而设计,以其对数据中长期依赖关系建模的关注而著称。它在语言领域的巨大成功促使研究人员研究其对计算机视觉的适应性,最近它在某些任务上展示了有希望的结果,特别是图像分类 [19] 和联合视觉语言建模 [46]。
在本文中,我们寻求扩展 Transformer 的适用性,使其可以作为计算机视觉的通用主干,就像 NLP 和 CNN 在视觉中所做的那样。我们观察到,将其在语言领域的高性能转移到视觉领域的重大挑战可以通过两种模式之间的差异来解释。这些差异之一涉及规模。与作为语言转换器中处理基本元素的单词标记不同,视觉元素在规模上可能会有很大差异,这个问题在对象检测等任务中受到关注 [41, 52, 53]。在现有的基于 Transformer 的模型中 [61, 19],代币都是固定规模的,这种特性不适合这些视觉应用。另一个区别是与文本段落中的单词相比,图像中像素的分辨率要高得多。存在许多视觉任务,例如语义分割,需要在像素级别进行密集预测,这对于高分辨率图像上的 Transformer 来说是难以处理的,因为其自注意力的计算复杂度与图像大小成二次方。为了克服这些问题,我们提出了一种通用的 Transformer 主干,称为 Swin Transformer,它构建分层特征图并且对图像大小具有线性计算复杂度。如图 1(a) 所示,Swin Transformer 通过从小尺寸的补丁(灰色轮廓)开始并逐渐合并更深的 Transformer 层中的相邻补丁来构建分层表示。通过这些分层特征图,Swin Transformer 模型可以方便地利用先进的技术进行密集预测,例如特征金字塔网络 (FPN) [41] 或 U-Net [50]。线性计算复杂度是通过在划分图像的非重叠窗口中本地计算自注意力来实现的(以红色标出)。每个窗口中的补丁数量是固定的,因此复杂度与图像大小成线性关系。这些优点使 Swin Transformer 适合作为各种视觉任务的通用主干,与之前基于 Transformer 的架构 [19] 形成对比,后者产生单一分辨率的特征图并具有二次复杂性。
Swin Transformer 的一个关键设计元素是它在连续自注意力层之间的窗口分区的移动,如图 2 所示。移动的窗口桥接前一层的窗口,提供它们之间的连接,显着增强建模能力(见表 4)。这种策略在现实世界的延迟方面也很有效:窗口内的所有查询补丁共享相同的密钥集 1,这有助于硬件中的内存访问。相比之下,早期的基于滑动窗口的自注意力方法 [32, 49] 由于不同查询像素的不同键集而在通用硬件上存在低延迟2。我们的实验表明,所提出的移位窗口方法的延迟比滑动窗口方法低得多,但建模能力相似(见表 5 和表 6)。
所提出的 Swin Transformer 在图像分类、对象检测和语义分割的识别任务上取得了强大的性能。它在三个任务上以相似的延迟显着优于 ViT / DeiT [19, 60] 和 ResNe(X)t 模型 [29, 67]。它在 COCO 测试开发集上的 58.7 box AP 和 51.1 mask AP 以 +2.7 box AP(没有外部数据的复制粘贴 [25])和 +2.6 mask AP(DetectoRS [ 45])。在 ADE20K 语义分割上,它在 val 集上获得了 53.5 mIoU,比之前的最先进技术(SETR [78])提高了 +3.2 mIoU。它还在 ImageNet-1K 图像分类上实现了 86.4% 的 top-1 准确率。
我们相信,跨计算机视觉和自然语言处理的统一架构可以使这两个领域受益,因为它将促进视觉和文本信号的联合建模,并且可以更深入地共享来自两个领域的建模知识。我们希望 Swin Transformer 在各种视觉问题上的强大表现能够在社区中更深入地推动这种信念,并鼓励视觉和语言信号的统一建模 。
CNN 和变体 CNN 作为整个计算机视觉的标准网络模型。虽然 CNN 已经存在了几十年 [39],但直到 AlexNet [38] 的引入,CNN 才起飞并成为主流。从那时起,人们提出了更深入、更有效的卷积神经架构,以进一步推动计算机视觉领域的深度学习浪潮,例如 VGG [51]、GoogleNet [56]、ResNet [29]、DenseNet [33]、HRNet [62]和 EfficientNet [57]。除了这些架构上的进步,在改进单个卷积层方面也有很多工作,例如深度卷积 [67] 和可变形卷积 [17, 81]。虽然 CNN 及其变体仍然是计算机视觉的主要骨干架构在应用程序中,我们强调了类似 Transformer 的架构在视觉和语言之间统一建模的强大潜力。我们的工作在几个基本的视觉识别任务上取得了强劲的表现,我们希望它有助于建模转变。
基于自注意力的骨干架构 同样受到 NLP 领域中自注意力层和 Transformer 架构成功的启发,一些作品采用自注意力层来替换流行的 ResNet [32,49,77] 中的部分或全部空间卷积层。在这些工作中,自注意力是在每个像素的局部窗口内计算的,以加速优化 [32],并且它们实现了比对应的 ResNet 架构稍好一些的精度/FLOPs 权衡。然而,它们昂贵的内存访问导致它们的实际延迟明显大于卷积网络 [32]。我们建议不使用滑动窗口,而是在连续层之间移动窗口,这允许在通用硬件中更有效地实现。
自我注意/Transformer 以补充 CNN 另一项工作是使用自注意力层或 Transformer 来增强标准的 CNN 架构。自注意力层可以通过提供编码远程依赖或异构交互的能力来补充主干 [64, 6, 68, 22,71, 54] 或头部网络 [31, 26]。最近,Transformer 中的编码器-解码器设计已应用于对象检测和实例分割任务 [7, 12, 82, 55]。我们的工作探索了 Transformers 对基本视觉特征提取的适应性,并且是对这些工作的补充。
基于 Transformer 的视觉主干与我们的工作最相关的是 Vision Transformer (ViT) [19] 及其后续 [60, 69, 14, 27, 63]。ViT 的开创性工作直接将 Transformer 架构应用于不重叠的中等大小图像块上进行图像分类。与卷积网络相比,它在图像分类方面实现了令人印象深刻的速度-准确度权衡。虽然 ViT 需要大规模训练数据集(即 JFT-300M)才能表现良好,但 DeiT [60] 引入了几种训练策略,允许 ViT 使用较小的 ImageNet-1K 数据集也有效。ViT 在图像分类上的结果令人鼓舞,但其架构不适合用作密集视觉任务或输入图像分辨率高时的通用骨干网络,因为它的低分辨率特征图和二次增加图像大小的复杂性。有一些作品通过直接上采样或反卷积将 ViT 模型应用于目标检测和语义分割的密集视觉任务,但性能相对较低 [2, 78]。与我们的工作同时进行的是一些修改 ViT 架构 [69, 14, 27] 以获得更好的图像分类。根据经验,我们发现我们的 Swin Transformer 架构可以在这些图像分类方法中实现最佳速度精度权衡,尽管我们的工作侧重于通用性能而不是专门针对分类。另一项并发工作 [63] 探索了在 Transformer 上构建多分辨率特征图的类似思路。它的复杂性仍然是图像大小的二次方,而我们的复杂性是线性的,并且也在局部操作,这已被证明有利于对视觉信号中的高相关性进行建模 [35,24,40]。我们的方法既高效又有效,在 COCO 对象检测和 ADE20K 语义分割上都达到了最先进的准确性。
图 3 展示了 Swin Transformer 架构的概述,其中展示了微型版本 (SwinT)。它首先通过补丁拆分模块(如 ViT)将输入的 RGB 图像拆分为不重叠的补丁。每个补丁都被视为一个“令牌”,其特征被设置为原始像素 RGB 值的串联。在我们的实现中,我们使用 4 × 4 的补丁大小,因此每个补丁的特征维度是 4 × 4 × 3 = 48。线性嵌入层应用于这个原始值特征以将其投影到任意维度( 表示为 C)
在这些补丁令牌上应用了几个具有修改自注意力计算的 Transformer 块(Swin Transformer 块)。Transformer 块保持令牌数,与线性嵌入一起被称为“阶段 1”。
为了产生分层表示,随着网络变得更深,通过补丁合并层来减少令牌的数量。第一个补丁合并层连接每组 2 × 2 相邻补丁的特征,并在 4C 维连接特征上应用线性层。这将令牌数量减少了 2×2 = 4 的倍数(分辨率的 2 倍下采样),并且输出维度设置为 2C。之后应用 Swin Transformer 块进行特征转换,分辨率保持在 。补丁合并和特征转换的第一个块表示为“第 2 阶段”。该过程重复两次,分别为“第 3 阶段”和“第 4 阶段”,输出分辨率分别为 和 。这些阶段共同产生一个分层表示,具有与典型卷积网络相同的特征图分辨率,例如 VGG [51] 和 ResNet [29]。因此,所提出的架构可以方便地替换现有方法中用于各种视觉任务的骨干网络。
Swin Transformer 模块 Swin Transformer 是通过将 Transformer 模块中的标准多头自注意力 (MSA) 模块替换为基于移动窗口的模块(在第 3.2 节中描述)而构建的,其他层保持不变。如图 3(b) 所示,Swin Transformer 模块由一个基于移动窗口的 MSA 模块组成,后跟一个 2 层 MLP,其间具有 GELU 非线性。在每个 MSA 模块和每个 MLP 之前应用一个 LayerNorm (LN) 层,在每个模块之后应用一个残差连接。
标准的 Transformer 架构 [61] 及其对图像分类的适应 [19] 都进行全局自注意力,其中计算了令牌与所有其他令牌之间的关系。全局计算会导致与标记数量相关的二次复杂性,使其不适用于许多需要大量标记进行密集预测或表示高分辨率图像的视觉问题。
非重叠窗口中的自注意力 为了有效建模,我们建议在局部窗口内计算自注意力。窗口被布置为以不重叠的方式均匀地划分图像。假设每个窗口包含 M × M 个补丁,全局 MSA 模块和基于 h × w 补丁图像的窗口的计算复杂度为:
其中前者与补丁号 hw 的二次方,当 M 固定时后者是线性的(默认设置为 7)。全局自注意力计算对于大型hw来说通常是负担不起的,而基于窗口的自注意力是可扩展的。
连续块中的移位窗口分区 基于窗口的自注意力模块缺乏跨窗口的连接,这限制了其建模能力。为了在保持非重叠窗口的高效计算的同时引入跨窗口连接,我们提出了一种移位窗口分区方法,该方法在连续的 Swin Transformer 块中的两个分区配置之间交替。
如图 2 所示,第一个模块使用从左上角像素开始的常规窗口划分策略,将 8 × 8 特征图均匀划分为大小为 4 × 4 (M = 4) 的 2 × 2 窗口。然后,下一个模块采用从前一层的窗口配置偏移的窗口配置,通过将窗口从规则分区的窗口中移动个像素。使用移位窗口分区方法,连续的 Swin Transformer 块计算为
其中和 分别表示块 的 (S)WMSA 模块和 MLP 模块的输出特征;W-MSA 和 SW-MSA 分别表示使用常规和移位窗口分区配置的基于窗口的多头自注意力。
移位窗口分区方法在前一层中引入了相邻非重叠窗口之间的连接,并被发现在图像分类、对象检测和语义分割中是有效的,如表 4 所示。
移位配置的高效批量计算 移位窗口分区的一个问题是它会导致更多窗口,在移位配置中从 到 ,并且一些窗口将小于 M × M。一个简单的解决方案是将较小的窗口填充到 M × M 的大小,并在计算注意力时屏蔽填充的值。当常规分区中的窗口数量很少时,例如 2 × 2,这个简单的解决方案增加的计算量是相当可观的(2 × 2 !3 × 3,是 2.25 倍)。在这里,我们提出了一种更有效的批量计算方法,通过向左上方向循环移位,如图 4 所示。在这种移位之后,一个批量窗口可能由几个在特征图中不相邻的子窗口组成,因此采用屏蔽机制将自注意力计算限制在每个子窗口内。使用循环移位,批处理窗口的数量与常规窗口分区的数量相同,因此也是有效的。这种方法的低延迟如表 5 所示。
相对位置偏差 在计算自注意力时,我们遵循 [48, 1, 31, 32] 通过在计算相似度时将相对位置偏差添加到每个头部:
其中 是查询、键和值矩阵;d 是查询/键维度,M2 是窗口中的补丁数。由于沿每个轴的相对位置位于 [−M + 1; M − 1],我们参数化一个更小的偏置矩阵,B 中的值取自
我们观察到与没有这个偏置项或使用绝对位置嵌入的对应项相比有显着的改进,如表 4 所示。在 [19] 中进一步向输入添加绝对位置嵌入会略微降低性能,因此在我们的实现中没有采用。
预训练中学习到的相对位置偏差也可用于初始化模型,通过双三次插值 [19, 60] 使用不同的窗口大小进行微调。
我们建立我们的基础模型,称为 Swin-B,具有 模型大小和计算复杂度类似于 ViTB/DeiT-B。我们还介绍了 Swin-T、Swin-S 和 Swin-L,它们分别是模型大小和计算复杂度约为 0.25x、0.5x 和 2x 的版本。请注意,Swin-T 和 Swin-S 的复杂度分别与 ResNet-50 (DeiT-S) 和 ResNet-101 的复杂度相似。默认情况下,窗口大小设置为 M = 7。对于所有实验,每个头部的查询维度为 d = 32,每个 MLP 的扩展层为 α = 4。这些模型变体的架构超参数是:
其中 C 是第一阶段隐藏层的通道数。表 1 列出了 ImageNet 图像分类模型变体的模型大小、理论计算复杂度 (FLOPs) 和吞吐量。
我们对 ImageNet-1K 图像分类 [18]、COCO 对象检测 [42] 和 ADE20K 语义分割 [80] 进行了实验。在下文中,我们首先将所提出的 Swin Transformer 架构与之前在三个任务上的最新技术进行比较。然后,我们在 Swin Transformer 的重要设计元素做了消融实验。
设置 对于图像分类,我们在 ImageNet-1K [18] 上对提议的 Swin Transformer 进行了基准测试,其中包含来自 1,000 个类别的 1.28M 训练图像和 50K 验证图像。报告了单个作物的 top-1 准确度。我们考虑两种训练设置:
YOLOv10l summary: 515 layers, 40346250 parameters, 0 gradients, 120.1 GFLOPs
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 15/15 [00:04<00:00, 3.64it/s]
all 230 1412 0.968 0.977 0.991 0.751
c17 230 131 1 0.984 0.995 0.844
c5 230 68 0.975 0.971 0.994 0.856
helicopter 230 43 0.955 1 0.988 0.647
c130 230 85 0.995 0.988 0.995 0.667
f16 230 57 1 0.958 0.99 0.706
b2 230 2 0.878 1 0.995 0.847
other 230 86 0.988 0.934 0.972 0.545
b52 230 70 0.985 0.97 0.985 0.85
kc10 230 62 0.988 0.984 0.985 0.844
command 230 40 0.996 1 0.995 0.825
f15 230 123 1 0.975 0.995 0.66
kc135 230 91 1 0.973 0.985 0.66
a10 230 27 1 0.738 0.967 0.454
b1 230 20 0.987 1 0.995 0.736
aew 230 25 0.956 1 0.987 0.751
f22 230 17 0.971 1 0.995 0.765
p3 230 105 0.999 0.981 0.995 0.786
p8 230 1 0.817 1 0.995 0.597
f35 230 32 1 0.991 0.995 0.566
f18 230 125 0.991 0.984 0.994 0.809
v22 230 41 1 0.979 0.995 0.719
su-27 230 31 0.984 1 0.995 0.862
il-38 230 27 0.987 1 0.995 0.915
tu-134 230 1 0.796 1 0.995 0.995
su-33 230 2 1 0.997 0.995 0.551
an-70 230 2 0.874 1 0.995 0.945
tu-22 230 98 1 0.974 0.995 0.87