【论文精读】Pre-Trained Image Processing Transformer

出处

摘要

随着现代硬件计算能力的强劲增长,在大规模数据集上学习的预训练深度学习模型(如BERT,GPT-3)已经显示出比传统方法更有效的效果。这一重大进展主要得益于transformer及其变体网络模型的表现能力。本文对底层计算机视觉任务(如去噪、超分辨率和去噪)进行了研究,提出了一种新的预训练模型,即图像处理变换器(IPT)。为了最大限度地挖掘转换器的能力,我们提出利用著名的ImageNet基准测试来生成大量损坏的图像对。IPT模型在这些具有多头和多尾的图像上进行训练。此外,为了更好地适应不同的图像处理任务,还引入了对比学习。因此,经过微调后,预先训练的模型可以有效地应用于期望的任务。由于只有一个预先训练的模型,IPT在各种低级基准上的表现优于当前最先进的方法。

论文贡献

提出了一种处理低水平视觉任务(超分辨率、图像去雾、图像去噪)的预训练模型。

网络结构

在这里插入图片描述
IPT的总体结构由四部分组成:头部用于从输入受损图像(如含噪声图像和低分辨率图像)中提取特征,编解码器转换器用于恢复输入数据中的丢失信息,尾部用于将特征映射到恢复图像。

1.头部(Heads)

为了调整不同的图像任务,采用多头结构来分别处理每个任务,每个头由三个卷积层组成。计算过程可表示为:
f H = H i ( x ) (1) f_H=H^i(x)\tag{1} fH=Hi(x)(1)
其中, x x x为输入的原彩色图像, H i H^i Hi表示第 i i i个任务的头部。

2.编码器(Transformer encoder)

在将特征输入到编码器之前,需要对特征图像 f H ∈ R C × H × W f_H\in\mathbb{R^{C\times H\times W}} fHRC×H×W分割成块 f p i ∈ R P 2 × C , i = { 1 , . . . , N } f_{p_i}\in\mathbb{R}^{P^2\times C},i=\{1,...,N\} fpiRP2×C,i={1,...,N}其中 N = H W P 2 N=\frac{HW}{P^2} N=P2HW表示块的数量, P P P表示块的大小。为了保持每个块的位置信息,增加了可学习的位置编码 E p i ∈ R P 2 × C E_{p_i}\in\mathbb{R}^{P^2\times C} EpiRP2×C。结合每一个特征块组成 E p i + f p i E_{p_i}+f_{p_i} Epi+fpi的形式输入编码器中,编码器的输出 f E i ∈ R P 2 × C f_{E_i}\in\mathbb{R}^{P^2\times C} fEiRP2×C与输入块 f p i f_{p_i} fpi大小相同。计算方法可表示为:
y 0 = [ E p 1 + f p 1 , E p 2 + f p 2 , . . . , E p N + f p N ] y_0=[E_{p_1}+f_{p_1},E_{p_2}+f_{p_2},...,E_{p_N}+f_{p_N}] y0=[Ep1+fp1,Ep2+fp2,...,EpN+fpN]
q i = k i = v i = L N ( y i − 1 ) (2) q_i=k_i=v_i=LN(y_{i-1})\tag{2} qi=ki=vi=LN(yi1)(2)
y i ′ = M S A ( q i , k i , v i ) + y i − 1 y_i'=MSA(q_i,k_i,v_i)+y_{i-1} yi=MSA(qi,ki,vi)+yi1
y i = = F F N ( L N ( y i ′ ) ) + y i ′ , i = 1 , . . . , l y_i==FFN(LN(y_i'))+y_i',i=1,...,l yi==FFN(LN(yi))+yi,i=1,...,l
[ f E 1 , f E 2 , . . . , f E N ] = y l [f_{E_1},f_{E_2},...,f_{E_N}]=y_l [fE1,fE2,...,fEN]=yl
其中 l l l表示编码器中的层数,MSA表示多头自关注模块,FFN表示包含两个全连接层的前馈网络。

3.解码器(Transformer decoder)

解码器也采用相同的结构,由两个多头自关注(MSA)层和一个前馈网络(FFN)组成。这里使用了特定于任务的嵌入作为解码器的附加输入,这些特定的任务嵌入 E t i ∈ R P 2 × C E_t^i\in\mathbb{R}^{P^2\times C} EtiRP2×C被学习来为不同的任务解码特征。解码器的公式表达为:
z 0 = [ f E 1 , f E 2 , . . . , f E N ] z_0=[f_{E_1},f_{E_2},...,f_{E_N}] z0=[fE1,fE2,...,fEN]
q i = k i = L N ( z i − 1 ) + E t , v i = L N ( z i − 1 ) q_i=k_i=LN(z_{i-1})+E_t,v_i=LN(z_{i-1}) qi=ki=LN(zi1)+Et,vi=LN(zi1)
z i ′ = M S A ( q i , k i , v i ) + z i − 1 z_i'=MSA(q_i,k_i,v_i)+z_{i-1} zi=MSA(qi,ki,vi)+zi1
q i ′ = L N ( z i ′ ) + E t , k i ′ = v i ′ = L N ( z 0 ) (3) q_i'=LN(z_i')+E_t,k_i'=v_i'=LN(z_0)\tag{3} qi=LN(zi)+Et,ki=vi=LN(z0)(3)
z i ′ ′ = M S A ( q i ′ , k i ′ , v i ′ ) + z i ′ z_i''=MSA(q_i',k_i',v_i')+z_i' zi=MSA(qi,ki,vi)+zi
z i = F F N ( L N ( z i ′ ′ ) ) + z i ′ ′ , i = 1 , . . . , l z_i=FFN(LN(z_i''))+z_i'',i=1,...,l zi=FFN(LN(zi))+zi,i=1,...,l
[ f D 1 , f D 2 , . . . , f D N ] = y l [f_{D_1},f_{D_2},...,f_{D_N}]=y_l [fD1,fD2,...,fDN]=yl
其中 f D i f_{D_i} fDi为解码器的输出,将解码的 N N N个大小为 P 2 × C P^2\times C P2×C的特征块,重塑为尺寸为 C × H × W C\times H\times W C×H×W的特征图 f D f_D fD

尾部(Tails)

尾部和头部性质相同,使用多个尾部来处理不同的任务。计算公式为:
f T = T i ( f D ) (4) f_T=T^i(f_D)\tag{4} fT=Ti(fD)(4)
其中 T i ( i = 1 , . . . , N t ) T^i(i=1,...,N_t) Ti(i=1,...,Nt)表示第 i i i个任务的头部, N t N_t Nt表示任务的数量。输出 f T f_T fT是由特定任务决定的结果图像尺寸。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值