原文:计算机视觉"新"范式: Transformer - 202010.16

出处:Smarter - 微信公众号

学习,记录.

自从Transformer出来以后,Transformer便开始在NLP领域一统江湖. 而Transformer在CV领域反响平平,一度认为不适合CV领域,直到最近计算机视觉领域出来几篇Transformer文章,性能直逼CNN的 SOTA,给予了计算机视觉领域新的想象空间.

本文不拘泥于 Transformer 原理和细节实现(知乎有很多优质的Transformer解析文章,感兴趣的可以看看),着重于Transformer对计算机视觉领域的革新.

首先简略回顾一下 Transformer,然后介绍最近几篇计算机视觉领域的Transformer文章,其中ViT用于图像分类,DETRDeformable DETR 用于目标检测. 从这几篇可以看出,Transformer在计算机视觉领域的范式已经初具雏形,可以大致概括为:Embedding->Transformer->Head

一些有趣的点写在最后~~

1. Transformer

Transformer详解:

原文:http://jalammar.github.io/illustrated-transformer/

转文:The Illustrated Transformer - AIUAI

下面以机器翻译为例子,简略介绍Transformer结构.

1.1. Encoder-Decoder

Transformer结构可以表示为Encoder和Decoder两个部分:

Encoder 和 Decoder 主要由 Self-AttentionFeed-Forward Network 两个组件构成,Self-Attention 由 Scaled Dot-Product Attention 和 Multi-Head Attention 两个组件构成.

Scaled Dot-Product Attention公式:

$$ \text{Attention} (Q, K, V) = \text{softmax} (\frac{QK^T}{\sqrt{d_k}}) V $$

Multi-Head Attention公式:

$$ \text{MultiHead}(Q, K, V) = \text{Concat} (\text{head}_1, ..., \text{head}_{\text{h}} W^Q) $$

Feed-Forward Network公式:

$$ \text{FFN}(x) = \text{max}(0, xW_1 + b_1) W_2 + b_2 $$

1.2. Positional Encoding

如图所示,由于机器翻译任务跟输入单词的顺序有关,Transformer 在编码输入单词的嵌入向量时引入了positional encoding,这样Transformer就能够区分出输入单词的位置了.

引入positional encoding的公式为:

$$ PE_{(pos, 2i)} = \text{sin} (\frac{pos}{10000^{\frac{2i}{d_{model}}}}) $$

$$ PE_{(pos, 2i+1)} = \text{cos} (\frac{pos}{10000^{\frac{2i}{d_{model}}}}) $$

其中,pos 是位置,i 是维数,dmodel 是输入单词的嵌入向量维度.

1.3. Self-Attention

1.3.1. Scaled Dot-Product Attention

在 Scaled Dot-Product Attention中,每个输入单词的嵌入向量分别通过3个矩阵WQ、WK和 WV 来分别得到Query向量(Q),Key向量( K)和Value向量(V ).

如图所示,Scaled Dot-Product Attention的计算过程可以分成7个步骤:

[1] - 每个输入单词转化为嵌入向量;

[2] - 根据嵌入向量得到 q, k, v 三个向量;

[3] - 通过 q, k 向量计算 score: $score = q \cdot k$;

[4] - 对 score 进行归一化,即除以 $\sqrt{d_k}$;

[5] - 通过 softmax 激活函数计算 score;

[6] - softmax 点乘 Value 值 v,得到每个输入向量的评分 v;

[7] - 所有输入向量的评分 v 之和为 z: $z \sum v$.

上述步骤的矩阵形式可以表示成:

与Scaled Dot-Product Attention公式一致.

1.3.2. Multi-Head Attention

如图所示,Multi-Head Attention 相当于 h 个不同 Scaled Dot-Product Attention 的集成,以 h=8 为例子,Multi-Head Attention 步骤如下:

[1] - 将数据 $X$ 分别输入到 8 个不同的 Scaled Dot-Product Attention 中,得到8个加权后的特征矩阵 $Z_i, i \in \lbrace 1, 2, ..., 8 \rbrace$;

[2] - 将 8 个 $Z_i$ 按列拼成一个大的特征矩阵;

[3] - 特征矩阵经过一层全连接得到输出 $Z$.

Scaled Dot-Product Attention 和 Multi-Head Attention 都加入了 short-cut 机制.

2. Vision Transformer(ViT)

ViT 将 Transformer 巧妙的应用于图像分类任务,更少计算量下性能跟SOTA相当.

Vision Transformer(ViT) 将输入图片拆分成16x16个patches,每个 patch 做一次线性变换降维同时嵌入位置信息,然后送入 Transformer,避免了像素级 attention 的运算.

类似 BERT[class] 标记位的设置,ViT 在 Transformer 输入序列前增加了一个额外可学习的[class]标记位,并且该位置的 Transformer Encoder 输出作为图像特征.

$$ \pmb{z}_0 = [\pmb{x}_{\text{class}}; \pmb{x}_{\text{p}}^{1}\pmb{E}; \pmb{x}_{\text{p}}^{2}\pmb{E}; \cdots \pmb{x}_{\text{p}}^{N}\pmb{E} ] + \pmb{E}_{\text{pos}} $$

其中,

$\pmb{E} \in R ^{P^2 \cdot C} \times D$;

$\pmb{E} \in R ^{(N+1) \times D}$.

$$ \pmb{z} _l^{'} = \text{MSA} (\text{LN}(\pmb{z}_{l-1})) + \pmb{z}_{l -1} $$

$$ \pmb{z} _l = \text{MLP} (\text{LN}(\pmb{z} _l^{'})) + \pmb{z} _l^{'} $$

$$ \pmb{y} = \text{LN}(\pmb{z} _l^{0}) $$

其中,$l = 1 ... L$.

$(H, W)$ 为原图像分辨率,$(P, P)$ 为每个图像 patch 的分辨率,$N = \frac{HW}{P^2}$ 为 Transformer 输入序列的长度.

ViT 舍弃了CNN的归纳偏好问题,更加有利于在超大规模数据上学习知识,即大规模训练优归纳偏好,在众多图像分类任务上直逼SOTA.

3. DETR

DETR 使用 set loss function 作为监督信号来进行端到端训练,然后同时预测所有目标,其中 set loss function 使用 bipartite matching 算法将 pred 目标和 gt 目标匹配起来. 直接将目标检测任务看成set prediction 问题,使训练过程变的简洁,并且避免了anchor、NMS等复杂处理.

DETR主要有两个部分:architecture 和 set prediction loss.

3.1. Architecture

[1] - DETR 先用 CNN 将输入图像 embedding 成一个二维表征;

[2] - 然后将二维表征转换成一维表征并结合 positional encoding 一起送入 encode;

[3] - decoder 将少量固定数量的已学习的 object queries(可以理解为 positional embeddings)和 encoder 的输出作为输入.

[4] - 最后将 decoder 得到的每个 output embdding 传递到一个共享的前馈网络(FFN),该网络可以预测一个检测结果(包括类和边框)或着“没有目标”的类.

3.1.1. Transformer

[1] - Encoder

将 Backbone 输出的 feature map 转换成一维表征,得到 $d \times HW$ 特征图,然后结合 positional encoding 作为 Encoder 的输入. 每个 Encoder 都由 Multi-Head Self-Attention 和 FFN 组成.

和 Transformer Encoder 不同的是,因为 Encoder 具有位置不变性,DETR 将 positional encoding 添加到每一个 Multi-Head Self-Attention 中,来保证目标检测的位置敏感性.

[2] - Decoder

因为 Decoder 也具有位置不变性,Decoder 的 $N$ 个object query (可以理解为学习不同object的positional embedding)必须是不同,以便产生不同的结果,并且同时把它们添加到每一个 Multi-Head Attention 中. $N$ 个 object queries 通过 Decoder 转换成一个 output embedding,然后output embedding 通过 FFN 独立解码出 $N$ 个预测结果,包含 box 和 class. 对输入 embedding 同时使用 Self-Attention 和 Encoder-Decoder Attention,模型可以利用目标的相互关系来进行全局推理.

和 Transformer Decoder 不同的是,DETR 的每个 Decoder 并行输出 个对象,Transformer Decoder 使用的是自回归模型,串行输出 个对象,每次只能预测一个输出序列的一个元素.

[3] - FFN

FFN 由 3 层 perceptron 和一层 linear projection 组成. FFN 预测出 box 的归一化中心坐标、长、宽和class.

DETR 预测的是固定数量的 $N$ 个box的集合,并且 $N$ 通常比实际目标数要大的多,所以使用一个额外的空类来表示预测得到的box不存在目标.

3.2. Set prediction loss

DETR 模型训练的主要困难是如何根据 gt 衡量预测结果(类别、位置、数量).

DETR 提出的 loss 函数可以产生 pred 和 gt 的最优双边匹配(确定pred和gt的一对一关系),然后优化loss.

将 $y$ 表示 gt 的集合,表示为 $N$ 个预测结果的集合. 假设 $N$ 大于图片目标数,$y$ 可以认为是用空目标类(无目标) 填充的大小为 $N$ 的集合. 搜索两个集合 $N$ 个元素 $\sigma \in \wp _N$ 的不同排列顺序,使得 loss 尽可能的小的排列顺序即为二分图最大匹配(Bipartite Matching),公式如下:

其中,$\mathcal{L}_{\text{match}} (y_i, \hat{y}_{\sigma(i)})$ 表示 pred 和 gt 关于 $\sigma(i)$ 元素 $i$ 的匹配 loss. 其中二分图匹配通过匈牙利算法(Hungarian algorithm)得到.

匹配 loss 同时考虑了 pred class 和 pred box 的准确性. 每个 gt 的元素 $i$ 可以看成 $y_i = (c_i, b_i)$,其中,$c_i$ 表示 class label (可能是空类), $b_i$ 表示 gt box,将元素 $i$ 二分图匹配指定的 pred class 表示为 $\hat{p}_{\sigma(i)}(c_i)$,pred box 表示为 $\hat{b}_{\sigma(i)}$.

第一步先找到一对一匹配的 pred 和 gt,第二步再计算 hungarian loss.

hungarian loss公式如下:

ViT和DETR两篇文章的实验和可视化分析很有启发性,感兴趣的可以仔细看看~~

4. Deformable DETR

从 DETR 看,还不足以赶上 CNN,因为训练时间太久了,Deformable DETR的出现,让作者对Transformer有了新的期待.

Deformable DETR 将 DETR 中的 attention 替换成 Deformable Attention,使DETR范式的检测器更加高效,收敛速度加快10倍.

Deformable DETR 提出的 Deformable Attention 可以缓解 DETR 的收敛速度慢和复杂度高的问题. 同时结合了 deformable convolution 的稀疏空间采样能力和transformer的关系建模能力.

Deformable Attention 可以考虑小的采样位置集作为一个pre-filter突出所有feature map的关键特征,并且可以自然地扩展到融合多尺度特征,并且Multi-scale Deformable Attention本身就可以在多尺度特征图之间进行交换信息,不需要FPN操作.

4.1. Deformable Attention Module

给定一个query元素(如输出句子中的目标词)和一组key元素(如输入句子的源词),Multi-Head Attention 能够根据 query-key pairs 的相关性自适应的聚合key的信息. 为了让模型关注来自不同表示子空间和不同位置的信息,对multi-head的信息进行加权聚合.

其中 $q \in \Omega _q$ 表示query元素(特征表示为 $\mathcal{z}_q \in R^{C}$),$q \in \Omega_k$ 表示 key 元素(特征表示为 $\mathcal{z}_k \in R^{C}$),$C$ 是特征维度,$\Omega_q$ 和 $\Omega_k$ 分别为 $q$ 和 $k$ 的集合.

那么Transformer 的 Multi-Head Attention公式表示为:

$$ \text{MultiHeadAttn}(\mathcal{z}_1, x) = \sum_{m=1}^{M} W_m [\sum_{k \in \Omega_k} A_{mqk} \cdot W_{m}^{'} x_k] $$

其中,$m$ 指定 attention head, $W_m^{'} \in R^{c_v \times C}$ 和 $W_{m} \in R ^{C_v \times C}$ 是可学习参数.

注意力权重 $A_{mqk} \propto \text{exp} \lbrace \frac{z_q^T U_m^T V_m x_k}{\sqrt{C_v}} \rbrace$ 并且归一化 $\sum A_{mqk} = 1$. 其中,$U_m, V_m \in R ^{C_{v} \times C}$是可学习参数. 为了能够分辨不同空间位置,$z_q$ 和 $x_k$ 通常会引入positional embedding.

对于 DETR 中的 Transformer Encoder,query 和 key 元素都是 feature map 中的像素.

DETR 的 Multi-Head Attention 公式表示为:

$$ \text{Attn}(\mathcal{z}_q, x) = \sum_{m=1}^M W_m [\sum_{k=1}^K A_{mqk} \cdot W_{m}^{'} x] $$

其中,$K = H \times W$.

DETR 主要有两个问题:需要更多的训练时间来收敛对小目标的检测性能相对较差. 本质上是因为 Transfomer 的 Multi-Head Attention 会对输入图片的所有空间位置进行计算.

而 Deformable DETR 的 Deformable Attention 只关注参考点周围的一小部分关键采样点,为每个 query 分配少量固定数量的 key,可以缓解收敛性和输入分辨率受限制的问题.

给定一个输入feature map ,$q$ 表示为query元素(特征表示为),二维参考点表示为$p_q$,Deformable DETR 的 Deformable Attention公式表示为:

$$ \text{DeformAttn}(\mathcal{z}_q, p_q, x) = \sum_{m=1}^{M} W_m [\sum_{k=1}^{K} A_{mqk} \cdot W_{m}^{'} x (p_q + \Delta p_{mqk})] $$

其中,$m$ 指定 attention head, $k$ 指定采样的 key,$K$ 表示采样 key 的总和($K << HW$).

$\Delta p_{mqk}, A_{mqk}$ 分别表示第 $k$ 个采样点在第 $m$ 个 attention head 的采样偏移量和注意力权重. 注意力权重 $A_{mqk}$ 在 [0, 1] 范围内,且归一化 $\sum_{k=1}^K A_{mqk} = 1$.

$\Delta p_{mqk} \in R ^2$ 表示为无约束范围的二维实数.

因为 $p_q + \Delta p_{mqk}$ 为分数,需要采用双线性插值方法计算 $x(p_q + \Delta p_{mqk})$.

4.2.2. Multi-scale Deformable Attention Module

Deformable Attention可以很自然地扩展到多尺度的feature maps.

$\lbrace x^l \rbrace$ 表示为输入的多尺度feature maps,$x^l \in R ^{C \times H_l \times W_l}$.

$\hat{p}_q \in [0, 1]^2$ 表示为每个query元素 $q$ 的参考点 $p$ 的归一化坐标.

Deformable DETR 的 Multi-scale Deformable Attention公式表示为:

$$ \text{MSDeformAttn}(z_q, \hat{p}_q, \lbrace x^l \rbrace _{l=1}^L) = \sum_{m=1}^M W_m [\sum_{l=1}^L \sum_{k=1}^K A_{mlqk} \cdot W_m^{'} x^l (\phi_l(\hat{p}_q) + \Delta p_{mlqk})] $$

其中,$m$ 指定 attention head. $l$ 指定输入特征层,$k$ 指定采样的 key,$K$ 表示采样 key 的总数 ($K << HW$).

$\Delta p_{mlqk}, A_{mlqk}$ 分别表示第 $k$ 个采样点在第 $l$ 特征层的第 $m$ 个 attention head 的采样偏移量和注意力权重. 注意力权重 $A_{mlqk}$ 在 [0, 1] 范围内,且归一化 $\sum_{k=1}^K A_{mlqk} = 1$.

4.2.3. Deformable Transformer Encoder

将DETR中所有的 attention 替换成multi-scale deformable attention.

Encoder 的输入和输出都是具有相同分辨率的多尺度feature maps.

Encoder 从 ResNet 的 C3-C6 中抽取多尺度 feature maps $\lbrace x^l \rbrace _{l=1}^L (L=4)$,(C6 由 C5 进行 3x3 stride 2 卷积得到).

在 Encoder 中使用 multi-scale deformable attention,输出是和输入具有相同分辨率的多尺度feature maps. query 和 key 都来自多尺度 feature maps 的像素. 对于每个query像素,参考点是它本身. 为了判断 query 像素源自哪个特征层,除了 positional embedding 外,还添加了一个scale-level embedding $\lbrace e^l \rbrace _{l=1}^L$,不同于 positional embedding 的固定编码, scale-level embedding 随机初始化并且通过训练得到.

4.2.4. Deformable Transformer Decoder

Decoder 中有 cross-attention 和 self-attention 两种注意力. 这两种注意力的 query 元素都是 object queries.

在 cross-attention 中,object queries 从 feature maps 中提取特征,而 key 元素是 encoder输出的feature maps.

在 self-attention 中,object queries之间相互作用,key 元素也是object queries.

因为 Deformable Attention 是用于 key 元素的 feature maps 特征提取的,所以 decoder 部分,deformable attention 只替换 cross-attention.

因为 multi-scale deformable attention 提取参考点周围的图像特征,让检测头预测 box 相对参考点的偏移量,进一步降低了优化难度.

5. 复杂度分析

假设 query 和 key 的数量分别为 $n_q$ 和 $n_k$,其中($n_q = n_k$),维度为 $d$,key 采样点数为 $k$,图像的 feature map 大小为 $d \times H \times W$,卷积核尺寸为 $k$.

5.1. Convolution 复杂度

[1] - 为了保证输入和输出在第一个维度都相同,故需要对输入进行padding操作,因为这里 kernel size 为 $k$ (实际 kernel 的形状为 $k \times k \times d$).

[2] - 大小为 $k \times k$ 的卷积核一次运算复杂度为 $O(k^2 d)$,一共做了 $H \times W$ 次,姑复杂度为 $O(HW k^2 d)$.

[3] - 为了确保第三个维度相等,故需要 $d$ 个卷积核,所以卷积操作的时间复杂度为 $O(HWK^2 d^2)$.

5.2. Self-Attention 复杂度

$$ \text{Attention} (Q, K, V) = \text{softmax} (\frac{QK^T}{\sqrt{d_k}}) V $$

[1] - $Q, K, V$ 的计算复杂度为 $n \times d$.

[2] - 相似度计算 $QK^T$: $n \times d$ 与 $d \times n$ 运算,得到 $n \times n $ 矩阵,复杂度为 $O(n^2 d)$.

[3] - softmax 计算:对每行做 softmax,复杂度为 $O(n)$,则 $n$ 行的复杂度为 $O(n^2)$.

[4] - 加权和:$n \times n$ 与 $n \times d$ 运算,得到 $n \times d$ 矩阵,复杂度为 $O(n^2 d)$.

[5] - 最后,Self-Attention 的时间复杂度为 $O(n^2 d)$.

5.3. Transformer 复杂度

Self-Attention 的时间复杂度为 $O(n^2 d)$.

5.4. ViT

$N = H \times W / P^2$.

Self-Attention 的复杂度为 $O(H^2 W^2 d/P^4)$.

5.5. DETR

$n = H \times W$

Self-Attention 的复杂度为 $O(H^2 W^2 d)$.

5.6. Deformable DETR

Self-Attention的复杂度为 $O(HWd^2)$.

分析细节看原论文.

6. 几个问题

6.1. Q,K,V 如何理解?为什么不使用相同的 Q 和 K?

[1] - 从点乘的物理意义上讲,两个向量的点乘表示两个向量的相似度.

[2] - $Q, K, V$ 的物理意义是一样的,都表示同一个句子中不同 token 组成的矩阵. 矩阵的每一行,是表示一个 token 的 word embedding 向量. 假设一个句子“Hello, how are you?” 长度是6,embedding 维度是300,那么 $Q, K, V$ 都是 (6, 300) 的矩阵.

所以,$K$ 和 $Q$ 的点乘可以理解为计算一个句子中每个 token 相对于句子中其他 token 的相似度,这个相似度可以理解为 attetnion score,关注度得分. 虽然有了 attention score 矩阵,但是这个矩阵是经过各种计算后得到的,已经很难表示原来的句子了,而 $V$ 还代表着原来的句子,所以可以将attention score 矩阵与 $V$ 相乘,得到的是一个加权后的结果.

经过上面的解释,我们知道 $K$ 和 $Q$ 的点乘是为了得到一个 attention score 矩阵,用来对 $V$ 进行提炼. $K$ 和 $Q$ 使用不同的 $W_K$ 和 $W_Q$ 来计算,可以理解为是在不同空间上的投影. 正因为有了这种不同空间的投影,增加了表达能力,这样计算得到的 attention score 矩阵的泛化能力更高.

这里解释下该文作者理解的泛化能力,因为 $K$ 和 $Q$ 使用不同的 $W_K$ 和 $W_Q$ 来计算,得到的也是两个完全不同的矩阵,所以表达能力更强. 但如果不用 $Q$,直接拿 $K$ 和 $K$ 点乘的话,attention score 矩阵是一个对称矩阵,所以泛化能力很差,这个矩阵对 $V$ 进行提炼,效果会变差.

详细分析可以看链接文章

https://medium.com/dissecting-bert/dissecting-bert-part-1-d3c3d495cdb3

https://www.zhihu.com/question/319339652/answer/730848834

6.2. 如何Position Embedding更好?

目前还是一个开放问题,知乎上有一些优质的讨论,详细分析可以看链接文章

NLP: https://www.zhihu.com/question/347678607/answer/864217252

CV: https://zhuanlan.zhihu.com/p/99766566

6.3. ViT为什么要增加一个[CLS]标志位? 为什么将[CLS]标志位对应的向量作为整个序列的语义表示?

和 BERT 相类似,ViT 在序列前添加一个可学习的 [CLS] 标志位.

以BERT为例,BERT 在第一句前添加一个[CLS]标志位,最后一层该标志位对应的向量可以作为整句话的语义表示,从而用于下游的分类任务等.

将[CLS]标志位对应的向量作为整个文本的语义表示,是因为与文本中已有的其它词相比,这个无明显语义信息的符号会更“公平”地融合文本中各个词的语义信息,从而更好的表示整句话的语义.

6.4. 归纳偏好是什么?

归纳偏置在机器学习中是一种很微妙的概念:在机器学习中,很多学习算法经常会对学习的问题做一些假设,这些假设就称为归纳偏好(Inductive Bias).

归纳偏置可以理解为,从现实生活中观察到的现象中归纳出一定的规则(heuristics),然后对模型做一定的约束,从而可以起到“模型选择”的作用,即从假设空间中选择出更符合现实规则的模型. 可以把归纳偏好理解为贝叶斯学习中的“先验”.

在深度学习中,也使用了归纳偏好. 在CNN中,假设特征具有局部性(Locality)的特点,即把相邻的一些特征融合到一起,会更容易得到“解”;在RNN中,假设每一时刻的计算依赖于历史计算结果;还有attention机制,也是从人的直觉、生活经验归纳得到的规则.

而Transformer可以避免CNN的局部性归纳偏好问题. 举一个DETR中的例子.

训练集中没有超过13只长颈鹿的图像,DETR实验中创建了一个合成的图像来验证DETR的泛化能力,DERT可以完全找到合成的全部24只长颈鹿. 这证实了DETR避免了CNN的归纳偏好问题.

https://www.zhihu.com/question/264264203/answer/830077823

6.5. 二分图匹配? 匈牙利算法?

给定一个二分图 G,在 G 的一个子图M中,M的边集{E}中的任意两条边都不依附于同一个顶点,则称M是一个匹配. 求二分图最大匹配可以用匈牙利算法.

详细分析可以看链接文章

https://liam.page/2016/04/03/Hungarian-algorithm-in-the-maximum-matching-problem-of-bigraph/

https://zhuanlan.zhihu.com/p/62981901

6.6. BETR 的positional embedding、object queries和slot三者之间有何关系?

DETR可视化 decoder 预测得到的 20 个slot. 可以观察到每个slot学习到了特定区域的尺度大小. Object queries 从这个角度看,其实有点像 Faster-RCNN 等目标检测器的anchor,结合 encoder 的positional embedding 信息让每个 slot 往学习到的特定区域去寻找目标.

6.7. Transformer相比于CNN的优缺点?

优点:

Transformer关注全局信息,能建模更加长距离的依赖关系,而CNN关注局部信息,全局信息的捕捉能力弱.

Transformer避免了CNN中存在的归纳偏好问题.

缺点:

Transformer复杂度比CNN高,但是ViT和Deformable DETR给出了一些解决方法来降低Transformer的复杂度.

7. 总结

Transformer给图像分类和目标检测方向带来了巨大革新,分割、跟踪、视频等方向也不远了吧

NLP和CV的关系变的越来越有趣了,虽然争议很大,但是试想一下,NLP和CV两个领域能用一种范式来表达,该有多可怕,未来图像和文字是不是可以随心所欲的转来转去?可感知可推理的强人工智能是不是不远了?(想想就好)

向着NLP和CV的统一前进

Reference

[1] - Attention Is All You Need

[2] - An Image is Worth 16*16 Words: Transformers for Image Recognition at Scale

[3] - End-to-End Object Detection with Transformers

[4] - Deformable DETR: Deformable Transformers for End-to-End Object Detection

Last modification:June 16th, 2021 at 11:04 am