SwinIR: Image Restoration Using Swin Transformer

  • ICCV2021 workshop
  • https://github.com/JingyunLiang/SwinIR
  1. 问题引入
  • 将swim transformer使用到图像恢复任务当中,因为卷积存在不能建模长距离依赖以及使用相同的卷积核来恢复不同的图像区域;
  • 并不是首个将transformer引入图像恢复中的方法,但是之前的方法将图片分为固定大小的patch,在patch的边缘会产生伪影
  1. 方法
  • 模型分为三个部分:shallow feature extraction, deep feature extraction和high-quality image reconstruction,其中深层特征提取器包含多个residual Swin Transformer blocks (RSTB)
  • 特征提取模块对所有的任务共享,但是重建模块为任务单独设计;
    在这里插入图片描述
  • Shallow and deep feature extraction:浅层特征提取,输入 I L Q ∈ R H × W × C i n I_{LQ}\in\mathbb{R}^{H\times W\times C_{in}} ILQRH×W×Cin,经过一个 3 × 3 3\times 3 3×3的卷积层 H S F ( ⋅ ) H_{SF}(\cdot) HSF()得到输出 F 0 ∈ R H × W × C F_0\in\mathbb{R}^{H\times W\times C} F0RH×W×C,之后进行深层特征提取 F D F ∈ R H × W × C , F D F = H D F ( F 0 ) F_{DF}\in\mathbb{R}^{H\times W\times C},F_{DF}=H_{DF}(F_0) FDFRH×W×C,FDF=HDF(F0),其中 H D F ( ⋅ ) H_{DF}(\cdot) HDF()包含 K K K个residual Swin Transformer blocks (RSTB) and a 3 × 3 convolutional layer
  • 图像重建层:以图像超分任务为例 I R H Q = H R E C ( F 0 + F D F ) I_{RHQ}=H_{REC}(F_0+F_{DF}) IRHQ=HREC(F0+FDF),使用sub-pixel convolution layer来进行上采样,假如不需要上采样的任务例如图像去噪和JPEG compression artifact reduction,就使用一层卷积实现重建层,模型学习的目标是LR和HR的residual,所以 I R H Q = H S w i n I R ( I L Q ) + I L Q I_{RHQ}=H_{SwinIR}(I_{LQ})+I_{LQ} IRHQ=HSwinIR(ILQ)+ILQ
  • 超分任务损失函数使用的是L1 pixel loss, L = ∣ ∣ I R H Q − I H Q ∣ ∣ 1 L = ||I_{RHQ}-I_{HQ}||_1 L=∣∣IRHQIHQ1,其他任务使用的是Charbonnier loss;
  • Residual Swin Transformer Block:由L个STL和一个卷积层组成;
  • Swin Transformer layer:对于输入 H × W × C H\times W\times C H×W×C,首先将输入reshape成 H W M 2 × M 2 × C \frac{HW}{M^2}\times M^2\times C M2HW×M2×C,总共有 H W M 2 \frac{HW}{M^2} M2HW个相互之间不重叠的window,之后再每个window上进行local attention,也就是标准的attention;对于当个window X ∈ R M 2 × C X\in\mathbb{R}^{M^2\times C} XRM2×C Q = X P Q , K = X P K , V = X P V Q=XP_Q,K=XP_K,V=XP_V Q=XPQ,K=XPK,V=XPV,其中 P Q , P K , P V P_Q,P_K,P_V PQ,PK,PV是不同window之间共享的参数, Q , K , V ∈ R M 2 × d Q,K,V\in\mathbb{R}^{M^2\times d} Q,K,VRM2×d,之后 A t t e n t i o n ( Q , K , V ) = S o f t M a x ( Q K T / d + B ) V Attention(Q,K,V)=SoftMax(QK^T/\sqrt{d}+B)V Attention(Q,K,V)=SoftMax(QKT/d +B)V,其中 B B B是可学习的相对位置编码,此处是多头注意力机制,接下来是MLP层(包含两层全连接和GELU),整体 X = M S A ( L N ( X ) ) + X , X = M L P ( L N ( X ) ) + X X = MSA(LN(X))+X,X=MLP(LN(X))+X X=MSA(LN(X))+X,X=MLP(LN(X))+X,为了保证cross-window connections,铍铜的window partition和shifted window partition是交替使用的;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

简单的Python HTML 输出

1、问题背景 一名初学者在尝试将 Python 脚本输出到网页上时遇到了一些问题。他当前使用 Python 和 HTML 进行开发,并且遇到了以下问题: 担心自己的代码过于复杂,尤其是 WebOutput() 函数。希望通过 JavaScript 使用 HTML 模板文件更新数据。…

Java多线程与并发编程

1.多线程基础 1.1 线程相关概念 程序(program):是为完成特定任务、用某种语言编写的一组指令的集合。简单的说:就是我们写的代码 进程: 1. 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程…

常见扩频系统的基础概念和模型

扩频系统是一种通信技术,它通过将信号的频谱扩展到一定程度来实现传输,这种系统的设计和实现涉及到多种不同的方法和技术。 扩频系统的主要特点和好处包括: 抗干扰能力强:由于信号被扩展到较宽的频带上,单位带宽内的功…

数据收集-分化轨迹推断

数据收集-分化轨迹推断 1参考内容 2参考内容 3参考内容 4参考内容 5参考内容 6:methods and datasets review参考内容 1 参考 Ranek, J.S., Stanley, N. & Purvis, J.E. Integrating temporal single-cell gene expression modalities for trajectory inferen…

【p7】正规式转正规文法

需要注意的是,有时候需要自己构造一个非终结符,非终结符推导到空,然后套用上面的公式即可

十大排序算法(java实现)

注:本篇仅用来自己学习,大量内容来自菜鸟教程(地址:1.0 十大经典排序算法 | 菜鸟教程) 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大…

SpringCloud面试题

SpringCloud常见组件有哪些 注册中心组件:Eureka、Nacos 负载均衡组件:Ribbon 远程调用组件:OpenFeign 网关组件:Zuul、Gateway 服务保护组件:Hystrix、Sentinel 服务配置管理组件:SpringCloudConfig、Nac…

OpenCompass大模型评估

作业链接: Tutorial/opencompass/homework.md at camp2 InternLM/Tutorial GitHub 项目链接: GitHub - open-compass/opencompass: OpenCompass is an LLM evaluation platform, supporting a wide range of models (Llama3, Mistral, InternLM2,GPT-…

Docker快速搭建NAS服务——FileBrowser

Docker快速搭建NAS服务——FileBrowser 文章目录 前言FileBrowser的搭建docker-compose文件编写运行及访问 总结 前言 本文主要讲解如何使用docker在本地快速搭建NAS服务,这里主要写如下两种: FileBrowser1:是一个开源的Web文件管理器&…

【吊打面试官系列】Java高并发篇 - 为什么 wait(), notify()和 notifyAll ()必须在同步方法或者同步块中被调用?

大家好,我是锋哥。今天分享关于 【为什么 wait(), notify()和 notifyAll ()必须在同步方法或者同步块中被调用?】面试题,希望对大家有帮助; 为什么 wait(), notify()和 notifyAll ()必须在同步方法或者同步块中被调用?…

这3种深拷贝实现,你都知道吗?

目录: 1、JSON.parse 2、structuredClone 3、cloneDeep

【竞技宝jjb.lol】MSI:换线战术或将成为BLG命门

北京时间2024年5月10日,英雄联盟2024MSI季中赛继续进行,昨日迎来胜败分组赛首轮BLG对阵PSG。本以为这场比赛没有任何悬念,BLG将会非常轻松地击败PSG,没想到最终PSG两度扳平比分,BLG决胜局抗住压力才艰难取胜。虽然赢下了比赛,但BLG低迷的状态还是在比赛结束后遭到网友们的热议。…

超全MySQL锁机制介绍

前言 MySQL作为关系型数据库管理系统中的佼佼者,为了保证数据的一致性和完整性,在并发控制方面采用了锁机制。锁机制是数据库管理系统用于控制对共享资源的访问,避免多个事务同时修改同一数据造成的数据不一致问题。了解MySQL的锁机制对于数…

【组合博弈】介绍

本文为学习笔记,详细内容参考"Lessons in Play,Michael H. Albert Richard J. Nowakowski David Wolfe" 文章目录 组合博弈介绍(Combinatorial Games)DOMINEERING游戏组合游戏选手介绍Options博弈树(game tree) 组合博弈介绍(Combi…

*****水上飞机:继承,虚函数,虚继承

一题目 请设计以下航行器、飞机、船、水上飞机等 4 个类。 CRAFT 为航行器类,是公共基类,提供航行器的基本特性。包括: 一个保护数据成员:speed(速度)。 三个公有成员函数:构造函数(初始化速度)、析构函数和 Show 函数…

ASP.NET学生成绩管理系统

摘要 本系统依据开发要求主要应用于教育系统,完成对日常的教育工作中学生成绩档案的数字化管理。开发本系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用&#xf…

操作系统实战(三)(linux+C语言实现)

实验目的 加深对进程调度概念的理解,体验进程调度机制的功能,了解Linux系统中进程调度策略的使用方法。 练习进程调度算法的编程和调试技术。 实验说明 1.在linux系统中调度策略分为3种 SCHED_OTHER:默认的分时调度策略,值为0…

通俗的理解网关的概念的用途(四):什么是网关设备?(网络层面)

任何一台Windows XP操作系统之后的个人电脑、Linux操作系统电脑都可以简单的设置,就可以成为一台具备“网关”性质的设备,因为它们都直接内置了其中的实现程序。MacOS有没有就不知道,因为没用过。 简单的理解,就是运行了具备第二…

使用nmcli命令在Linux系统上配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)

前言:原文在我的博客网站中,持续更新数通、系统方面的知识,欢迎来访! 使用nmcli命令在Linux系统上配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)https://myweb.myskillstree.cn/123.html 你是否会…

使用GitLab自带的CI/CD功能在远程服务器部署项目(三)

前置内容: 通过Docker Compose部署GitLab和GitLab Runner(一) 使用GitLab自带的CI/CD功能在本地部署项目(二) 目录 一、在GitLab服务器上生成私钥与公钥 二、将公钥拷贝到应用服务器上 三、将私钥给到Docker Exec…