【第31篇】探索普通视觉Transformer Backbones用于物体检测

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

image-20220404203315829

我们将与同样建立在普通主干上的两个 FPN 变体进行比较(图 2)。 在第一个变体中,主干被人为地分为多个阶段,以模仿分层主干的各个阶段,并应用横向和自上而下的连接(图 2(a))。 第二个变体与第一个变体类似,但仅使用最后一个映射而不是划分的阶段(图 2 (b))。 我们表明这些 FPN 变体不是必需的(第 4 节)。

骨干适应。 目标检测器受益于高分辨率输入图像,但在整个主干中计算全局自注意力在内存中是令人望而却步的,而且速度很慢。 在这项研究中,我们关注预训练的主干执行全局自我注意的场景,然后在微调期间适应更高分辨率的输入。 这与最近使用骨干预训练直接修改注意力计算的方法形成对比(例如,[40,16])。 我们的场景使我们能够使用原始的 ViT 主干进行检测,而无需重新设计预训练架构。

我们探索使用带有几个跨窗口块的窗口注意力[52]。 在微调期间,给定一个高分辨率特征图,我们将其划分为规则的非重叠窗口。在每个窗口内计算自注意力。 这在原始 Transformer [52] 中被称为“受限”自注意力。

与 Swin 不同,我们不会跨层“移动”[40] 窗口。 为了允许信息传播,我们使用了极少数(默认情况下,4 个)可以跨窗口的块。 我们将预训练的主干平均分成 4 个块子集(例如,对于 24 块 ViT-L,每个子集中有 6 个)。 我们在每个子集的最后一个块中应用传播策略。 我们研究这两种策略:

(i) 全局传播。 我们在每个子集的最后一个块中执行全局自我注意。 由于全局块的数量很少,内存和计算成本是可行的。 这类似于 [32] 中与 FPN 联合使用的混合窗口注意力。

(ii) 卷积传播。 作为替代方案,我们在每个子集之后添加一个额外的卷积块。 卷积块是一个残差块[26],由一个或多个卷积和一个恒等快捷方式组成。 该块中的最后一层被初始化为零,因此该块的初始状态是一个身份[21]。 将块初始化为身份允许我们将其插入到预训练主干中的任何位置,而不会破坏主干的初始状态。

我们的骨干适应很简单,并且使检测微调与全局自注意力预训练兼容。 如前所述,没有必要重新设计预训练架构。

讨论。 对象检测器包含可以与任务无关的组件,例如主干,以及其他特定于任务的组件,例如 RoI 头。 这种模型分解使与任务无关的组件能够使用非检测数据(例如 ImageNet)进行预训练,这可能会提供一个优势,因为检测训练数据相对稀缺。

从这个角度来看,追求包含较少归纳偏差的主干变得合理,因为可以使用大规模数据和/或自我监督来有效地训练主干。 相比之下,检测任务特定组件的可用数据相对较少,并且仍可能受益于额外的归纳偏差。 虽然追求具有较少感应偏差的检测头是一个活跃的工作领域,但像 DETR 这样的领先方法难以训练并且仍然受益于特定于检测的先验知识 。

在这些观察的推动下,我们的工作在检测器的主干方面遵循了原始普通 ViT 论文的精神。 虽然 ViT 论文的讨论侧重于减少平移等变的归纳偏差,但在我们的案例中,它是关于在主干中的尺度等变上减少甚至没有归纳偏差。 我们假设普通主干实现尺度等方差的方法是从数据中学习先验知识,类似于它如何在没有卷积的情况下学习平移等方差和局部性。

我们的目标是证明这种方法的可行性。 因此,我们选择使用标准检测特定组件(即,Mask R-CNN 及其扩展)来实现我们的方法。 在检测头中探索更少的感应偏差是未来工作的一个开放且有趣的方向。 我们希望它可以从我们这里的工作中受益,并在此基础上再接再厉。

执行。 我们使用 vanilla ViT-B、ViT-L、ViT-H [13] 作为预训练主干。 我们将块大小设置为 16,因此特征图比例为 1/16,即步幅 = 16。我们的检测器头遵循 Mask R-CNN [24] 或 Cascade Mask R-CNN [4],其架构细节在 附录。 输入图像为 1024×1024,在训练期间通过大规模抖动 [18] 进行了增强。 由于这种重度正则化,我们在 COCO 中微调了多达 100 个 epoch。 我们使用 AdamW 优化器 [41] 并使用基线版本搜索最佳超参数。 更多细节在附录中。

4、实验

===============================================================

4.1 消融研究与分析


我们在 COCO 数据集 [37] 上进行消融实验。 我们在 train2017 split 上进行训练并在 val2017 split 上进行评估。 我们报告了边界框对象检测(APbox)和实例分割(APmask)的结果。

默认情况下,我们使用第 3 节中描述的简单特征金字塔和全局传播。 我们使用 4 个传播块,均匀地放置在主干中。 我们使用在不带标签的 IN-1K 上预训练的 MAE [23] 初始化主干。 我们消除这些默认值并讨论我们的主要观察结果如下。

image-20220404203222246

一个简单的特征金字塔就足够了。 在表 1 中,我们比较了图 2 所示的特征金字塔构建策略。

我们研究了没有特征金字塔的基线:RPN 和 RoI 头都应用于主干的最终单尺度 ( 1 16 \frac{1}{16} 161​) 特征图。 这种情况类似于 FPN 提出之前的原始 Faster R-CNN。 所有特征金字塔变体(表 1 a-c)都明显优于此基线,将 AP 提高多达 3.4 个点。 我们注意到,使用单尺度特征图并不意味着检测器是单尺度的:RPN 头部具有多尺度锚点,而 RoI 头部在多尺度区域上运行。 即便如此,特征金字塔还是有益的。 这一观察结果与 FPN 论文中关于分层主干的观察结果一致。

但是,不需要 FPN 设计,我们简单的特征金字塔足以让普通的 ViT 主干享受金字塔的好处。 为了消除这种设计,我们模仿 FPN 架构(即自上而下和横向连接),如图 2(a,b)所示。 表 1 (a, b) 表明,虽然两种 FPN 变体在没有金字塔的情况下都在基线上实现了强大的增益(正如在分层主干上使用原始 FPN 广泛观察到的那样),但它们并不比我们简单的特征金字塔好。 最初的 FPN [35] 是通过将低分辨率、更强的特征图与更高分辨率、更弱的特征图结合起来的。 当主干很平坦并且没有高分辨率地图时,这个基础就失去了,这可以解释为什么我们的简单金字塔就足够了。

我们的消融表明,金字塔特征图集,而不是自上而下/横向连接,是有效多尺度检测的关键。 为了看到这一点,我们研究了一个更加激进的简单金字塔案例:我们通过反卷积仅生成最精细的尺度 (1 4) 特征图,然后从这个最好的地图中,我们通过跨步平均池化并行对其他尺度进行子采样。 此设计中没有非共享的按比例参数。 这个非常简单的金字塔几乎一样好:它有 54.5 AP (ViT-L),比没有金字塔的基线高 3.3。 这显示了金字塔特征图的重要性。 对于这些特征金字塔的任何变体,锚点(在 RPN 中)和区域(在 RoI 头中)根据它们的尺度映射到金字塔中的相应级别,如 [35] 中所示。 我们假设这种显式的尺度等变映射,而不是自上而下/横向连接,是特征金字塔可以极大地有益于多尺度目标检测的主要原因。

image-20220404203004186

在一些传播块的帮助下,窗口注意力就足够了。 表 2 消除了我们的骨干适应方法。 简而言之,在具有纯窗口注意力且没有跨窗口传播块(表 2,“无”)的基线之上,各种传播方式都可以显示出不错的收益。

在表 2a 中,我们比较了我们的全局和卷积传播策略与无传播基线。 它们比基线有 1.7 和 1.9 的增益。 我们还与“移位窗口”(Swin [40])策略进行了比较,其中窗口网格每隔一个块移动半个窗口大小。 移位窗口变体比基线有 1.1 的增益,但比我们的差。 请注意,这里我们只关注 Swin [40] 的“移位窗口”方面:主干仍然是一个普通的 ViT,仅在微调期间适应移位窗口注意力; 它不是 Swin 架构,我们将在后面进行比较。

表 2b 比较了用于卷积传播的不同类型的残差块。 我们研究了基本的(两个 3×3)、瓶颈(1×1→3×3→1×1),以及一个具有一个 3×3 卷积的原始块。 它们都比基线有所改进,而特定的块设计仅产生微小的差异。 有趣的是,即使卷积是一种局部操作,如果它的感受野覆盖了两个相邻的窗口,原则上连接两个窗口的所有像素就足够了。 这种连接性要归功于后续块中两个窗口中的自我关注。 这可以解释为什么它可以像全局传播一样执行。

在表 2c 中,我们研究了跨窗口传播应该位于主干的哪个位置。 默认情况下,平均放置 4 个全局传播块。 我们将它们放在第一个或最后 4 个块中进行比较。 有趣的是,在最后 4 个块中执行传播几乎与均匀放置一样好。 这与 [13] 中的观察结果一致,即 ViT 在后面的块中具有更长的注意力距离,并且在早期的块中更加本地化。 相反,仅在前 4 个块中执行传播没有显示增益:在这种情况下,在这 4 个块之后没有跨主干窗口的传播。 这再次表明跨窗口传播是有帮助的。

表 2d 比较了要使用的全局传播块的数量。 即使只使用 2 个块也能达到很好的准确性,并且明显优于基线。 为了全面起见,我们还报告了一个变体,其中 ViT-L 中的所有 24 个块都使用全局注意力。 这比我们的 4 块默认值有 0.5 个点的边际增益,而它的训练需要特殊的内存优化(我们使用内存检查点 [7])。 这一要求使得扩展到更大的模型(如 ViT-H)变得不切实际。 我们的窗口注意力解决方案加上一些传播块提供了一个实用的、高性能的折衷方案。

image-20220404204948268

我们在表 3 中对这种权衡进行了基准测试。使用 4 个传播块可以进行很好的权衡。 卷积传播是最实用的,它只增加了 ≤5% 的内存和时间,而代价是增加了 4% 的参数。 使用 4 个块进行全局传播也是可行的,并且不会增加模型大小。 所有 24 个区块的全局自注意力是不切实际的。

总之,表 2 表明各种形式的传播是有帮助的,而我们可以在大多数或所有块中继续使用窗口注意力。 重要的是,所有这些架构调整仅在微调期间执行; 他们不需要重新设计预训练架构。

image-20220404205226732

Masked Autoencoders 提供了强大的预训练主干。 表 4 比较骨干预训练策略。 IN-1K 上的监督预训练比没有预训练稍差,类似于 [18] 中的观察结果。 对于 ViT-L,IN-21K 的监督预训练略好一些。

相比之下,在 IN-1K(无标签)上的 MAE [23] 预训练显示出巨大的收益,ViT-B 的 APbox 增加了 3.1,ViT-L 的 APbox 增加了 4.6。 我们假设,具有较少归纳偏差的 vanilla ViT [13] 可能需要更高的容量来学习翻译和缩放等变特征,而更高容量的模型容易出现严重的过度拟合。 MAE 预训练可以帮助缓解这个问题。 接下来,我们将在上下文中讨论有关 MAE 的更多信息。

4.2 与分层骨干网的比较


现代检测系统涉及许多实现细节和微妙之处。 为了专注于在尽可能公平的条件下比较骨干网,我们将 Swin [40] 和 MViTv2 [32] 骨干网合并到我们的实现中。

设置。 我们对所有 ViT、Swin 和 MViTv2 主干使用相同的 Mask R-CNN 和 Cascade Mask R-CNN [4] 实现。 我们将 FPN 用于 Swin/MViTv2 的分层主干。 我们分别为每个主干搜索最佳超参数(见附录)。 我们的 Swin 结果比原始论文中的同行要好; 我们的 MViTv2 结果优于或与 [32]中报告的结果相当。

在原始论文 [40,32] 之后,Swin 和 MViTv2 都使用相对位置偏差 [44]。 为了更公平的比较,这里我们还根据 [32] 在 ViT 主干中采用相对位置偏差,但仅在微调期间,不影响预训练。 这种添加将 AP 提高了 ~1 个点。 请注意,我们在 4.1 节中的消融没有相对位置偏差 。

image-20220404210056831

结果和分析。 表 5 显示了比较。 图 3 绘制了权衡。 这里的比较涉及两个因素:主干和预训练策略。 我们的普通骨干检测器与 MAE 预训练相结合,呈现出更好的缩放行为。 当模型很大时,我们的方法优于 Swin/MViTv2 的分层模型,包括使用 IN-21K 监督预训练的模型。 我们使用 ViT-H 的结果比使用 MViTv2-H 的结果好 2.6。此外,普通 ViT 具有更好的挂钟性能(图 3 右,参见 ViT-H 与 MViTv2-H),因为更简单的块更多硬件友好。

image-20220404210126976

我们还注意到,分层主干通常涉及增强的自注意力块设计。 示例包括 Swin [40] 中的移位窗口注意力和 MViT v1/v2 [16,32] 中的集中注意力。 如果将这些块设计应用于普通骨干网,还可以提高准确性和参数效率。 虽然这可能会使我们的竞争对手处于优势地位,但如果没有这些增强功能,我们的方法仍然具有竞争力。

4.3 与以前系统的比较


接下来,我们提供与之前论文中报告的领先结果的系统级比较。 我们将我们的系统称为 ViTDet,即 ViT Detector,旨在使用 ViT 主干进行检测。 由于这些比较是系统级的,因此这些方法使用了各种不同的技术。 虽然我们努力平衡比较(如下所述),但一般来说,进行完全可控的比较是不可行的; 相反,我们的目标是将我们的方法置于当前领先方法的背景下。

image-20220404211215236

COCO上的比较。 表 6 报告了 COCO 的系统级比较。 为了更公平的比较,我们在竞争对手的基础上进行了两项更改:我们采用了该表中所有竞争对手 [40,32,34,39] 使用的 soft-nms [3],并增加了输入大小(从 1024 到 1280 ) 在 [34,39] 之后。 我们注意到我们没有在以前的消融中使用这些改进。 与上一小节(第 4.3 节)一样,我们在这里使用相对位置偏差。

如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费学习大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
有很大可能成功!
最后祝你好运!!!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-Cq7QiPTo-1713219452607)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值