本文是一个基于transformer的预训练通用模型,针对低级视觉任务还没有人提出预训练的模型,所以作者使用了超大数据集
训练出了image processing transformer (IPT)。可以微调
后应用于图像重建、去噪、去雨等等。具体结构作者使用了一个多头多尾共享躯干
的结构。应对不同的任务,有针对性不同的头部和尾部,分别使用不同的处理方式。中间是一个transformer编解码器结构。将头部输出的特征图像unfold成”词向量“形式和位置嵌入相加后输入encoder,encoder是常规的结构,包括一个LN和MSA接残差、LN和FFN接残差(FNN有两层全连接)。解码器结构和常规transformer也差不多,但是多了一个特定任务标签嵌入,加入在decoder输入第一次MSA的Q和K上、第二次Q的上。尾部也是多个针对特定任务的结构,用于还原图像尺寸。
数据集是使用ImageNet自己处理的,因为需要大量数据才能训练出较好的预训练模型。
LOSS使用有监督的L1L损失和对比学习损失函数。
原文链接:IPT:Pre-Trained Image Processing Transformer
源码地址:
https://github.com/huawei-noah/Pretrained-IPT
and
https://gitee.com/mindspore/mindspore/tree/master/model_zoo/research/cv/IPT
IPT:Pre-Trained Image Processing Transformer[CVPR 2021]
Abstract
随着现代硬件计算能力的强劲增长,在大规模数据集上学习的预训练的深度学习模型(如BERT、GPT-3)已显示出其比传统方法更有效。这一巨大进步主要归功于transformer及其变体架构的表示能力。
在本文中,作者试图在低级计算机视觉任务(例如去噪、超分辨率和去雨),也开发一个预训练模型,即图像处理Transformer——image processing transformer (IPT)。为了最大限度地挖掘transformer的性能,作者使用了著名的ImageNet基准生成大量损坏的图像对。IPT模型在这些图像上进行多头多尾训练。此外,为了更好地适应不同的图像处理任务,还引入了对比学习。因此,经过微调后,预训练的模型可以有效地用于所需的任务。虽然只有一个预训练的模型,IPT在各种低水平基准上的表现优于当前最先进的方法。
1 Introduction
图像处理是计算机视觉系统的低级部分的一个组成部分。图像处理的结果会在很大程度上影响后续高级部分对图像数据进行识别和理解。由于许多图像处理任务都是相关的,因此很自然地,人们会期望在一个数据集上预训练的模型可以对另一个数据集有所帮助。但很少有研究将预训练推广到图像处理任务中。
现在,在自然语言处理和计算机视觉方面进行预训练很常见。
- 目标检测模型的主干通常是在ImageNet分类上预训练的,包括AlexNet、VGGNet和ResNet。
- 开创性的Transformer也已广泛应用于许多自然语言处理(NLP)任务,如翻译和问答。基本都是大型文本语料库上预训练基于transformer的模型,并在特定于任务的数据集上对其进行微调。
- Transformer的变体,如Bert和GPT-3,进一步丰富了训练数据,提高了预训练的能力。
已经有学者尝试将Transformer推广到计算机视觉领域。例如,Wang等人和Fu等人应用了基于自注意的模型来捕捉图像上的全局信息;Carion等人提出DERT使用transformer架构进行端到端目标检测;Dosovitskiy等人引入了视觉Transformer(ViT),将输入图像处理为16×16的token,并在图像识别方面取得了优异的效果。
图像处理任务的预训练方法需要解决两个问题:
- 任务特定的数据受到限制。这一问题在涉及付费数据或数据隐私的图像处理任务中更加严重,如医学图像和卫星图像。各种不一致因素(例如摄像机参数、照明和天气)可能会进一步干扰用于训练的数据分布。
- 在应用测试前,并不知道将用于哪种类型的图像处理任务。因此,必须准备一系列的图像处理模块。各个模块有明确的任务目标,但一些潜在的部分可以共享数据。
在本文中,作者使用transformer架构开发了一个预训练的图像处理模型,即图像处理transformer(IPT)。由于预训练模型需要与不同的图像处理任务兼容,包括超分辨率、去噪和去雨,整个网络由多对对应于不同任务的头部和尾部以及单个共享体组成。
由于需要使用大规模数据集
挖掘Transformer的潜力,用大量、多样性的图像来训练IPT模型。为此,选择了ImageNet基准,它包含1000个类别的各种高分辨率图像。对于ImageNet中的每个图像,使用几种精心设计的操作来为不同的任务生成多个损坏的副本。例如,超分辨率任务的训练样本是通过对原始图像进行下采样生成的。用于IPT训练的整个数据集包含约1000多万张图像 。然后在庞大的数据集上训练transformer架构。
训练图像被输入到特定的头部
,生成的特征被裁剪成小块(即“token”),然后展平成序列。Transformer
处理展开的特征,编码器和解码器分别使用位置和任务嵌入。此外,根据特定任务,尾部
被强制预测具有不同输出大小的原始图像。此外,为了更好地适应不同的图像处理任务,还引入了不同输入块之间关系的对比损失。提出的图像处理Transformer是以端到端的方式学习的。在多个基准上进行的实验结果表明,经过预训练的IPT模型可以在微调后显著增强,从而超过大多数现有方法。
2 Method
2.1 IPT architecture
IPT的总体架构由四个部分组成:头部
用于从输入损坏图像中提取特征,编码器
、解码器
(用于恢复输入数据中缺失信息)以及用于将特征映射为恢复图像的尾部
。
Heads:
为了应对不同的图像处理任务,使用了一种多头部结构来分别处理每个任务,其中每个头部由三个卷积层组成。
输入图像表示为 x ∈ R 3 × H × W x∈ R^{3×H×W} x∈R3×H×W,头部生成特征图 f H ∈ R C × H × W f_H∈ R^{C×H×W} fH∈RC×H×W,(通常使用C=64)。计算公式为
f H = H i ( x ) f_H=H^i(x) fH=Hi(x)其中 H i ( i = 1 , … , N t ) H^i(i={1,…,N_t})