Vision Transformer

Vision Transformer

导读

以下是几个在相关工作中比较知名的项目:

  • DETR(End-to-End Object Detection with Transformers),使用Transformers进行物体检测和分割。
  • Vision Transformer (AN IMAGE IS WORTH 16X16 WORDS: Transformer FOR IMAGE RECOGNITION AT SCALE),使用Transformer 进行图像分类。
  • Image GPT(Generative Pretraining from Pixels),使用Transformer进行像素级图像补全,就像其他GPT文本补全一样。
  • End-to-end Lane Shape Prediction with Transformers,在自动驾驶中使用Transformer进行车道标记检测

常用transformer的结构

在CV中采用Transformer的相关工作中主要有两种模型架构。一种是纯Transformer结构,另一种是将CNNs/主干网与Transformer相结合的混合结构。

  • 纯Transformer
  • 混合型:(CNNs+ Transformer)

Vision Transformer是基于完整的自注意力的Transformer结构没有使用CNN,而DETR是使用混合模型结构的一个例子,它结合了卷积神经网络(CNNs)和Transformer。

Vision Transformer(ViT)首次在主流分类基准上实现了类似甚至更高的性能。本节全面回顾了 2021 年 6 月之前发布的 40 多个 Transformer 主干,并根据其动机和实现将它们分为六类,如下图 5 所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DfSfs2TS-1657698313547)(https://github.com/theprofessor249/TUKU/img/202207131030407.jpeg)]

首先介绍了 ViT,用于图像分类的原始视觉 Transformer。然后讨论了 Transformer Enhanced CNN 方法,该方法利用Transformer来增强CNN主干的远程依赖性。Transformer 具有很强的全局建模能力,但在早期忽略了局部信息。因此,CNN Enhanced Transformer 方法利用适当的卷积归纳偏置来增强 Transformer,而 Local Attention Enhanced Transformer 方法重新设计补丁分区和注意力块以增强 Transformer 的局部性并保持无卷积架构。此外,CNN 在性能和计算效率方面从经验上受益于分层和深层结构。受此启发,提出了 Hierarchical Transformer 和 Deep Transformer 方法。前者用金字塔茎代替固定分辨率的柱状结构,而后者防止注意力图过于平滑并增加其在深层的多样性。

Vision Transformer简介

Vision Transformer(ViT)将纯Transformer架构直接应用到一系列图像块上进行分类任务,可以取得优异的结果。它在许多图像分类任务上也优于最先进的卷积网络,同时所需的预训练计算资源大大减少(至少减少了4倍)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YNgdQXW5-1657698313549)(https://github.com/theprofessor249/TUKU/img/202207130939913.png)]

  • Vision Transformer模型结构

它们是如何将图像分割成固定大小的小块,然后将这些小块的线性投影连同它们的图像位置一起输入变压器的。然后剩下的步骤就是一个干净的和标准的Transformer编码器和解码器。

在图像patch的嵌入中加入位置嵌入通过不同的策略在全局范围内保留空间/位置信息。在本文中,他们尝试了不同空间信息编码方法,包括无位置信息编码、1D/2D位置嵌入编码和相对位置嵌入编码。

  • 注意事项

输入的patch尺寸越小,计算模型就越大,这是因为输入的patch数目N = HW/P*P,其中(H,W)为原始图像的分辨率,P为patch图像的分辨率。这意味着14 x 14的patch比16 x 16的图像patch在计算上更昂贵。

  • 模型性能VS数据集大小

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tNTfTmRC-1657698313550)(https://github.com/theprofessor249/TUKU/img/202207130953717.png)]

了数据集大小对模型性能的影响。当预训练数据集的大小较小时,ViT的表现并不好,当训练数据充足时,它的表现优于以前的SOTA。

Vision Transformer的模型结构详解

总体架构

下图是原论文中给出的关于Vision Transformer(ViT)的模型框架。简单而言,模型由三个模块组成:

Linear Projection of Flattened Patches(Embedding层)

Transformer Encoder(图右侧有给出更加详细的结构)

MLP Head(最终用于分类的层结构)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-olfDO7X2-1657698313550)(https://github.com/theprofessor249/TUKU/img/202207131135424.png)]

Vision transformer模型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-34ufg7v8-1657698313551)(https://github.com/theprofessor249/TUKU/img/202207131141613.png)]

ViT-B/16模型

架构细节

  • Embedding层

对于标准的Transformer模块,要求输入的是token(向量)序列,即二维矩阵[num_token, token_dim],如下图,token0-9对应的都是向量,以ViT-B/16为例,每个token向量长度为768。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AjBASJuL-1657698313552)(https://github.com/theprofessor249/TUKU/img/202207131336728.png)]

对于图像数据而言,其数据格式为[H, W, C]是三维矩阵明显不是Transformer想要的。所以需要先通过一个Embedding层来对数据做个变换。如下图所示,首先将一张图片按给定大小分成一堆Patches。以ViT-B/16为例,将输入图片(224x224)按照16x16大小的Patch进行划分,划分后会得到( 224 / 16 ) 2 = 196 (224/16)^2=196个Patches。接着通过线性映射将每个Patch映射到一维向量中,以ViT-B/16为例,每个Patche数据shape为[16, 16, 3]通过映射得到一个长度为768的向量(后面都直接称为token)。[16, 16, 3] -> [768]

在代码实现中,直接通过一个卷积层来实现。 以ViT-B/16为例,直接使用一个卷积核大小为16x16,步距为16,卷积核个数为768的卷积来实现。通过卷积[224, 224, 3] -> [14, 14, 768],然后把H以及W两个维度展平即可[14, 14, 768] -> [196, 768],此时正好变成了一个二维矩阵,正是Transformer想要的。

在输入Transformer Encoder之前注意需要加上[class]token以及Position Embedding。 在原论文中,作者说参考BERT,在刚刚得到的一堆tokens中插入一个专门用于分类的[class]token,这个[class]token是一个可训练的参数,数据格式和其他token一样都是一个向量,以ViT-B/16为例,就是一个长度为768的向量,与之前从图片中生成的tokens拼接在一起,Cat([1, 768], [196, 768]) -> [197, 768]。然后关于Position Embedding就是之前Transformer中讲到的Positional Encoding,这里的Position Embedding采用的是一个可训练的参数(1D Pos. Emb.),是直接叠加在tokens上的(add),所以shape要一样。以ViT-B/16为例,刚刚拼接[class]token后shape是[197, 768],那么这里的Position Embedding的shape也是[197, 768]。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AxrDeezS-1657698313553)(https://github.com/theprofessor249/TUKU/img/202207131338008.png)]

  • Transformer Encoder层

Transformer Encoder其实就是重复堆叠Encoder Block L次,下图是我自己绘制的Encoder Block,主要由以下几部分组成:

Layer Norm,这种Normalization方法主要是针对NLP领域提出的,这里是对每个token进行Norm处理,之前也有讲过Layer Norm不懂的可以参考链接
Multi-Head Attention,这个结构之前在讲Transformer中很详细的讲过,不在赘述,不了解的可以参考链接
Dropout/DropPath,在原论文的代码中是直接使用的Dropout层,在但rwightman实现的代码中使用的是DropPath(stochastic depth),可能后者会更好一点。
MLP Block,如图右侧所示,就是全连接+GELU激活函数+Dropout组成也非常简单,需要注意的是第一个全连接层会把输入节点个数翻4倍[197, 768] -> [197, 3072],第二个全连接层会还原回原节点个数[197, 3072] -> [197, 768]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xcCWWAeU-1657698313554)(https://github.com/theprofessor249/TUKU/img/202207131348861.png)]

  • MLP Head层

上面通过Transformer Encoder后输出的shape和输入的shape是保持不变的,以ViT-B/16为例,输入的是[197, 768]输出的还是[197, 768]。注意,在Transformer Encoder后其实还有一个Layer Norm没有画出来,后面有我自己画的ViT的模型可以看到详细结构。**这里我们只是需要分类的信息,所以我们只需要提取出[class]token生成的对应结果就行,即[197, 768]中抽取出[class]token对应的[1, 768]。接着我们通过MLP Head得到我们最终的分类结果。**MLP Head原论文中说在训练ImageNet21K时是由Linear+tanh激活函数+Linear组成。但是迁移到ImageNet1K上或者你自己的数据上时,只用一个Linear即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zp2NlyPY-1657698313555)(https://github.com/theprofessor249/TUKU/img/202207131344986.png)]

transformer混合模型—Hybrid

Hybrid混合模型,就是将传统CNN特征提取和Transformer进行结合。下图绘制的是以ResNet50作为特征提取器的混合模型,但这里的Resnet与之前讲的Resnet有些不同。首先这里的R50的卷积层采用的StdConv2d不是传统的Conv2d,然后将所有的BatchNorm层替换成GroupNorm层。在原Resnet50网络中,stage1重复堆叠3次,stage2重复堆叠4次,stage3重复堆叠6次,stage4重复堆叠3次,但在这里的R50中,把stage4中的3个Block移至stage3中,所以stage3中共重复堆叠9次。

通过R50 Backbone进行特征提取后,得到的特征矩阵shape是[14, 14, 1024],接着再输入Patch Embedding层,注意Patch Embedding中卷积层Conv2d的kernel_size和stride都变成了1,只是用来调整channel。后面的部分和前面ViT中讲的完全一样,就不在赘述。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2SJpjxbC-1657698313556)(https://github.com/theprofessor249/TUKU/img/202207131406074.png)]

transformer在分类中的用途

  1. 最初的Vit

ViT 是 Transformer 在图像分类中的第一个骨干。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ATgbeHko-1657698313557)(https://github.com/theprofessor249/TUKU/img/202207131009284.jpeg)]

  1. Transformer 增强的 CNN

Transformer 有两个关键部分:MHSA 和 FFN。最近,Cordonnier 等人已经证明卷积层可以通过具有足够头数的 MHSA 来近似。Dong等人已经表明,MHSA 可能在没有跨层连接和 FFN时对“token一致性”具有很强的归纳偏置。因此,Transformer 在理论上具有比 CNN 更强大的建模能力。然而,它不可避免地具有沉重的计算成本,特别是对于浅层,由自注意力机制带来,随着特征分辨率的二次方增长。与之前基于注意力的方法类似,一些方法尝试将 Transformer 插入 CNN 主干或用 Transformer 层替换部分卷积块。例如 VTs 和 BoTNet。

  1. CNN 增强 Transformer

归纳偏差可以表示为一组关于数据分布或解空间的假设,其在卷积中的表现是局部性和方差平移。局部性侧重于空间上接近的元素,并将它们与远端隔离。平移不变性表明在输入的位置之间重复使用相同的匹配规则 [97]。由于局部邻域内的协方差很大,并且在整个图像中趋于逐渐平稳,这些卷积偏差可以有效地处理图像数据。然而,强大的偏差也限制了 CNN 具有足够数据集的上限。最近的工作试图利用适当的卷积偏差来增强 Transformer 并加速其收敛。 这些应用可以概括如下:软近似(DeiT、ConViT)、直接局部性处理( CeiT、LocalViT)、位置编码的直接替换(CPVT、ResT)和结构组合(Early Conv. 、CoAtNet)。

  1. 局部注意力增强的transformer

ViT 将输入图像视为一个补丁序列。这种粗糙的补丁嵌入过程忽略了语言和图像之间的差距,这可能会破坏图像的局部信息。作为局部提取器,卷积通过相对固定的滤波器聚合特征。这种模板匹配过程可以有效地处理大多数小数据集,但在处理大型数据集时面临表示的组合爆炸。与卷积相比,局部注意力机制可以根据局部元素之间的关系动态生成注意力权重。为了增强局部特征提取能力并保留无卷积结构,一些工作(Swin Transformer、 TNT block、Twins、T2T-ViT)尝试通过局部自注意力机制来适应补丁结构。随后作者对一些 ViT 变体进行了简要阐述,分别是:TNT、Swin Transformer、Twins& ViL和 VOLO。

  1. 分层 Transformer

由于 ViT 在整个网络中以固定分辨率继承了原始的柱状结构,因此它忽略了细粒度特征,并带来了昂贵的计算成本。继分层 CNN 之后,最近的工作(CvT、PVT、ViL、T2T-ViT、PiT)将类似的结构应用于 Transformer 中。

  1. 深度 Transformer

经验,增加模型的深度使网络能够学习更复杂的表示。最近的工作将这种深度结构应用于 Transformer 并进行大量实验,通过分析跨 patch(Diverse Patch)和跨层(Refiner、DeepViT)的相似性以及残差块(CaiT)的贡献来研究其可扩展性。在深度 Transformer 中,更深层的特征往往不太具有代表性(注意力崩溃,由 DeepViT 发现),并且 patch 被映射到难以区分的潜在表示(补丁过度平滑,由 Diverse Patch 发现)。为了弥补上述限制,这些方法也多方面提出了相应的解决方案。本文简要介绍了CaiT、DeepViT & Refiner和 Diverse Patch。

  1. 有自监督学习的 Transformers

自监督 Transformers 在 NLP 中取得了成功,但受监督的预训练 Transformers 仍占据 CV 领域的主导地位。最近的工作还试图在生成性(iGPT、BEiT)和辨别性(MoCo v3、DINO)中为视觉 Transformer 设计各种自监督学习方案。

  • transformer模型的更改部分

大多数结构改进的方法针对特定模型尺寸、问题或特定输入分辨率进行优化;局部性对于 Transformer 来说是不可或缺的,VOLO 和 Swin 分别在分类和密集预测任务中占主导地位;卷积 patch 化茎(即使用卷积生成patch,如 )和早期卷积阶段(CoAtNet)显著提高了 Transformer 的精度,尤其是在大型模型上,因为这样的组合可以为浅层的细粒度局部特征提供相互帮助;

在视觉 Transformer 的开发过程中,最常见的问题是 Transformer 是否可以取代卷积。通过回顾过去一年的改善历史,没有性能不足的迹象。视觉 Transformer 已经从一个纯粹的结构回归到一个混合的形式,全局信息逐渐回归到一个与局部信息混合的阶段。 虽然 Transformer 可以等价于卷积,甚至比卷积具有更好的建模能力,但这种简单有效的卷积运算足以处理底层的局部性和低级语义特征。在未来,两者结合的思想将推动图像分类的更多突破。

Transformer在检测中的用途

用于目标检测的视觉 Transformer,它可以分为两类:作为颈部(neck)的 Transformer 和作为主干(backbone)的 Transformer。颈部检测器主要是基于 Transformer 结构的一种新表示,称为目标查询,即一组学习的参数均等地聚合全局特征。这些方法尝试在提高收敛速度或改进性能方面提供最佳融合范式。除了专门为检测任务设计的各种颈部外,一部分骨干检测器也考虑了特定的策略。最后,本文比较了它们之间的性能,然后分析了 Transformer 检测器的一些潜在的改进。

  • Transformer 颈部

作者首先回顾 DETR,这是最开始的一个 Transformer 检测器,它提供了一个新的表示目标查询,将对象检测制定为一个集合预测问题。由于其对小物体的准确性低和收敛速度慢,人们从三个方面努力改进这种 Transformer 检测器:稀疏注意力、空间先验和结构重设计。此外,本文还回顾了自监督的应用。

最初的检测器:DEtection with TRansformer (DETR)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mHhpu6uf-1657698313559)(https://github.com/theprofessor249/TUKU/img/202207131042795.jpeg)]

DETR是第一个端到端的 Transformer 检测器,它消除了手工设计的表示和非极大值抑制(NMS)后处理,通过引入目标查询和集合预测直接检测所有对象。具体地,DETR 使用编码器-解码器 Transformer 作为颈部,以及使用 FFN 作为预测头(如上图所示)。

稀疏注意力的 Transformer

在 DETR 中,解码器嵌入和全局特征之间的密集交互会消耗大量计算资源并减慢 DETR 的收敛速度。因此,一些努力旨在设计依赖于数据的稀疏注意力来解决这个问题,例如 Deformable DETR 和 ACT。接着作者描述了在稀疏注意力中的几个重要改进:Deformable DETR、ACT、SMCA、Conditional DETR、Two-Stage Deformable DETR 和 Efficient DETR。

重新设计结构的 Transformer

除了聚焦于交叉注意力的改进外,一些工作还重新设计了仅编码器的结构来直接避免解码器的问题。例如,TSP 继承了集合预测的思想,并放弃了解码器和目标查询。YOLOS 结合了 DETR 的编码器-解码器颈部和 ViT 的仅编码器主干,来重新设计仅编码器的检测器。

自监督学习的 Transformer 检测器

受到自然语言处理中取得成功的预训练 Transformer 的启发,Dai 等人提出无监督预训练DETR(UP-DETR)从三个方面辅助监督训练:

  1. 从给定图像中随机裁剪的一个 path 分配给所有目标查询。解码器的目标是定位 patch 位置。

  2. 为了避免在预训练中对定位的过度偏见,提出了一个辅助重建任务来保留有判别性的特征。

  3. 基于单个查询 patch,多查询定位将多个 patch 分配给不同的目标查询,以模仿多目标检测任务并加速收敛。每个 patch 查询都是通过掩码注意力和目标查询混洗独立预测的。

UP-DETR 在小数据集上比 DETR 获得了更高的精度和更快的收敛速度,甚至在训练数据充足的情况下性能更好。

  • Transformer 骨干

作者在本文中回顾了许多用于图像分类的基于 Transformer 的主干。这些主干可以很容易地合并到各种框架中(例如,MaskR-CNN、RetinaNet、DETR 等)来执行密集预测任务。除了一般的改进外,它们中的一部分也有利于改进密集预测任务。层次结构将 Transformer 构造为一个从高分辨率到低分辨率的过程来学习多尺度特征,如 PVT。局部增强结构将主干构建为局部到全局的组合,以有效地提取短程和长程的视觉依赖性并避免二次计算开销,例如 Swin-Transformer、ViL 和 Focal Transformer。下表3在密集预测任务中比较了基于视觉 Transformer 框架的模型。基于 Transformer 的主干比当前 CNN 模型的性能高 2-6.8%,这证明了 Transformer 在密集预测方面的有效性。

DETR

简介

DETR是第一个成功地将Transformer作为pipeline中的主要构建块的目标检测框架。它与以前的SOTA方法(高度优化的Faster R-CNN)的性能匹配,具有更简单和更灵活的pipeline。

继 Transformer 应用于图像分类后,本章学习 Transformer 应用于图像目标检测的开山之作 – DEtection TRansformer,其大大简化了目标检测的框架,更直观。

DETR 是 Facebook 团队于 2020 年提出的基于 Transformer 的端到端目标检测,没有非极大值抑制 NMS 后处理步骤、没有 anchor 等先验知识和约束,整个由网络实现端到端的目标检测实现,大大简化了目标检测的 pipeline。其原始论文为 《End-to-End Object Detection with Transformers》。结果在 COCO 数据集上效果与 Faster RCNN 相当,在大目标上效果比 Faster RCNN 好,且可以很容易地将 DETR 迁移到其他任务例如全景分割。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3F344IrW-1657698313560)(https://github.com/theprofessor249/TUKU/img/202207130954299.png)]

DETR结构

DETR结合CNN和Transformer的pipeline的目标检测,流程:

  1. CNN被用来学习图像的二维表示并提取特征
  2. CNN的输出是扁平化的,并辅以位置编码,以馈入标准Transformer的编码器
  3. Transformer的解码器通过输出嵌入到前馈网络(FNN)来预测类别和包围框

DETR 分为四个部分,首先是一个 CNN 的 backbone,Transformer 的 Encoder,Transformer 的 Decoder,最后的预测层 FFN。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C6C7KzeP-1657698313561)(https://github.com/theprofessor249/TUKU/img/202207131452406.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BJiXf3kO-1657698313562)(https://github.com/theprofessor249/TUKU/img/202207131501239.png)]

具体步骤:
**a.**利用CNN提取图像特征,backbone可以使用主流的图像编码网络例如ResNet50等
b.编码-解码的transformer,encoder中带有position encoding,decoder中输入了object queries(随机向量,其个数决定了输出个数)
c.用来预测最终目标的前馈网络FFN,一个简单的三层前馈网络
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5nWaXob5-1657698313563)(https://github.com/theprofessor249/TUKU/img/202207131526056.png)]

DETR细节

  • CNN Backbone

提取特征

  • Transformer Encoder

经过 Backbone 后,将输出特征图 reshape 为 C × H W C \times HWC×HW,因为 C = 2048 C = 2048C=2048 是每个 token 的维度,还是比较大,所以先经过一个 1 × 1 1 \times 11×1 的卷积进行降维,然后再输入 Transformer Encoder 会更好。此时自注意力机制在特征图上进行全局分析,因为最后一个特征图对于大物体比较友好,那么在上面进行 Self-Attention 会便于网络更好的提取不同位置不同大物体之间的相互关系的联系,比如有桌子的地方可能有杯子,有草坪的地方有树,有一个鸟的地方可能还有一个鸟等等。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0sGebPvy-1657698313564)(https://github.com/theprofessor249/TUKU/img/202207131506390.png)]

  • Transformer Decoder

Transformer Decoder 也有几个地方需要着重强调。首先就是如何考虑同时进行一个集合预测?之前讲分类的时候都是给一个 class token,因为只进行一类预测。那么现在同时进行不知道多少类怎么办呢?因为目标预测框和输入 token 是一一对应的,所以最简单的做法就是给超多的查询 token,超过图像中会出现的目标的个数(在过去也是先生成 2000 个框再说)。所以在 DETR 中,作者选择了固定的 N = 100 个 token 作为输入,只能最多同时检测 100 个物体。据闻,这种操作可能跟 COCO 评测的时候取 top 100 的框有关。输入 100 个 decoder query slots (Object Query),并行解码N个object,对应的 Transformer decoder 也就会输出 100 个经过注意力和映射之后的 token,然后将它们同时喂给一个 FFN 就能得到 100 个框的位置和类别分数(因为是多分类,所以类别个数是 K + 1,1 指的是背景类别)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TpaUepp9-1657698313565)(https://github.com/theprofessor249/TUKU/img/202207131509770.png)]

与 ViT 他们不同的另外一点是,DETR 的 Decoder 也加了 Positional Encoding。这个思想其实也很自然。当作图像分类是,其实 class token 就一个,对应整个图片,那么自然无需 positional encoding,自己把整个图都占全了。但是在做目标检测时,可能会希望不同的 Object Query 是不是对应图像中不同的位置会好一些。那么按照这个思想,Object Query 自然就是 positional encodings,也就是我就是要查询这里的物体,你预测出来的就是对应的如果有物体的话就是它的类别和位置。

Decoder 每一层的输出结果也经过参数共享的最后的那个 FFN 进行预测并计算loss,实现 深监督

  • FFN

最后的 FFN 是由具有 ReLU 激活函数且具有隐藏层的 3 层线性层计算的,或者说就是 1 × 1 1 \times 11×1 卷积。FFN 预测框标准化中心坐标,高度和宽度,然后使用 softmax 函数激活获得预测类标签。

最终网络的大致推理过程如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yU5SyErl-1657698313566)(https://github.com/theprofessor249/TUKU/img/202207131519903.png)]

相关资源链接

最新最全 | 视觉 Transformer 综述

https://blog.51cto.com/u_15298598/5262882

计算机视觉中的Transformer

https://blog.csdn.net/qq_42722197/article/details/112793157

Vision Transformer(vit)网络详解

https://www.bilibili.com/video/BV1Jh411Y7WQ?spm_id_from=333.999.0.0&vd_source=28d6f1e8d9c5fefad9c4d048fd161cf9

干货!2022讲得最清晰的【Transformer核心项目DETR目标检测训练】整体网络架构与注

https://www.bilibili.com/video/BV1eL411V7TP?p=5&vd_source=28d6f1e8d9c5fefad9c4d048fd161cf9

源码解析目标检测的跨界之星DETR(一)、概述与模型推断

https://www.jianshu.com/p/85e75a03da65

课程介绍:DETR原理与代码精讲

https://www.bilibili.com/video/BV1pa411C7wo?spm_id_from=333.337.search-card.all.click&vd_source=28d6f1e8d9c5fefad9c4d048fd161cf9

https://ke.qq.com/course/3030772?_wv=2147487745#term_id=103148482

你可能感兴趣的:(目标检测,transformer,深度学习,计算机视觉)