Transformer学习总结二

这一总结主要是基于上一个对transformer的理解,对复旦大学这篇论文

https://arxiv.org/pdf/2012.15840.pdf

的个人解读。

1.segmentation transformer

整体结构:

在这里插入图片描述
图1:(a)首先将图像分割为固定尺寸的块(patches),对所有块进行线性标记,并加入位置标记,将其结果序列喂入标准的transformer编码器。为了进行逐像素的分割,我们介绍了不同的解码器设计:(b)渐进式上采样(SETR-PUP)©多级特征聚合(SETR-MLA)

将图像序列化:

如上图1所示,采用一维的feature embeddings序列 Z ∈ R L × C Z \in \mathbb{R}^{L \times C} ZRL×C作为输入。 L L L 代表序列的长度, C C C代表隐藏的通道尺寸。图像序列化任务就是将输入图像 x ∈ R H × W × 3 x \in \mathbb{R}^{H\times W \times 3} xRH×W×3 转换为 Z Z Z。最直接的方法就是将图像像素铺平为尺寸为3HW的1维向量。对于典型图像尺寸 480 ( H ) × 480 ( W ) × 3 480(H) \times 480(W) \times 3 480(H)×480(W)×3,其结果向量的尺寸为691200。但是,将每个像素标记为transformer的序列输入是不现实的,在计算时间和空间上都不允许。

典型的语义分割的编码设计将2D图像 x ∈ R H × W × C x \in \mathbb{R}^{{H}\times{W} \times C} xRH×W×C降采样为特征图 x f ∈ R H 16 × W 16 × C x_f \in\mathbb{R}^{\frac{H}{16} \times \frac {W}{16} \times C} xfR16H×16W×C,因此可以设置transformer的输入序列长度L为 H 16 × W 16 = H W 256 \frac{H}{16} \times \frac{W}{16} = \frac{HW}{256} 16H×16W=256HW。通过这种方法可以将transformer的输出序列变形为目标特征图 x f x_f xf

为了获取 H W 256 \frac{HW}{256} 256HW长度的序列输入,我们将图像 x ∈ R H × W × 3 x \in \mathbb{R}^{H \times W \times 3} xRH×W×3按照 H 16 × W 16 \frac{H}{16} \times \frac {W}{16} 16H×16W进行划分,将划分的栅格平铺成一个序列。通过线性映射 f : p → e ∈ R C f: p \rightarrow e \in {\mathbb{R}^{C}} f:peRC将每一个向量化的块p映射为C维度的嵌入空间,所以对于一幅输入图像x我们可以获得一个1维的嵌入块序列。为了编码每一个图像块的空间信息,还需要一个特定的嵌入向量 p i p_i pi加入到 e i e_i ei组成最后的序列 E ∈ { e 1 + p 1 , e 2 + p 2 , . . . , e L + p L } E \in \{ e_1+p_1, e_2+p_2,...,e_L+p_L\} E{e1+p1,e2+p2,...,eL+pL}。通过这种方法,尽管transformer的自注意力是无序的,仍然可以保有其空间信息。

Transformer

给定1D的嵌入序列E作为输入,一个纯transformer的编码器被应用去学习特征表示。这意味这每一个transformer层有一个全局的感受野,解决了当前FCN编码器感受野有限的问题。transformer编码器包含 L e L_e Le层,这些层包括多头的自注意力块multi-head self-attention(MSA)和多层感知机Multilayer Perception(MLP)。对于每一个层l,自注意力的输入是一个三元组(query, key, value),其通过输入 Z l − 1 ∈ R L × C Z^{l-1} \in {\mathbb{R}^{L \times C}} Zl1RL×C进行计算:
q u e r y = Z l − 1 W Q , k e y = Z l − 1 W K , v a l u e = Z l − 1 W V query = Z^{l-1}{W_Q},key=Z^{l-1}{W_K},value=Z^{l-1}{W_V} query=Zl1WQ,key=Zl1WK,value=Zl1WV
其中, W Q / W K / W V ∈ R C × d W_Q/W_K/W_V \in\mathbb{R}^{C \times d} WQ/WK/WVRC×d是三个线性投射层的参数,d是(query,key,value)的维度。self-attention(SA) 表示为:
S A ( Z l − 1 ) = Z l − 1 + s o f t m a x ( Z l − 1 W Q ( Z W K ) T d ) ( Z l − 1 W V ) SA(Z^{l-1}) = Z^{l-1} + softmax(\frac{Z^{l-1}W_Q{(ZW_K)^T}}{\sqrt d})(Z^{l-1}W_V) SA(Zl1)=Zl1+softmax(d Zl1WQ(ZWK)T)(Zl1WV)
MSA是m个独立的SA操作的扩展并且将他们拼接的输出作为进行投射:
M S A ( Z l − 1 ) = [ S A 1 ( Z l − 1 ) ; S A 2 ( Z l − 1 ) ; . . . ; S A m ( Z l − 1 ) ] W O MSA(Z^{l-1} )= [SA_1(Z^{l-1}); SA_2(Z^{l-1}); ...;SA_m(Z^{l-1})]W_O MSA(Zl1)=[SA1(Zl1);SA2(Zl1);...;SAm(Zl1)]WO,其中 W O ∈ R m d × C W_O \in {\mathbb{R}^{md \times C}} WORmd×C
其中,d被设置为 C / m C /m C/m。MSA的输出经过MLP块进行转换并通过参差进行连接。最后的输出为:
Z l = M S A ( Z l − 1 ) + M L P ( M S A ( Z l − 1 ) ) ∈ R L × C Z^{l}=MSA(Z^{l-1})+MLP(MSA(Z^{l-1})) \in \mathbb{R}^{L \times C} Zl=MSA(Zl1)+MLP(MSA(Zl1))RL×C
注意,层的归一化在MSA和MLP块之前被应用。我们用 { Z 1 , Z 2 , Z 3 , . . . , Z L e } \{Z^1,Z^2,Z^3,...,Z^{L_e}\} {Z1,Z2,Z3,...,ZLe}代表transformer层的特征。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值