来自Transformer的降维打击!北京大学等最新发布论文,联合提出图像处理Transformer。通过对low-level计算机视觉任务,如降噪、超分、去雨等进行研究,提出了一种新的预训练模型IPT,占领low-level多个任务的榜首。

本文首发自极市平台,作者@Happy,转载需获授权。

paper: https://arxiv.org/abs/2012.00364

该文是清华大学&华为诺亚等联合提出的一种图像处理transformer。Transformer自提出之日起即引起极大的轰动,BERT、GPT-3等模型迅速占用NLP各大榜单;后来Transformer被用于图像分类中同样引起了轰动;再后来,transformer在目标检测任务中同样引起了轰动。现在Transformer再出手,占领了low-level多个任务的榜首,甚至它在去雨任务上以1.6dB超越了已有最佳方案。

Abstract

随机硬件水平的提升,在大数据集上预训练的深度学习模型(比如BERT,GPT-3)表现出了优于传统方法的有效性。transformer的巨大进展主要源自其强大的特征表达能力与各式各样的架构。

在这篇论文中,作者对low-level计算机视觉任务(比如降噪、超分、去雨)进行了研究并提出了一种新的预训练模型:IPT(image processing transformer)。为最大挖掘transformer的能力,作者采用知名的ImageNet制作了大量的退化图像数据对,然后采用这些训练数据对对所提IPT(它具有多头、多尾以适配多种退化降质模型)模型进行训练。此外,作者还引入了对比学习以更好的适配不同的图像处理任务。经过微调后,预训练模型可以有效的应用不到的任务中。仅仅需要一个预训练模型,IPT即可在多个low-level基准上取得优于SOTA方案的性能。

上图给出了所提方案IPT与HAN、RDN、RCDNet在超分、降噪、去雨任务上的性能对比,IPT均取得了0.4-2.0dB不等的性能提升。

Method

为更好的挖掘transformer的潜力以获取在图像处理任务上的更好结果,作者提出了一种ImageNet数据集上预训练的图像处理transformer,即IPT。

IPT architecture

上图给出了IPT的整体架构示意图,可以看到它包含四个成分:

  • 用于从输入退化图像提取特征的Heads;
  • encoder与decoder模块用于重建输入数据中的丢失信息;
  • 用于输出图像重建的Tails。

Heads

为适配不同的图像处理任务,作者提出采用多头(multi-head每个头包含三个卷积层)架构以分别处理不同的任务。假设输入图像表示为x∈R3×H×Wx \in R^{3\times H \times W}xR3×H×W,每个头可以生成特征fH∈RC×H×Wf_{H} \in R^{C \times H \times W}fHRC×H×W(注:C默认64)。故多头架构的计算过程可以描述为:
fH=Hi(x),i=(1,⋯,Nt)f_H = H^i(x), i=(1,\cdots,N_t) fH=Hi(x),i=(1,,Nt)
其中NtN_tNt表示图像处理任务个数。

Transformer encoder

在将前述特征送入到transformer之前,需要将输入特征拆分成块,每个块称之为“word”。具体来讲,输入特征fH∈RC×H×Wf_{H} \in R^{C \times H \times W}fHRC×H×W将被拆分为一系列块fpi∈Rp2×C,i={1,⋯,N}f_{p_i} \in R^{p^2 \times C}, i=\{1, \cdots, N\}fpiRp2×C,i={1,,N},其中N=HWP2N=\frac{HW}{P^2}N=P2HW表示特征块的数量,P表示特征块尺寸。

为编码每个块的位置信息,作者还在encoder里面添加了可学习的位置编码信息Epi∈RP2×CE_{p_i} \in R^{P^2 \times C}EpiRP2×C。这里的encoder延续了原始transformer,采用了多头自注意力模块和前向网络。

encoder的输出表示为fEi∈RP2×Cf_{E_i} \in R^{P^2 \times C}fEiRP2×C,它与输入块尺寸相同,encoder的计算过程描述如下:

y0=[Ep1+fp1,Ep2+fp2,⋯,EpN+fpN]y_0 = [E_{p_1} + f_{p_1}, E_{p_2} + f_{p_2}, \cdots, E_{p_N} + f_{p_N}] y0=[Ep1+fp1,Ep2+fp2,,EpN+fpN]

qi=ki=vi=LN(yi−1)q_i = k_i = v_i = LN(y_{i-1}) qi=ki=vi=LN(yi1)

yi′=MSA(qi,ki,vi)+yi−1y_i^{'} = MSA(q_i, k_i, v_i) + y_{i-1} yi=MSA(qi,ki,vi)+yi1

yi=FFN(LN(yi′))+yi′,i=1,⋯,ly_i = FFN(LN(y_i^{'})) + y_i^{'} , i = 1, \cdots, l yi=FFN(LN(yi))+yi,i=1,,l

[fE1,fE2,⋯,fEN]=yl,[f_{E_1}, f_{E_2}, \cdots, f_{E_N}] = y_l, [fE1,fE2,,fEN]=yl,

其中lll表示encoder的层数,MSA表示多头自注意力模块,FFN表示前馈前向网络(它仅包含两个全连接层)。

Transformer decoder

decoder采用了与encoder类似的架构并以encoder的输出作为输入,它包含两个MSA与1个FFN。它与原始transformer的不同之处在于:采用任务相关的embedding作为额外的输入,这些任务相关的embeddingEti∈RP2×C,i={1,⋯,Nt}E_t^i \in R^{P^2 \times C},i=\{1, \cdots, N_t\}EtiRP2×C,i={1,,Nt}用于对不同任务进行特征编码。decoder的计算过程描述如下:

z0=[fE1,fE2,⋯,fEN]z_0 = [f_{E_1}, f_{E_2}, \cdots, f_{E_N}] z0=[fE1,fE2,,fEN]

qi=ki=LN(zi−1)+Et,vi=LN(zi−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)

zi′=MSA(qi,ki,vi)+zi−1z_i^{'} = MSA(q_i,k_i, v_i) + z_{i-1} zi=MSA(qi,ki,vi)+zi1

qi′=LN(zi′)+Et,ki′=vi′=LN(z0)q_i^{'} = LN(z_i^{'}) + E_t, k_i^{'} = v_i^{'} = LN(z_0) qi=LN(zi)+Et,ki=vi=LN(z0)

zi′′=MSA(qi′,ki′,vi′)+zi′z_i^{''} = MSA(q_i^{'}, k_i^{'}, v_i^{'}) + z_i^{'} zi=MSA(qi,ki,vi)+zi

zi=FFN(LNR(zi′′))+zi′′,i=1,⋯,lz_i = FFN(LNR(z_i^{''})) + z_i^{''}, i=1,\cdots,l zi=FFN(LNR(zi))+zi,i=1,,l

[fD1,fD2,⋯,fDN]=zl[f_{D_1}, f_{D_2}, \cdots, f_{D_N}] = z_l [fD1,fD2,,fDN]=zl

其中fDi∈RP2×Cf_{D_i} \in R^{P^2 \times C}fDiRP2×C表示decoder的输出。decoder输出的N个尺寸为P2×CP^2 \times CP2×C的块特征将组成特征fD∈RC×H×Wf_D \in R^{C\times H \times W}fDRC×H×W

Tails 这里的Tails属性与Head相同,作者同样采用多尾以适配不同的人物,其计算过程可以描述如下:
fT=Ti(fD),i={1,⋯,Nt}f_T = T^i(f_{D}) , i=\{1, \cdots, N_t\} fT=Ti(fD),i={1,,Nt}
最终的输出fTf_TfT即为重建图像,其尺寸为3×H′×W′3\times H^{'} \times W^{'}3×H×W。输出图像的尺寸受任务决定,比如x2超分而言,H′=2H,W′=2WH^{'} = 2H, W^{'} = 2WH=2H,W=2W

Pre-training on ImageNet

除了transformer的自身架构外,成功训练一个优化transformer模型的关键因素为:大数据集。而图像处理任务中常用数据集均比较小,比如图像超分常用数据DIV2K仅仅有800张。针对该问题,作者提出对知名的ImageNet进行退化处理并用于训练所提IPT模型。

这里的退化数据制作采用了与图像处理任务中相同的方案,比如超分任务中的bicubic下采样,降噪任务中的高斯噪声。图像的退化过程可以描述如下:

Icorrupted=f(Iclean)I_{corrupted} = f(I_{clean}) Icorrupted=f(Iclean)

其中f表示退化变换函数,它与任务相关。对于超分任务而言,fsrf_{sr}fsr表示bicubic下采样;对于降噪任务而言,fnoise(I)=I+ηf_{noise}(I) = I + \etafnoise(I)=I+η。IPT训练过程中的监督损失采用了常规的L1L_1L1损失,描述如下:
Lsupervised=∑i=1NtL1(IPT(Icorruptedi),Iclean)\mathcal{L}_{supervised} = \sum_{i=1}^{N_t} L_1(IPT(I_{corrupted}^i), I_{clean}) Lsupervised=i=1NtL1(IPT(Icorruptedi),Iclean)

上式同样表明:所提方案IPT同时对多个图像处理任务进行训练。也就说,对于每个batch,随机从多个任务中选择一个进行训练,每个特定任务对应特定的head和tail。在完成IPT预训练后,我们就可以将其用于特定任务的微调,此时可以移除掉任务无关的head和tail以节省计算量和参数量。

除了上述监督学习方式外,作者还引入了对比学习以学习更通用特征以使预训练IPT可以应用到未知任务。对于给定输入xjx_jxj(随机从每个batch中挑选),其decoder输出块特征描述为fDij∈RP2×C,i={1,⋯,N}f_{D_i}^j \in R^{P^2 \times C, i=\{1, \cdots, N\}}fDijRP2×C,i={1,,N}。作者期望通过对比学习最小化同一图像内的块特征距离,最大化不同图像的块特征距离,这里采用的对比学习损失函数定义如下:

l(fDi1j,fDi2j)=−logexp(d(fDi1j,fDi2j))∑k=1BIk≠jexp(d(fDi1j,fDi2j))l(f_{D_{i_1}}^j, f_{D_{i_2}}^j) = -log \frac{exp(d(f_{D_{i_1}}^j, f_{D_{i_2}}^j))}{\sum_{k=1}^B \mathbb{I}_{k\ne j} exp(d(f_{D_{i_1}}^j, f_{D_{i_2}}^j))} l(fDi1j,fDi2j)=logk=1BIk=jexp(d(fDi1j,fDi2j))exp(d(fDi1j,fDi2j))

Lconstrastive=1BN2∑i1=1N∑i2=1N∑j=1Bl(fDi1j,fDi2j)\mathcal{L}_{constrastive} = \frac{1}{BN^2} \sum_{i_1=1}^N \sum_{i_2=1}^N \sum_{j=1}^B l(f_{D_{i_1}}^j, f_{D_{i_2}}^j) Lconstrastive=BN21i1=1Ni2=1Nj=1Bl(fDi1j,fDi2j)

其中d(a,b)=aTb∥a∥∥b∥d(a,b) = \frac{a^Tb}{\|a\| \|b\|}d(a,b)=abaTb表示cosine相似性。为更充分的利用监督与自监督信息,作者定义了如下整体损失:
LIPT=λ⋅Lconstrastive+Lsupervised\mathcal{L}_{IPT} = \lambda \cdot \mathcal{L}_{constrastive} + \mathcal{L}_{supervised} LIPT=λLconstrastive+Lsupervised

Experiments

Datasets

作者采用ImageNet数据制作训练数据,输入图像块大小为48×4848 \times 4848×48,大约得到了10M图像数据。采用了6中退化类型:x2、x3、x4、noise-30、noise-50以及去雨。

Training&Fine-tuning

作者采用32个NVIDIA Tesla V100显卡进行IPT训练,优化器为Adam,训练了300epoch,初始学习率为5e−55e^{-5}5e5,经200epoch后衰减为2e−52e^{-5}2e5,batch=256。在完成IPT预训练后,对特定任务上再进行30epoch微调,此时学习率为2e−52e^{-5}2e5

Super-resolution

下表&下图给出了超分方案在图像超分任务上的性能与视觉效果对比。可以看到:

  • IPT取得了优于其他SOTA超分方案的效果,甚至在Urban100数据集上以0.4dB优于其他超分方案;
  • IPT可以更好重建图像的纹理和结构信息,而其他方法则会导致模糊现象。

Denoising

下表&下图给出了所提方法在降噪任务上的性能与视觉效果对比,可以看到:

  • 在不同的噪声水平下,IPT均取得了最佳的降噪指标,甚至在Urban100数据上提升高达2dB
  • IPT可以很好的重建图像的纹理&结构信息,而其他降噪方法则难以重建细节信息。

Deraining

下表&下图给出了所提方法在图像去雨任务上的性能与视觉效果对比。可以看到:

  • 所提方法取得了最好的指标,甚至取得了1.62dB的性能提升;
  • IPT生成的图像具有与GT最详尽,且具有更好的视觉效果。

Generalization Ability

为说明所提方法的泛化性能,作者采用了未经训练的噪声水平进行验证,结果见下表。可以看到:尽管未在该其噪声水平数据上进行训练,所提IPT仍取得了最佳的指标。

Ablation Study

下图对比了IPT与EDSR在不同数量训练集上的性能对比,可以看到:当训练集数量较少时,EDSR具有更好的指标;而当数据集持续增大后,EDSR很快达到饱和,而IPT仍可持续提升并大幅超过了EDSR。

下表给出了对比损失对于模型性能影响性分析(x2超分任务)。当仅仅采用监督方式进行训练时,IPT的指标为38.27;而当引入对比学习机制后,其性能可以进一步提升0.1dB。这侧面印证了对比学习对于IPT预训练的有效性。

全文到此结束,对比感兴趣的同学建议查看原文。

作者介绍:Happy,一个爱“胡思乱想”的AI行者。欢迎大家联系极市小编(微信ID:fengcall19)加入极市原创作者行列

Transformer再下一城!low-level多个任务榜首被占领,北大华为等联合提出预训练模型IPT相关推荐

  1. CVPR 2021 | Transformer进军low-level视觉!北大华为等提出预训练模型IPT

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 作者丨Happy   来源丨极市平台 导读 来自Transformer的降维打击!北京大学.华为诺亚等最新发 ...

  2. 不用卷积,也能生成清晰图像!Transformer再下一城

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 「attention is really becoming『all you need』.」 最 ...

  3. Transformer再下一城!DeepMind新模型自动生成CAD草图,网友:建筑设计要起飞了

    本文转载自:机器之心  |  作者:力元 深度学习的灵活性恰好适合于复杂的 CAD 设计,DeepMind 的研究者基于 CAD 草图与自然语言建模的相似性,提出了自动生成 CAD 草图的机器学习模型 ...

  4. ICCV 2021 Oral | Transformer再下一城!百度南大提出神经绘画网络:Paint Transformer

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 杨净 发自 凹非寺 转载自:量子位(QbitAI) AI已经能教你画油画了. 随便给一张图,笔画序列秒秒钟呈 ...

  5. 视频超分,Transformer再下一城之VSR-Transformer

    论文:https://arxiv.org/pdf/2106.06847.pdf 代码:https://github.com/caojiezhang/VSR-Transformer 编者言:ETHz(苏 ...

  6. Serverless 全能选手,再下一城

    简介:近日,中国信通院(即工信部电信研究院),在2021可信云大会上发布了<可信云 Serverless 平台技术能力>和<可信云 Serverless 应用建设成效>的评测结 ...

  7. 微软 Azure 再下一城:收购 Kinvolk,改进开源 Linux

    微软正在以实际证明,做开源,他们是认真的.如今依靠开源,Azure 也再下一城. 整理 | 苏宓 出品 | CSDN(ID:CSDNnews) 4 月 29 日,微软宣布收购专注于构建和改进开源 Li ...

  8. 嘉兴碧桂园云栖里土拍价格_奥山深耕嘉兴,再下一城!以总价5.73亿元竞得王店镇宅地...

    点击上方蓝字"嘉兴房产圈"一起玩 时隔1周,嘉兴市本级土地市场迎来了8月第二场宅地拍卖. 今日(8月27日),一宗位于王店镇花园路旁的宅地迎来出让,即2020嘉秀洲-030号地块, ...

  9. 华为自研服务器芯片再下一城,从中国移动招标中获取近两成份额

    中国移动近日公布的服务器招标中,华为自研的鲲鹏服务器芯片取得了16.55%的市场份额,显示出它的自研服务器芯片获得越来越多国内客户的认可. 消费者认识华为都是因为华为手机,毕竟华为手机曾在国内市场取得 ...

最新文章

  1. 和12岁小同志搞创客开发:如何选择合适的控制器?
  2. Java中比较对象的两个接口Comparable接口和Comparator接口
  3. 【数据库】Ubuntu12.04安装配置Redis3.0
  4. 字符串转二进制 python_将字符串转换为二进制
  5. 面试题编程题11-python 生成随机数
  6. 数字化转型生态的三个层级(平台 场景 工具/技术)
  7. 不同浏览器对回车提交表单的处理办法(转载)
  8. python中的模块与类
  9. MongoDB Replica Set 选举过程
  10. getch函数的使用与说明
  11. 晶振 负载电容 匹配电容
  12. 10000marker_AL10000 DNA Marker使用说明书
  13. Flex和Flash一起使用开发项目各取所长
  14. 前端——获取手机验证码案例
  15. NightWatch启动chrome时,弹出设置页面:Microsoft Windows恶意删除工具...
  16. 中兴面试程序-年龄问题
  17. UG 10.0 NX 安装视频教程
  18. 简单制作两个网站的布局(只做了首页)
  19. 美国大学计算机专业研究生,USNews美国大学计算机理论专业研究生排名
  20. 【干货】安防监控工程选择POE交换机的五大优势总结!

热门文章

  1. IOS开发之手势—UIGestureRecognizer 共存
  2. easyScholar——文献数据库插件
  3. 页面怎么把关键字保留下来_怎么做seo优化,以及网站SEO优化计划!
  4. scanf不可以读空格不可以读string
  5. C++ | 从键盘输入任意多个英语单词,统计同一个英语单词被输入几次,最后对英文单词按字典顺序输出(C语言/C++/Java)
  6. Qt学习(十):QT连接mysql(增加、删除、遍历)
  7. linux服务器网页出现错误,常见网页错误 | Linux 主机 (cPanel) - GoDaddy 帮助 SG
  8. 用C语言写一个球的程序,12个球的程序.....
  9. oracle时区参考表,ORACLE 时区
  10. matlab小波三维图,matlab小波包变换估计时变功率谱三维图出图和理想不一样