5.10.1 Pre-Trained Image Processing Transformer

研究了低级计算机视觉任务(例如去噪、超分辨率和去雨)并开发了一种新的预训练模型,即图像处理变压器(IPT)。利用著名的 ImageNet 基准来生成大量损坏的图像对。 IPT 模型是在这些具有多头和多尾的图像上进行训练的。此外,引入对比学习以更好地适应不同的图像处理任务。因此,预训练模型在微调后可以有效地应用于所需的任务。

1. 介绍

图像处理是更全局的图像分析或计算机视觉系统的低级部分的组成部分之一。图像处理的结果很大程度上影响后续高层部分对图像数据的识别和理解。近年来,深度学习已广泛应用于解决低级视觉任务,例如图像超分辨率、修复、去雨和着色。由于许多图像处理任务都是相关的,因此很自然地期望在一个数据集上预训练的模型可以对另一个数据集有所帮助。

在计算机视觉中,deraining是指图像去雨的过程。具体来说,deraining技术旨在从被雨水影响的图像中恢复出清晰、无雨的图像内容。deraining是一个具有挑战性的任务,因为雨水在图像中可能表现为不同的形态和密度,且对图像的影响也是复杂多变的。

预训练可能为图像处理任务提供有吸引力的解决方案

首先,对于特定任务的数据可能受到限制。这个问题在涉及付费数据或数据隐私的图像处理任务中更加严重,例如医学图像和卫星图像。各种不一致的因素(例如相机参数、照明和天气)可能会进一步扰乱捕获的训练数据的分布。

其次,在呈现测试图像之前,不知道将请求哪种类型的图像处理作业。因此我们手头必须准备一系列的图像处理模块。他们有不同的目标,但一些基本操作可以共享。


本文中,我们使用Transformer架构开发了一种用于图像处理的预训练模型,即图像处理Transformer(IPT)。由于预训练的模型需要兼容不同的图像处理任务,包括超分辨率、去噪、去雨等,因此整个网络由对应不​​同任务的多对头尾和单个共享主体组成。

由于Transformer的潜力需要使用大规模数据集来挖掘,因此我们应该准备大量具有相当多样性的图像来训练IPT模型。为此,我们选择包含各种高分辨率、1000 个类别的 ImageNet 基准测试。对于 ImageNet 中的每个图像,我们使用操作来生成多个对应图像来服务于不同的任务。

Transformer架构在巨大的数据集上进行训练

1、训练图像被输入到特定的头部,生成的特征被裁剪为补丁,并随后展平为序列。

2、Transformer主体被用来处理扁平化特征,其中位置嵌入和任务嵌入分别用于编码器和解码器。

3、尾部被迫根据特定任务预测具有不同输出大小的原始图像。此外,引入了不同输入的块之间关系的对比损失,以便更好地使用不同的图像处理任务。

2. 相关工作

2.1 图像处理

图像处理包括对图像的操作,包括超分辨率、去噪、去雾、去雨、去模糊等。

2.2 Transformer

Transformer及其变体已证明其在各种自然语言处理任务中是强大的无监督或自监督预训练框架的成功。

探索 Transformer 在计算机视觉任务中的好处:

1、在传统的卷积神经网络中引入自注意力。引入了图像分割的空间注意力、提出DANET通过结合空间和通道注意力来利用上下文信息、通过自注意力增强特征,以增强模型在几个高级视觉任务上的性能

2、用自注意力块代替卷积神经网络。

3. Image Processing Transformer

3.1 IPT架构

IPT 的整体架构由四个部分组成:头部用于从输入的损坏图像(例如,带有噪声的图像和低分辨率图像)中提取特征,编码器-解码器Transformer用于恢复输入数据中缺失的信息,尾部用于将特征映射到恢复的图像中。

头部

为了适应不同的图像处理任务,我们使用多头架构来单独处理每个任务,其中每个头由三个卷积层组成。将输入图像表示为x\in\mathbb{R}^{3\times H\times W},头部生成具有C个通道的相同高度和宽度的特征图f_{H}\in\mathbb{R}^{C\times H\times W},计算公式为:f_{H} = H^{i}(x)H^{i} (i = \{1,\ldots,N_{t}\})表示第 i 个任务的头部,N_t表示任务的数量。

Transformer编码器

在将特征输入到Transformer主体之前,我们将给定的特征分割成补丁,每个补丁被视为一个“单词”。具体来说,特征图f_{H} \in \mathbb{R}^{C\times H\times W}被重塑为补丁序列,f_{p_{i}} \in \mathbb{R}^{P^{2}\times C},i = \{1,\ldots,N\},其中N=\frac{HW}{P^{2}}是补丁的数量(序列长度),P是补丁的大小。

为了维护每个补丁的位置信息,我们为之后的每个特征f_{p_{i}} 补丁添加可学习的位置编码E_{p_{i}} \in \mathbb{R}^{P^{2}\times C},并且E_{p_{i}}+f_{p_{i}}将直接输入到Transformer编码器中。编码器层具有多头自注意力模块和前馈网络。每个补丁的编码器f_{E_{i}} \in \mathbb{R}^{P^{2}\times C}的输出具有与输入补丁f_{p_{i}} 相同的大小。 

y_{0}=\left[E_{p_{1}}+f_{p_{1}},E_{p_{2}}+f_{p_{2}},\ldots,E_{p_{N}}+f_{p_{N}}\right]

q_{i}=k_{i}=v_{i}=\mathrm{LN}(y_{i-1})

y_{i}^{\prime}=\mathrm{MSA}(q_{i},k_{i},v_{i})+y_{i-1}

y_i=\mathrm{FFN}(\mathrm{LN}(y_i^{\prime}))+y_i^{\prime},\quad i=1,\ldots,l

[f_{E_{1}},f_{E_{2}},\ldots,f_{E_{N}}]=y_{l}

其中 l 表示编码器中的层数,MSA表示传统变压器模型中的多头自注意力模块,LN表示层归一化,FFN表示前馈网络,其中包含两个完全连接层。

Transformer解码器

解码器也遵循相同的架构,并将解码器的输出作为变压器主体的输入,Transformer主体由两个多头自注意力(MSA)层和一个前馈网络(FFN)组成。

可以利用特定于任务的嵌入作为解码器的附加输入。这些特定于任务的嵌入E_{t}^{i}\in\mathbb{R}^{P^{2}\times C},i=\{1,\ldots,N_{t}\}被学习来解码不同任务的特征。解码器的计算可以表述为:

z_{0}=\left[f_{E_{1}},f_{E_{2}},\ldots,f_{E_{N}}\right]

q_{i}=k_{i}=\mathrm{LN}(z_{i-1})+E_{t},v_{i}=\mathrm{LN}(z_{i-1})

z_{i}^{\prime}=\mathrm{MSA}(q_{i},k_{i},v_{i})+z_{i-1}

q_{i}^{\prime}=\mathrm{LN}(z_{i}^{\prime})+E_{t},k_{i}^{\prime}=v_{i}^{\prime}=\mathrm{LN}(z_{0})

z_{i}^{\prime\prime}=\mathrm{MSA}(q_{i}^{\prime},k_{i}^{\prime},v_{i}^{\prime})+z_{i}^{\prime}

z_{i}=\mathrm{FFN(LN}(z_{i}^{\prime\prime}))+z_{i}^{\prime\prime}, i=1,\ldots,l

[f_{D_{1}},f_{D_{2}},\ldots,f_{D_{N}}]=y_{l}

其中f_{D_{i}}\in\mathbb{R}^{P^{2}\times C}表示解码器的输出。然后,将解码后的 N 个大小为 P^2\times C 的补丁特征重新整形为大小为 C × H × W 的特征 f_D

尾部

尾部的属性与头部相同,我们使用多尾来处理不同的任务。计算可以表述为f_{T} = T^{i}(f_{D})T^i(i=\{1,\ldots,N_t\})表示第 i 个任务的头部,N_t表示任务的数量。输出f_{T}的结果图像大小为3\times H^{\prime}\times W^{\prime}由具体任务决定。对于2× 超分辨率任务,H′ = 2H,W = 2W。

3.2 ImageNet上的预训练

成功训练出优秀Transformer的关键因素之一是大规模数据集的充分利用。与图像分类相比,用于图像处理任务的可用数据数量相对较少。建议利用众所周知的ImageNet作为基线数据集预训练 IPT 模型,然后我们为多个任务(例如超分辨率和去噪)生成整个数据集。

由于 ImageNet 基准测试中的图像具有很高的多样性,其中包含来自 1,000 个不同类别的超过 100 万张自然图像。这些图像具有丰富的纹理和颜色信息。

首先删除语义标签,并使用针对不同任务的各种退化模型,从这些未标记的图像中手动合成各种损坏的图像。例如,超分辨率任务通常采用双三次退化(bicubic)来生成低分辨率图像,去噪任务在不同噪声级别的干净图像中添加高斯噪声以生成噪声图像。这些合成图像可以显着提高学习深度网络(包括 CNN 和 Transformer 架构)的性能。

损坏的图像合成为:I_{corrupted}=f(I_{clean}),其中f表示退化变换,对于超分辨率任务,f_{sr}正是双三次插值;对于图像去噪,{f}_{noise}(I)=I+\eta,,其中 \eta 是加性高斯噪声;对于除雨, f_{rain}(I)=I+r其中 r 是手工制作的雨条纹。以监督方式学习 IPT 的损失函数可以表示为:

\mathcal{L}_{supervised}=\sum_{i=1}^{N_t}L_1(\mathrm{IPT}(I_{corrupted}^i),I_{clean})

其中 L_1 表示重建所需图像的传统 L1 损失,I^i_{Corrupted} 分别表示任务 i 的损坏图像。所提出的框架同时接受多个图像处理任务的训练。具体来说,对于每个批次,我们从 N_t 个监督任务中随机选择一个任务进行训练,每个任务将同时使用相应的头、尾和任务嵌入进行处理。

在预训练 IPT 模型后,它将捕获各种图像处理任务的内在特征和转换,因此可以进一步微调以使用新提供的数据集应用于所需的任务。此外,为了节省计算成本,其他头部和尾部将被丢弃,并且剩余头部、尾部和主体中的参数将根据反向传播进行更新。

然而,由于退化模型多种多样,我们无法为所有图像处理任务合成图像。实践中可能存在多种可能的噪声水平。因此,应进一步增强所得IPT的泛化能力。与预训练自然语言处理模型类似,图像块之间的关系也提供了信息。我们引入对比学习来学习通用特征,以便预先训练的IPT模型可以用于未见过的任务。将 IPT 解码器针对给定输入x_j生成的输出补丁特征表示为f_{D_{i}}^{j} \in \mathbb{R}^{P^{2}\times C},i = \{1,\ldots,N\}其中x_j是从一批训练图像X=\{x_1,x_2,\ldots,x_B\}。我们的目标是最小化来自相同图像的补丁特征之间的距离,同时最大化来自不同图像的补丁特征之间的距离。

l(f_{D_{i_1}}^j,f_{D_{i_2}}^j)=-\mathrm{log}\frac{\exp(d(f_{D_{i_1}}^j,f_{D_{i_2}}^j))}{\sum_{k=1}^B\mathbb{I}_{k\neq j}\exp(d(f_{D_{i_1}}^j,f_{D_{i_2}}^k))}

\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}),其中\begin{matrix}d(a,b)&=&\frac{a^Tb}{\|a\|\|b\|}\end{matrix}表示余弦相似度。为了充分利用监督和自监督信息,我们将损失函数重新表述为:

\mathcal{L}_{IPT}=\lambda\cdot\mathcal{L}_{contrastive}+\mathcal{L}_{supervised} 其中,我们将λ平衡对比损失与监督损失相结合作为IPT的最终目标函数。

4. 实验

预训练的 IPT 模型可以在这些任务上实现最先进的性能。此外,大量的消融研究实验表明,在使用大规模数据集解决图像处理问题时,基于 Transformer 的模型比卷积神经网络表现更好。

超分辨率图像处理(Image Super-resolution)是一种重要的图像处理技术,旨在通过算法和模型将低分辨率(Low Resolution, LR)图像提升到高分辨率(High Resolution, HR),从而增强图像的细节和清晰度。

数据集

使用著名的 ImageNet 数据集,该数据集由超过 1M 个高度多样性的彩色图像组成。训练图像被裁剪成 48 × 48 的 patch,具有 3 个通道进行训练,即有超过 10M 个 patch 用于训练 IPT 模型。然后,我们生成具有 6 种退化类型的损坏图像:分别是 2×、3×、4× 双三次插值、30、50 噪声级别高斯噪声和添加雨纹。

超分辨率

由于高缩放因子导致大量信息丢失,因此很难恢复原始高分辨率图像。以前的方法生成模糊图像,而我们的模型生成的超分辨率图像可以很好地从低分辨率图像中恢复细节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/13055.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内网安全工具之ADExplorer的使用

ADExplorer是域内一款信息查询工具,它是独立的可执行文件,无需安装。它能够列出域组织架构、用户账号、计算机账号登,可以帮助寻找特权用户和数据库服务器等敏感目标。 下载地址:http://live.sysinternals.com/ 连接 下载了ADE…

第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组 拼数字

//bfs只能过40%。 #include<bits/stdc.h> using namespace std; #define int long long int a,b,c,dp[2028]; struct s {int x,y,z;string m; }; map<vector<int>,int>k; signed main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>a…

Java入门基础学习笔记24——While循环和do-while循环

1、While循环&#xff1a; 例1&#xff1a; package cn.ensource.loop;public class WhileDemo3 {public static void main(String[] args) {// 目标&#xff1a;掌握while循环的书写格式&#xff0c;以及理解其执行流程// 需求&#xff1a;打印多行Hello Worldint i 0;while…

EFCore_创建项目

添加依赖 Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.Tools(Migration工具) 根据使用的DB添加对应依赖&#xff1a; SQL Server&#xff1a;Microsoft.EntityFrameworkCore.SqlServer 添加该依赖时可不添加Microsoft.EntityFrameworkCore&#xff0c;该依…

电工能混到这份上

最近看到某电工师傅发了一篇帖子&#xff0c;大致内容是他在处理一个简单故障的时候居然花了很长的时间。我们一起来看看他遇到的是什么故障吧! plc 控制的一台设备&#xff0c;行走部分靠 2 个脚踏开关控制&#xff08;内部开关量控制方向&#xff0c;电位器控制速度&#xff…

Java:使用BigDecimal、NumberFormat和DecimalFormat保留小数

一、代码和调试结果 1.1 BigDecimal ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/fa36749de8124266a730817710fdf737.png) 1.2 DecimalFormat 1.3 NumberFormat 二、原代码 BigDecimalUtil.java 代码 package utils;import java.math.BigDecimal; import jav…

Linux平台和Windows平台互传文件

rz和sz的出发对象都是从Linux出发的&#xff0c;例如sz发送&#xff08;Send&#xff09;从Linux->发送到Windows。 rz 从Windows文件发送到Linux中 先创立一个新文本文件 之后将hello Windows输入到该文本文件中 在显示器上显示里面是否有hello Windows内容 sz发送Lin…

Retrying,一个神奇优雅的 Python 库

大家好&#xff01;我是爱摸鱼的小鸿&#xff0c;关注我&#xff0c;收看每期的编程干货。 一个简单的库&#xff0c;也许能够开启我们的智慧之门&#xff0c; 一个普通的方法&#xff0c;也许能在危急时刻挽救我们于水深火热&#xff0c; 一个新颖的思维方式&#xff0c;也许能…

非成对意象翻译中的内容制约范式再思考

Rethinking the Paradigm of Content Constraints in Unpaired Image-to-Image Translation 非成对意象翻译中的内容制约范式再思考 Xiuding Cai1 2, Yaoyao Zhu1 2, Dong Miao1 2, Linjie Fu1 2, Yu Yao1 2 蔡秀定 1 2 、朱瑶瑶 1 2 、苗东 1 2 、付林杰 1 2 、余瑶 1 2 Corre…

遥感数据集制作(Potsdam数据集为例):TIF图像转JPG,TIF标签转PNG,图像重叠裁剪

文章目录 TIF图像转JPGTIF标签转PNG图像重叠裁剪图像重命名数据集转COCO格式数据集转VOC格式 遥感图像不同于一般的自然图像&#xff0c;由于波段数量、图像位深度等原因&#xff0c;TIF图像数据不能使用简单的格式转换方法。本文以Potsdam数据集为例&#xff0c;制作能够直接用…

Linux安装配置CGAL,OpenCV和Gurobi记录

安装Qt&#xff0c;查看当前的Qt版本&#xff0c;需要至少满足v5.12 qmake -v安装CGAL&#xff0c;The Computational Geometry Algorithms Library (cgal.org) CGAL v5.6.1&#xff1a;https://github.com/CGAL/cgal/releases/download/v5.6.1/CGAL-5.6.1.tar.xz 确保C编译…

每日复盘-20240515

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 国联证券 (1)|[9:25]|[133765万]|31.12 一…

基于Pytorch深度学习神经网络MNIST手写数字识别系统源码(带界面和手写画板)

第一步&#xff1a;准备数据 mnist开源数据集 第二步&#xff1a;搭建模型 我们这里搭建了一个LeNet5网络 参考代码如下&#xff1a; import torch from torch import nnclass Reshape(nn.Module):def forward(self, x):return x.view(-1, 1, 28, 28)class LeNet5(nn.Modul…

【数据结构】C++语言实现二叉树的介绍及堆的实现(详细解读)

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

分布式系统的一致性与共识算法(三)

顺序一致性(Sequential Consistency) ZooKeeper 一种说法是ZooKeeper是最终一致性&#xff0c;因为由于多副本、以及保证大多数成功的ZAB协议&#xff0c;当一个客户端进程写入一个新值&#xff0c;另外一个客户端进程不能保证马上就能读到这个值&#xff0c;但是能保证最终能…

【车载开发系列】SID$11服务配置

【车载开发系列】SID$11服务配置 前言 ECUReset(ECU重置),ECU作为Server端,执行Client发送来ECU Reset请求中重启的类型(通过子服务区分)。对于UDS协议关于处理该请求的逻辑,没有强制性定义。 Step1:SID和SubFunction的追加 BasicEditor→Dcm→DcmConfigSet→DcmDs…

vs2019 c++里用 typeid() . name () 与 typeid() . raw_name () 测试数据类型的区别

&#xff08;1&#xff09; 都知道&#xff0c;在 vs2019 里用 typeid 打印的类型不大准&#xff0c;会主动去掉一些修饰符&#xff0c; const 和引用 修饰符会被去掉。但也可以给咱们验证学到的代码知识提供一些参考。那么今天发现其还有 raw_name 成员函数&#xff0c;这个函…

AES分组密码

一、AES明文和密钥位数 RIJNDAEL 算法数据块长度和密钥长度都可独立地选定为大于等于 128 位且小于等于 256 位的 32 位的任意倍数。 而美国颁布 AES 时却规定数据块的长度为 128 位、密钥的长度可分别选择为 128 位&#xff0c; 192 位或 256 位 1.1 状态 中间结果叫做状态…

建模:3dmax

3Dmax 制作模型和动画&#xff08;橘肉&#xff09;&#xff1b; RizomUV 对模型进行展UV&#xff08;橘皮&#xff09;&#xff1b; Substance Painter 纹理手绘&#xff08;给橘皮制定想要的皮肤&#xff09;&#xff1b; 1.基础 1.1可编辑多边形、可编辑样条线 体、面都需要…

Polylang Pro插件下载:多语言网站构建的终极解决方案

在全球化的今天&#xff0c;多语言网站已成为企业拓展国际市场的重要工具。然而&#xff0c;创建和管理一个多语言网站并非易事。幸运的是&#xff0c;Polylang Pro插件的出现&#xff0c;为WordPress用户提供了一个强大的多语言解决方案。本文将深入探讨Polylang Pro插件的功能…