赞
踩
基于Image Transformers的双向编码、自监督视觉表征模型,使用Masked Image Modeling(MIM)
任务进行预训练。图1为预训练过程。
预训练前,利用discrete variational autoencoder(dVAE)
以自编码的方式训练词表大小为8192的“image tokenizer”,以将图片切分为离散的visual tokens。
预训练时,图像有image patches和visual tokens两种表示,首先将图片大小缩放至224x224,以网格法分割成14x14的patches,每个patch的大小为16x16,。随机掩盖部分image patches,即图中灰色的patches替换为[M]
,拉平作为视觉Transformer输入,预训练任务是将利用视觉Transformer输出的编码向量,还原掩盖的image patches对应的visual tokens。
使用网格分割法,将224x224的图片分割成14x14的patches,每个patch的大小为16x16。
以dVAE方式训练image tokenizer,模型包含tokenizer和decoder两部分。
Tokenizer q ϕ ( z ∣ x ) q_\phi(\bm z|\bm x) qϕ(z∣x)将图片像素 x \bm x x映射为离散的tokens z \bm z z,重构目标为 E z ∼ q ϕ ( z ∣ x ) [ log p ψ ( x ∣ z ) ] \mathbb{E}_{\bm z\sim q_\phi(\bm z|\bm x)}[\log p_\psi(\bm x|\bm z)] Ez∼qϕ(z∣x)[logpψ(x∣z)],使用Gumbel-softmax relaxation训练网络参数。
使用标准Transformer作为网络骨架。对于image patche序列
x
\bm x
x,使用矩阵
E
∈
R
P
2
C
×
D
\bm E\in \R^{P^2C\times D}
E∈RP2C×D,将image patch线性投影为patch embeddings。输入序列头部添加[S]
,并与1D位置嵌入相加后作为骨架网络输入。
随机将40%的image patches替换为可学习嵌入
e
[
M
]
∈
R
D
\bm e_{[\mathtt M]}\in\R^{D}
e[M]∈RD,经L层Transformer编码后得到隐状态
{
h
i
L
}
i
=
1
N
\{\bm h_{i}^L\}_{i=1}^N
{hiL}i=1N,对于每一个掩盖的image patch,使用softmax分类层预测与之对应的visual tokens,预训练目标是最大化正确visual tokens的对数似然:
max
∑
x
∈
D
E
[
∑
i
∈
M
log
p
M
I
M
(
z
i
∣
x
M
)
]
,
p
M
I
M
(
z
′
∣
x
M
)
=
softmax
z
′
(
W
c
h
i
L
+
b
c
)
\max \sum_{\bm x\in\mathcal D}\mathbb E\bigg[\sum_{i\in\mathcal M}\log p_{\mathtt{MIM}}(z_i|x^{\mathcal M})\bigg],\quad p_{\mathtt{MIM}(z'|x^{\mathcal M})}=\text{softmax}_{z'}(\bm W_c\bm h_i^L+\bm b_c)
maxx∈D∑E[i∈M∑logpMIM(zi∣xM)],pMIM(z′∣xM)=softmaxz′(WchiL+bc)
式中:
算法1 Blockwise Masking
输入: N( = h × w =h\times w =h×w) image patches
输出: 掩盖位置 M \mathcal M M
M ← { } \mathcal M \leftarrow \{\} M←{},重复以下步骤
采样blocksize, s ← R a n d ( 16 , 0.4 N − ∣ M ∣ ) s\leftarrow \mathtt{Rand}(16,0.4N-|\mathcal M|) s←Rand(16,0.4N−∣M∣)
采样行比率, r ← R a n d ( 0.3 , 1 / 0.3 ) r\leftarrow \mathtt{Rand}(0.3,1/0.3) r←Rand(0.3,1/0.3)
计算采样行列数, a ← s ⋅ r ; b ← s / r a\leftarrow \sqrt{s·r}; b\leftarrow \sqrt{s/r} a←s⋅r ;b←s/r
采样block的左上点, t ← R a n d ( 0 , h − a ) ; l ← R a n d ( 0 , w − b ) t\leftarrow \mathtt{Rand}(0,h-a);l\leftarrow \mathtt{Rand}(0,w-b) t←Rand(0,h−a);l←Rand(0,w−b)
合并采样结果, M ← M ⋃ { ( i , j ) : i ∈ [ t , t + a ] , j ∈ [ l , l + b ] } \mathcal M\leftarrow \mathcal M \bigcup \{(i,j):i\in[t, t+a], j\in[l,l+b]\} M←M⋃{(i,j):i∈[t,t+a],j∈[l,l+b]}
直到: ∣ M ∣ > 0.4 N |\mathcal M|>0.4N ∣M∣>0.4N
返回: M \mathcal M M
BEiT使用两阶段预训练,一阶段预训练tokenizer,二阶段预训练MIM,预训练可被看作为变分自编码器。(没看懂)
网络架构与ViT-Base一致,12层Transformer,隐藏层维度768,注意力头12,前向网络中间维度3072。patch size为16x16,image tokenizer直接使用[RPG+21],词表大小为8192。
预训练数据集ImageNet-1K,含120万张图片,使用随机缩放、裁剪、水平翻转、色彩抖动图像增强策略,图片分辨率为224x224。使用网格法分割成14x14个image patches,并随机掩盖至多75个patches(约40%)。
预训练500k步,800epochs,batch size为2k,Adam β 1 , β 2 \beta1,\beta2 β1,β2为0.9和0999,学习率1.5e-3,warmup 10epochs,学习率余弦衰减,weight decay 0.05,随机深度0.1,不使用dropout。16 V100 32GB耗时5天。
所有参数初始化范围至[-0.02, 0.02]稳定训练,缩放每一层自注意力和前馈网络的输出矩阵(每层的最后一层线性投影层)至 1 2 l \frac{1}{\sqrt{2l}} 2l 1。
使用semantic-rich tokenizer作为重建目标,以系统的方式将MIM从像素级提升为语义级。通过向量化知识蒸馏训练tokenizer,可将连续语义空间离散为紧凑代码,然后在通过MIM任务重建image patches中的被掩盖的visual tokens。此外,还引入了patch aggregation strategy,可增强discrete image patches中的全局语义表示。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。