当前位置: 首页 > article >正文

【Block总结】PlainUSR的局部注意力,即插即用|ACCV2024

论文信息

  • 标题: PlainUSR: Chasing Faster ConvNet for Efficient Super-Resolution
  • 作者: Yan Wang, Yusen Li, Gang Wang, Xiaoguang Liu
  • 发表时间: 2024年
  • 会议/期刊: 亚洲计算机视觉会议(ACCV 2024)
  • 研究背景: 超分辨率(Super-Resolution, SR)任务近年来受到广泛关注,尤其是在实时性能和高效计算方面的挑战。现有方法通常在性能和计算效率之间进行权衡,但仍难以实现低延迟和高质量的图像重建[4][5][21]。
  • 链接:https://openaccess.thecvf.com/content/ACCV2024/papers/Wang_PlainUSR_Chasing_Faster_ConvNet_for_Efficient_Super-Resolution_ACCV_2024_paper.pdf

在这里插入图片描述

创新点

PlainUSR提出了一种高效的卷积网络框架,通过以下三大模块的改进实现了超分辨率任务的加速和性能优化:

  1. 卷积模块: 使用重参数化技术,将轻量但较慢的MobileNetV3卷积块替换为更重但更快的普通卷积块,从而在内存访问和计算之间实现平衡[4][5][24]。
  2. 注意力模块: 引入基于区域重要性的局部注意力机制(Local Importance-based Attention, LIA),通过区域重要性图和门控机制实现高阶信息交互,同时保持低延迟[4][5][21]。
  3. 主干网络: 提出了一种简化的U-Net结构,采用通道级的分离和连接操作,进一步优化网络的计算效率和性能[4][5][24]。

这些创新点旨在解决现有方法在实时性能和计算效率上的瓶颈,同时保持竞争性的图像重建质量。


方法

PlainUSR的设计包括以下核心步骤:

  1. 卷积模块优化:

    • 使用重参数化技术(Reparameterization Tricks)将MobileNetV3卷积块转化为普通卷积块。
    • 这种设计减少了内存访问开销,同时提高了计算速度[4][5][24]。
  2. 局部注意力机制:

    • 通过区域重要性图对输入进行调制,结合门控机制实现信息交互。
    • 该方法在保持低延迟的同时,增强了局部和全局信息的整合能力[4][5][21]。
  3. 主干网络优化:

    • 使用简化的U-Net结构,通过通道级分离和连接操作实现高效的特征处理。
    • 这种设计进一步减少了计算复杂度,同时提高了网络的扩展性[4][5][24]。

在这里插入图片描述

局部注意力机制的作用

  1. 信息交互优化
    局部注意力机制通过引入区域重要性图和门控机制,能够在局部范围内实现高阶信息交互。这种设计使得模型能够更有效地捕捉局部细节,同时避免了传统全局注意力机制可能带来的高计算成本[4][5][6]。

  2. 降低计算延迟
    局部注意力机制的设计重点在于减少计算复杂度。相比全局注意力,局部注意力将加权求和的范围限制在特定窗口内,从而显著降低了计算量。这种方法特别适合实时超分辨率任务,能够在保持性能的同时实现低延迟[3][4][5]。

  3. 增强局部与全局信息的融合
    PlainUSR中的局部注意力机制不仅关注局部细节,还通过区域重要性图实现了局部与全局信息的有效融合。这种融合能够帮助模型在处理复杂纹理和长距离依赖时表现更优[4][5][6]。

PlainUSR中的具体实现

  • 区域重要性图: 局部注意力机制通过生成区域重要性图来标记输入数据中不同区域的重要性。这种图能够指导模型将计算资源集中在关键区域,从而提高效率和准确性[4][5][6]。
  • 门控机制: 门控机制用于控制信息流动,确保模型能够在局部范围内实现高效的信息交互,同时避免不必要的计算开销[4][5][6]。

效果

PlainUSR在实验中表现出以下显著优势:

  1. 低延迟: 与最新的NGswin方法相比,PlainUSR-L版本的运行速度快16.4倍,同时保持了竞争性的性能[4][5][10]。
  2. 高扩展性: 该框架能够适应不同的计算资源需求,适用于多种硬件环境[4][5][21]。
  3. 性能对比: 在与其他面向低延迟和高质量的超分辨率方法的对比中,PlainUSR展现了卓越的性能和计算效率[4][5][24]。

实验结果表明,PlainUSR在多个基准数据集上均取得了优异的表现,证明了其在实时超分辨率任务中的实用性。


综上所述,PlainUSR通过对卷积模块、注意力机制和主干网络的优化,成功实现了高效的超分辨率任务处理,兼顾了低延迟和高质量的图像重建需求。这项研究为实时超分辨率任务提供了新的解决方案,并具有广泛的应用前景。

代码

import torch
import torch.nn as nn
import torch.nn.functional as Fclass SoftPooling2D(torch.nn.Module):def __init__(self, kernel_size, stride=None, padding=0):super(SoftPooling2D, self).__init__()self.avgpool = torch.nn.AvgPool2d(kernel_size, stride, padding, count_include_pad=False)def forward(self, x):x_exp = torch.exp(x)x_exp_pool = self.avgpool(x_exp)x = self.avgpool(x_exp * x)return x / x_exp_poolclass LocalAttention(nn.Module):''' attention based on local importance'''def __init__(self, channels, f=16):super().__init__()self.body = nn.Sequential(# sample importancenn.Conv2d(channels, f, 1),SoftPooling2D(7, stride=3),nn.Conv2d(f, f, kernel_size=3, stride=2, padding=1),nn.Conv2d(f, channels, 3, padding=1),# to heatmapnn.Sigmoid(),)self.gate = nn.Sequential(nn.Sigmoid(),)def forward(self, x):''' forward '''# interpolate the heat mapg = self.gate(x[:, :1].clone())w = F.interpolate(self.body(x), (x.size(2), x.size(3)), mode='bilinear', align_corners=False)return x * w * g  # (w + g) #self.gate(x, w)
if __name__ == "__main__":# 定义输入张量大小(Batch、Channel、Height、Wight)B, C, H, W = 16, 512, 40, 40input_tensor = torch.randn(B,C,H,W)  # 随机生成输入张量dim=C# 创建 LocalAttention实例block = LocalAttention(channels=dim)device = torch.device("cuda" if torch.cuda.is_available() else "cpu")sablock = block.to(device)print(sablock)input_tensor = input_tensor.to(device)# 执行前向传播output = sablock(input_tensor)# 打印输入和输出的形状print(f"Input: {input_tensor.shape}")print(f"Output: {output.shape}")

代码详解:LocalAttention 模块


1. 模块功能概述

LocalAttention 是一种基于局部重要性加权的注意力机制,通过以下步骤增强特征图中关键区域:

  1. 重要性采样:通过卷积和软池化提取局部重要性特征。
  2. 权重图生成:通过卷积层生成空间注意力图。
  3. 门控调节:结合通道维度的门控信号,动态调整特征响应。

2. 代码逐层解析

2.1 SoftPooling2D 类
class SoftPooling2D(torch.nn.Module):def __init__(self, kernel_size, stride=None, padding=0):super(SoftPooling2D, self).__init__()self.avgpool = torch.nn.AvgPool2d(kernel_size, stride, padding, count_include_pad=False)def forward(self, x):x_exp = torch.exp(x)               # 指数运算增强对比度x_exp_pool = self.avgpool(x_exp)    # 对指数结果平均池化x = self.avgpool(x_exp * x)         # 对加权特征平均池化return x / x_exp_pool               # 归一化输出
  • 功能:软池化,替代传统最大/平均池化,保留更多信息。

  • 优势:通过指数运算放大显著特征,池化后归一化,保留相对重要性。

2.2 LocalAttention 类
初始化方法 __init__
def __init__(self, channels, f=16):super().__init__()self.body = nn.Sequential(nn.Conv2d(channels, f, 1),          # 通道压缩到 f (默认16)SoftPooling2D(7, stride=3),          # 7x7 池化,步长3nn.Conv2d(f, f, kernel_size=3, stride=2, padding=1),  # 下采样nn.Conv2d(f, channels, 3, padding=1),  # 恢复通道数nn.Sigmoid()                         # 生成 [0,1] 权重图)self.gate = nn.Sequential(nn.Sigmoid()                         # 门控信号)
前向传播 forward
def forward(self, x):g = self.gate(x[:, :1].clone())          # 取第1个通道生成门控信号w = F.interpolate(self.body(x),                        # 生成低分辨率权重图(x.size(2), x.size(3)),              # 插值到输入尺寸mode='bilinear', align_corners=False)return x * w * g                         # 特征加权

LocalAttention 通过局部重要性采样和门控机制实现特征自适应增强,其设计兼顾计算效率与灵活性。改进空间包括优化门控信号生成、增强数值稳定性等。该模块可嵌入 CNN 或 Transformer 中,提升模型对关键区域的感知能力。

相关文章:

【Block总结】PlainUSR的局部注意力,即插即用|ACCV2024

论文信息 标题: PlainUSR: Chasing Faster ConvNet for Efficient Super-Resolution作者: Yan Wang, Yusen Li, Gang Wang, Xiaoguang Liu发表时间: 2024年会议/期刊: 亚洲计算机视觉会议(ACCV 2024)研究背景: 超分辨率(Super-Resolution, S…...

Kubernetes集群管理详解:从入门到精通

1. 引言 Kubernetes(简称k8s)作为当今最流行的容器编排平台,已成为云原生应用部署和管理的事实标准。本文将深入探讨k8s集群管理的各个方面,为运维工程师和开发人员提供一个全面的指南。 2. Kubernetes架构概览 在深入具体的管理任务之前,让我们先回顾一下Kubernetes的基本架…...

Git 换行符警告(LF replaced by CRLF)的解决方案

根据你的日志和知识库中的信息,以下是针对 Git 换行符警告(LF replaced by CRLF) 的解决方案: 一、问题分析 警告原因 你当前在 Windows 系统 上工作,但某些文件(如 .gitignore, README.md, package.json 等…...

【C++】从零实现Json-Rpc框架(2)

目录 JsonCpp库 1.1- Json数据格式 1.2 - JsonCpp介绍 • 序列化接口 • 反序列化接口 1.3 - Json序列化实践 JsonCpp使用 Muduo库 2.1 - Muduo库是什么 2.2 - Muduo库常见接口介绍 TcpServer类基础介绍 EventLoop类基础介绍 TcpConnection类基础介绍 TcpClient…...

蓝桥云客--回文数组

0回文数组 - 蓝桥云课 问题描述 小蓝在无聊时随机生成了一个长度为 n 的整数数组,数组中的第 i 个数为 ai​,他觉得随机生成的数组不太美观,想把它变成回文数组,也就是对于任意 i∈[1,n] 满足 ai​an−i1​。小蓝一次操作可以指…...

FastAPI依赖注入:链式调用与多级参数传递

title: FastAPI依赖注入:链式调用与多级参数传递 date: 2025/04/05 18:43:12 updated: 2025/04/05 18:43:12 author: cmdragon excerpt: FastAPI的依赖注入系统通过链式调用和多级参数传递实现组件间的解耦和复用。核心特性包括解耦性、可复用性、可测试性和声明式依赖解析…...

【STM32单片机】#5 定时中断

主要参考学习资料: B站江协科技 STM32入门教程-2023版 细致讲解 中文字幕 开发资料下载链接:https://pan.baidu.com/s/1h_UjuQKDX9IpP-U1Effbsw?pwddspb 单片机套装:STM32F103C8T6开发板单片机C6T6核心板 实验板最小系统板套件科协 实验&…...

OrbStack 作为 Mac 用户的 Docker 替代方案

推荐使用 OrbStack 作为 Mac 用户的 Docker 替代方案 在现代开发环境中,容器化技术已经成为了软件开发的重要组成部分。对于 Mac 用户来说,Docker Desktop 是一个广泛使用的工具,但它并不是唯一的选择。本文将推荐 OrbStack 作为 Docker Desktop 的替代方案,并探讨其优势。…...

运行小程序报错

[ app.json 文件内容错误] app.json: ["tabBar"]["list"] 不能超过 5 项(env: Windows,mp,1.06.2206090; lib: 3.7.12) 他的意思大概是,微信小程序 app.json 文件中的 tabBar.list 配置项超过了 5 项。这是微信小程序的限制,tabBar…...

Nature Electronics|一种透气、可拉伸的液态金属基3D电子皮肤系统(健康监测/可穿戴电子/透汗透气性电子/电子皮肤/柔性电子/集成电路)

一、 摘要 穿戴式和皮肤电子设备的发展要求高密度可伸展电子系统能够与软组织共形,持续运行并提供长期的生物相容性。大多数可拉伸电子系统的集成密度低,并且与外部印刷电路板连接,这限制了功能,降低了用户体验并阻碍了长期可用性。在此,作者提出了一种可渗透的三维集成电…...

深入剖析丝杆升降机工作原理,解锁工业传动奥秘

丝杆升降机,在工业设备的大舞台上扮演着不可或缺的角色,被广泛应用于机械制造、自动化生产线、建筑施工等众多领域。它能够精准实现重物的升降、定位等操作,为各类工业生产提供了稳定可靠的支持。想要深入了解丝杆升降机,就必须探…...

【51单片机】2-3【I/O口】震动传感器控制LED灯

1.硬件 51最小系统LED灯模块震动传感器模块 2.软件 #include "reg52.h"sbit led1 P3^7;//根据原理图(电路图),设备变量led1指向P3组IO口的第7口 sbit vibrate P3^3;//震动传感器DO接P3.3口void Delay2000ms() //11.0592MHz {…...

TortoiseSVN设置忽略清单

1.TortoiseSVN > Properties(如果安装了 TortoiseSVN)。 2. 在弹出的属性窗口中,点击 New > Other。 4. 在 Property name 中输入 svn:ignore 。 5. 在 Property value 中输入要忽略的文件夹或文件名称,例如: #…...

大模型持续学习方案解析:灾难性遗忘的工业级解决方案

引言 随着大型语言模型(LLMs)如 GPT 系列、BERT 等在自然语言处理领域取得突破性进展,它们强大的理解和生成能力已经渗透到各行各业。然而,这些模型通常是在海量静态数据集上进行一次性预训练的。现实世界是动态变化的&#xff0…...

《UNIX网络编程卷1:套接字联网API》第7章:套接字选项深度解析

《UNIX网络编程卷1:套接字联网API》第7章:套接字选项深度解析 一、套接字选项核心原理 1.1 选项层级体系 套接字选项按协议层级划分(图1): SOL_SOCKET:通用套接字层选项IPPROTO_IP:IPv4协议层…...

Debian编译安装mysql8.0.41源码包 笔记250401

Debian编译安装mysql8.0.41源码包 以下是在Debian系统上通过编译源码安装MySQL 8.0.41的完整步骤,包含依赖管理、编译参数优化和常见问题处理: 准备工作 1. 安装编译依赖 sudo apt update sudo apt install -y \cmake gcc g make libssl-dev …...

医疗思维图与数智云融合:从私有云到思维图的AI架构迭代(代码版)

医疗思维图作为AI架构演进的重要方向,其发展路径从传统云计算向融合时空智能、大模型及生态开放的“思维图”架构迭代,体现了技术与场景深度融合的趋势。 以下是其架构迭代的核心路径与关键特征分析: 一、从“智慧云”到“思维图”的架构演进逻辑 以下是针对医疗信息化领域…...

【计算机网络应用层】

文章目录 计算机网络应用层详解一、前言二、应用层的功能三、常见的应用层协议1. HTTP/HTTPS(超文本传输协议)2. DNS(域名系统)3. FTP(文件传输协议)4. SMTP/POP3/IMAP(电子邮件协议&#xff09…...

【JS】接雨水题解

题目 思路 首先我们要明确如何计算每条柱子的接水量: 每条柱子对应接到的雨水量该柱子左边最大值和右边最大值中的较小值-该柱子本身的高度。举例:第二条柱子自身高度为0,左边最大值为1,右边最大值为3,取较小值1-自身…...

线代[12]|《高等几何》陈绍菱(1984.9)(文末有对三大空间的分析及一个合格数学系毕业生的要求)

文章目录 一、概述二、平面仿射几何的基本概念三、平面射影几何的基本概念四、变换群和几何学五、二次曲线的射影理论、仿射理论和度量理论六、射影几何公理基础七、非欧几里得几何概要八、自我测试题九、欧氏解析几何、仿射解析几何、射影解析几何与其他(博主借助A…...

第3课:状态管理与事件处理

第3课:状态管理与事件处理 学习目标 掌握useState Hook的使用理解组件事件处理机制实现表单输入与状态绑定完成任务添加功能原型 一、useState基础 1. 创建第一个状态 新建src/Counter.js: import { useState } from react;function Counter() {co…...

提升移动端用户体验:解决输入框被软键盘遮挡的有效方法

解决移动端输入框被软键盘覆盖的问题 在开发移动端网页时,如果页面包含输入框,则可能会遇到输入框被弹出的软键盘遮挡的问题。为了解决这个问题,我们需要理解两种常见的情况以及相应的解决策略。 浏览器未主动聚焦到输入框 现代浏览器和移…...

哈希表(Hashtable)核心知识点详解

1. 基本概念 定义:通过键(Key)直接访问值(Value)的数据结构,基于哈希函数将键映射到存储位置。 核心操作: put(key, value):插入键值对 get(key):获取键对应的值 remo…...

多分类交叉熵

1. 基本概念:熵与交叉熵 要理解多分类交叉熵损失的由来,首先需要掌握信息论中的两个基础概念:熵(Entropy)和交叉熵(Cross-Entropy)。 熵(Entropy) 熵衡量一个随机变量的…...

【速写】Transformer-encoder-decoder深度解析

文章目录 一、理论分析1. Transformers概述2. Transformer的输入部分具体是如何构成?2.1 单词 Embedding2.2 位置 Embedding 3 自注意力原理3.1 自注意力结构3.2 QKV的计算3.3 自注意力的输出3.4 多头注意力 4 Encoder结构4.1 AddNorm4.2 前馈4.3 组成Encoder 二、代…...

MyBatis八股文-执行流程、延迟加载、一级与二级缓存

(一)执行流程 mybatis-config.xml核心配置文件的作用: 在MyBatis框架的核心配置文件中需要去指定当前的环境配置、指定需要操作的是哪个数据库,并且输入当前的用户名与密码,只有配置了他才能真正操作数据库。同时还去加载了SQL映射文件&#…...

Protobuf 的快速使用(四)

Protobuf 还常⽤于通讯协议、服务端数据交换场景。那么在这个⽰例中,我们将实现⼀个⽹络版本的通讯录,模拟实现客⼾端与服务端的交互,通过 Protobuf 来实现各端之间的协议序列化。需求如下: 客⼾端可以选择对通讯录进⾏以下操作&…...

SQL ServerAlways On 可用性组配置失败

问题现象: 配置 Always On 可用性组时,报错 “无法将数据库加入可用性组”(错误 41158),或提示 “WSFC 群集资源无法联机”(错误 19471)。 快速诊断 验证 WSFC 群集状态: # 检查群集…...

Mysql explain中列的解析

EXPLAIN列的解释: table:显示这一行的数据是关于哪张表的 type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL possible_keys:查询可以利用的索引&#…...

基于Spark的哔哩哔哩舆情数据分析系统

【Spark】基于Spark的哔哩哔哩舆情数据分析系统 (完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 本项目基于Python和Django框架进行开发,为了便于广大用户针对舆情进行个性化分析处…...