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

论文精读-SwinIR Image Restoration Using Swin Transformer

论文精读-SwinIR: Image Restoration Using Swin Transformer

SwinIR:使用 Swin Transformer进行图像恢复

参数量:SR 11.8M、JPEG压缩伪影 11.5M、去噪 12.0M

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

优点:1、提出了新的网络结构。它采用分块设计。包括浅层特征提取:cnn提取,得到低维特征。深层特征提取:使用残差连接(过程可融合不同维度的特征)+Swin transformer+CNN特征增强,得到高纬特征。高质量图像重建:融合浅特征和深特征。

2、针对不同任务设计了相应的损失函数,针对SR使用图像重建模块函数,并使用L1像素损失。针对去噪和JPEG压缩使用残差学习构建LQ和HQ图像之间的残差,并使用Charbonnier损失。

3、消融实验清晰,对比了不同参数的效果,并给出了与先进模型的比较

小结:总体使用深度学习(设计了新的基于SWIN的网络结构)的方法进行图像恢复,针对图像恢复中超分(低尺度)和去噪(噪声),JPEG压缩伪影(压缩图像)3种代表性任务使用不同的损失函数。

如果无法查看图片请查看:论文精读-SwinIR Image Restoration Using Swin Transformer

概述

图像恢复是一个长期存在的低级视觉问题,其目的是从低质量图像(例如,低尺度、噪声和压缩图像)中恢复高质量图像。虽然最先进的图像恢复方法是基于卷积神经网络的,但很少有人尝试用变形金刚在高级视觉任务中表现出令人印象深刻的表现。在本文中,我们提出了一个基于Swin Transformer 的强基线模型SwinIR 用于图像恢复。SwinIR 包括三个部分:浅层特征提取、深层特征提取和高质量图像重建。其中,深度特征提取模块由多个残差Swin Transformer 块(RSTB)组成,每个残差块都有多个Swin Transformer 层和残差连接。我们对图像超分辨率(包括经典图像、轻量级图像和真实图像超分辨率)、图像去噪(包括灰度图像和彩色图像去噪)和JPEG 压缩伪影减少三个具有代表性的任务进行了实验。实验结果表明,SwinIR 在不同任务上的性能优于最先进的方法,最高可达0.14 ~ 0.45dB,而参数总数可减少67%。

背景介绍

大多数基于 cnn 的方法侧重于精细的架构设计,如残差学习[43,51]和密集连接[97,81]。虽然与传统的基于模型的方法相比,性能有了明显的提高方法[73,14,28],它们通常会遇到两个源于基本卷积层的基本问题。首先,图像和卷积核之间的交互是内容无关的。使用相同的卷积核来恢复不同的图像区域可能不是最好的选择。其次,在局部处理的原理下,卷积对于远程依赖建模是无效的。

作为 CNN 的替代方案,Transformer[76]设计了一种自注意机制来捕捉上下文之间的全局交互,并在几个视觉问题中显示出良好的性能[6,74,19,56]。然而,用于图像恢复的视觉变形金刚[9,5]通常将输入图像分割成固定大小的小块(如 48×48),并对每个小块进行独立处理。这样的策略不可避免地会产生两个弊端。

1、首先,边界像素不能利用补丁之外的邻近像素进行图像恢复。(使用3x3卷积)

2、其次,修复后的图像可能会在每个补丁周围引入边界伪影。虽然这个问题可以通过斑块重叠来缓解,但它会带来额外的计算负担。

最 近 , Swin Transformer[56] 集成了 CNN 和Transformer 的优点,显示出很大的前景。

一方面,由于局部注意机制,它具有 CNN处理大尺寸图像的优势。

另一方面,它又具有 Transformer 的优势,可以用移位窗口方案(固定分区与移动分区)对远程依赖进行建模。

相关工作

1.图像恢复

与传统的基于模型的图像恢复方法[28,72,73,62,32]相比,基于学习的方法,特别是基于 cnn 的方法,由于其令人印象深刻的性能而变得越来越受欢迎。它们经常学习来自大规模配对数据集的低质量图像和高质量图像之间的映射。自开创性的 SRCNN[18](用于图像 SR)、DnCNN90和 ARCNN[17](用于 JPEG 压缩伪迹还原)以来,已经提出了一系列基于 cnn 的模型,通过使用更精细的神经网络架构设计,如残差块[40,7,88]、密 集 块 [81,97,98] 和 其 他[10,42,93,78,77,79,50,48,49,92,70,36,83,30,11,16,96,64,38,26,41,25]来提高模型表示能力。其中一些利用了 CNN 框架内的注意机制,如频道注意[95,15,63]、非局部注意[52,61]和自适应补丁聚集[100]。

2.视觉Transformer

最近,自然语言处理模型 Transformer[76]在计算机视觉界获得了很大的普及。当用于图像分类,对象检测[6,53,74,56],分割[84,99,56,4]和人群计数[47,69]等视觉问题时[66,19,84,56,45,55,75],,它通过探索不同区域之间的全局交互来学习关注重要的图像区域。由于其令人印象深刻的性能,Transformer 也被引入到图像恢复中[9,5,82]。Chen 等[9]在标准 Transformer 的基础上提出了一种针对各种恢复问题的骨干模型 IPT。然而,IPT 依赖于大量的参数(超过115.5 万个参数)、大规模的数据集(超过 110 万张图像)和多任务学习来获得良好的性能。Cao 等人[5]提出的 VSR-Transformer 利用自注意机制在视频 SR 中进行更好的特征融合,但仍然从 CNN 中提取图像特征。此外,IPT 和VSR-Transformer 都是局部关注,可能不适用于图像恢复。此 外 , 一 项 并 行 研 究 [82] 提 出 了 一 种 基 于 SwinTransformer 的 u型架构[56]。

方法

概述

本文提出了一种基于 Swin Transformer 的图像恢复模型—SwinIR。更具体地说,SwinIR 包括三个模块:浅层特征提取、深层特征提取和高质量图像重建模块。浅层特征提取模块使用卷积层提取浅层特征,直接传输到重建模块,从而保留低频信息。深度特征提取模块主要由残差 SwinTransformer 块(RSTB)组成,每个残差块利用多个 SwinTransformer 层进行局部关注和跨窗口交互。此外,我们在块的末尾添加了一个卷积层用于特征增强,并使用残差连接为特征聚合提供了一条捷径。最后,在重建模块中融合浅特征和深特征,实现高质量的图像重建。

与流行的基于 cnn 的图像恢复模型相比,基于transformer 的 SwinIR 具有以下几个优点:

(1)图像内容和注意力权重之间基于内容的交互,可以解释为空间变化的卷积[13,21,75]。

(2)通过移位窗口机制实现远程依赖建模。

(3)参数更少,性能更好。例如,如图 1 所示,与现有的图像 SR 方法相比,SwinIR 以更少的参数获得了更好的PSNR。

网络体系结构

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1、浅层特征提取

给定一个低质量(LQ)输入ILQ∈RH×W ×C in (H、W和 Cin分别为图像高度、宽度和输入通道号),我们使用一个 3 ×3 卷积层 HSFnull(·)提取浅层特征 F0∈RH×W ×C as

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

卷积层擅长早期视觉处理,导致优化更稳定,结果更好[86]。它还提供了一种将输入图像空间映射到高维特征空间的简单方法。

2、深层特征提取

从 F0中提取深度特征 FDF∈RH×W ×C为

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在 HDF(·)为深度特征提取模块,包含 K 个残差 Swin Transformer 块(RSTB)和一个 3 ×3 卷积层。更具体地说,中间特征 F1 F2 ,……FK 和输出深度特征 FDF 逐块提取为

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在 HRSTBi (·)表示第 i 个 RSTB层,HCONV是最后一
个卷积层。

使用卷积层在特征提取的末端可以将卷积运算的归纳偏置带入到基于transformer 的网络中,为后期浅层和深层特征的聚合奠定更好的基础。

3、特征融合(图像重建)

针对超分,IRHQ通过将浅层和深层特征聚合

[外链图片转存中…(img-vYsp7cTc-1716003176503)]

浅层特征主要包含低频,深层特征侧重于恢复丢失的高频。SwinIR 通过较长的跳线连接,将低频信息直接传递给重构模块,帮助深度特征提取模块专注于高频信息,稳定训练。

对于重构模块的实现,我们使用亚像素卷积层[68]对特征进行上采样。

对于不需要上采样的任务,如图像去噪和 JPEG 压缩伪影减少,使用单个卷积层进行重建。此外,我们使用残差学习来重建 LQ 和 HQ 图像之间的残差,而不是 HQ 图像。其公式为

[外链图片转存中…(img-HbmHXEZW-1716003176503)]

式中,HSwinIR(·)为 SwinIR函数。

4、损失函数

1、针对SR,L1像素损失(与之前工作相同,为了凸显网络结构的有效性):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

IHQ是真实的HQ图像,而IRHQ是前面网络输出结果。

2、针对图像去噪和减少 JPEG压缩伪影,我们使用Charbonnier 损失:

image-20240518095737260

经验设置偏置项为10^-3

残差Swin Transformer块

RSTB是由Swin Transformer 层(STL)和卷积层组成的残差块。给定输入特征 Fi,0 在第 i 个 RSTB 中,我们首先提取中间特征Fi,1, Fi,2,…, Fi,L × L Swin Transformer 层为

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在 HSTLi,j (·) 为第 i 个 RSTB 中的第 j 个 Swin Transformer 层。然后,我们在残差连接前添加一个卷积层。
RSTB的输出公式为

image-20240518100100522

其中Hconvi是第i个RSTB卷积层

优点:

1、虽然 Transformer 可以被视为空间变化卷积的具体实例[21,75],但具有空间不变滤波器的卷积层可以增强 SwinIR 的平移等方差。

2、残差连接提供了从不同块到重建模块的基于特征的连接,允许不同级别特征的聚合。

Swin Transformer 层

Swin Transformer 层(STL)[56]是基于原始 Transformer 层的标准多头自关注[76]。其主要区别在于局部注意和移位窗口机制。

1、将HxWxC的输入转换为MxM的局部窗口(padding)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中HW/M^2是新窗口数量

2、分别计算每个窗口的局部注意力(标准自注意力)

image-20240518100755085

其中 B 为可学习的相对位置编码。在实践中,遵循[76],我们并行执行注意函数 h 次,并将多头自我注意(MSA)的结果连接起来。

(transformer encoder)

3、使用MLP进行进一步的特征转换,该感知器具有两个完全连接的层,它们之间具有GELU非线性。

在 MSA和 MLP之前都添加了 LayerNorm(LN)层,两个模块都使用了剩余连接。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

但是,当为不同的层固定分区时,没有跨本地窗口的连接。因此,常规和移位的窗口分区交替使用以实现跨窗口连接[56],其中移位的窗口分区意味着将特征移动

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传分割前的像素。

实验

1、通道数、RSTB(Residual Swin Transformer Block)数、STL(Swin Transformer Layer)数

对于信道数,虽然性能不断增加,但参数总数呈二次增长。为了平衡性能和模型大小,我们在其余实验中选择 180 作为通道数。

对于 RSTB 数和层数,性能增益逐渐趋于饱和。我们为它们都选择 6,以获得一个相对较小的模型。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2、patch大小和训练图像数量

训练数据量越大,patch size越大,最终效果越好。

4、RSTB残差连接与卷积影响

1)、残差连接。Pos

2)、3x3卷积可以提取局部邻近特征。Pos

3)、1x1,几乎无影响。

4)、多个3x3卷积会减少参数量,但是会影响模型性能。Neg

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

实验结果:

1、在基准数据集上,与最先进的经典图像 SR 方法进行定量比较(平均 PSNR/SSIM)。最佳和次佳表现分别为红色和蓝色。在×8上的结果在附录中提供。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2、在基准数据集上与最先进的轻量级图像 SR方法进行定量比较(平均 PSNR/SSIM)。最佳和次佳表现分别用红色和蓝色表示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3、在基准数据集上使用最先进的 JPEG 压缩伪影减少方法进行定量比较(平均 PSNR/SSIM/PSNR- b)。最佳和次佳性能分别用红色和蓝色表示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4、与最先进的灰度图像去噪方法在基准数据集上的定量比较(平均 PSNR)。最佳和次佳表现分别为红色和蓝色。

5、与最先进的彩色图像去噪方法在基准数据集上的定量比较(平均 PSNR)。最佳和次佳表现分别为红色和蓝色。

[外链图片转存中…(img-oNyBcROt-1716003176506)]

QA

(待补充)

Q:图像超分辨率(包括经典图像、轻量级图像和真实图像超分辨率)、图像去噪(包括灰度图像和彩色图像去噪)和JPEG 压缩伪影减少?

Q:密集连接?残差块,密集块

Q:局部处理?

Q:图像和卷积核之间的交互是内容无关的?

Q:一方面,由于局部注意机制,它具有 CNN处理大尺寸图像的优势。另一方面,它又具有 Transformer 的优势,可以用移位窗口方案对远程依赖进行建模?

Q:卷积层提取浅层特征,低频信息?

Q:sr方法?psnr?

Q:卷积本质?为什么可以将图像转为高维表示?

Q:swin transformer layer(STL)?

Q:类似via, NMP+NAS

A:

Q:上采样与下采样?

A:

Q:L1正则化?

A:

Q:Transformer 可以被视为空间变化卷积的具体实例?

A:

Q:最后一个cnn是怎么增强特征的?

A:

Q:卷积运算的归纳偏置?

A:

Q:HREC与HSwinIR?

A:

Q:vit中MLP不同层使用固定分区与移位窗口分区?

A:

Q:平滑,要么过于锐化,无法恢复丰富的纹理?

A:

Q:边界伪影?

[Ref:Liang J, Cao J, Sun G, et al. Swinir: Image restoration using swin transformer[C]//Proceedings of the IEEE/CVF international conference on computer vision. 2021: 1833-1844.]

相关文章:

论文精读-SwinIR Image Restoration Using Swin Transformer

论文精读-SwinIR: Image Restoration Using Swin Transformer SwinIR:使用 Swin Transformer进行图像恢复 参数量:SR 11.8M、JPEG压缩伪影 11.5M、去噪 12.0M 优点:1、提出了新的网络结构。它采用分块设计。包括浅层特征提取:cnn提取&#…...

解释Spring Bean的生命周期

Spring Bean的生命周期涉及到Bean的创建、配置、使用和销毁的各个阶段。理解这个生命周期对于编写高效的Spring应用和充分利用框架的功能非常重要。下面是Spring Bean生命周期的主要步骤: 1. 实例化Bean Spring容器首先将使用Bean的定义(无论是XML、注…...

CTF网络安全大赛web题目:字符?正则?

题目来源于&#xff1a;bugku 题目难度&#xff1a;难 题目描  述: 字符&#xff1f;正则&#xff1f; 题目htmnl源代码&#xff1a; <code><span style"color: #000000"> <span style"color: #0000BB"><?php <br />highl…...

Linux——Docker容器虚拟化平台

安装docker 安装 Docker | Docker 从入门到实践https://vuepress.mirror.docker-practice.com/install/ 不需要设置防火墙 docker命令说明 docker images #查看所有本地主机的镜像 docker search 镜像名 #搜索镜像 docker pull 镜像名 [标签] #下载镜像&…...

Transformer详解(3)-多头自注意力机制

attention multi-head attention pytorch代码实现 import math import torch from torch import nn import torch.nn.functional as Fclass MultiHeadAttention(nn.Module):def __init__(self, heads8, d_model128, droput0.1):super().__init__()self.d_model d_model # 12…...

运用HTML、CSS设计Web网页——“西式甜品网”图例及代码

目录 一、效果展示图 二、设计分析 1.整体效果分析 2.头部header模块效果分析 3.导航及banner模块效果分析 4.分类classify模块效果分析 5.产品展示show模块效果分析 6.版权banquan模块效果分析 三、HTML、CSS代码分模块展示 1. 头部header模块代码 2.导航及bann…...

大语言模型是通用人工智能的实现路径吗?【文末有福利】

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 关于大语言模型的内容&#xff0c;推荐参考这个专栏。 内容大纲 相关说明一、哲学与人工智能二、内容简介三、书籍简介与福利粉…...

c语言——宏offsetof

1.介绍 &#xff01;&#xff01;&#xff01; offsetof 是一个宏 2.使用举例 结构体章节的计算结构体占多少字节需要先掌握&#xff08;本人博客结构体篇章中已经讲解过&#xff09; 计算结构体中某变量相对于首地址的偏移&#xff0c;并给出说明 首先&#xff0c;结构体首个…...

C#串口通信-串口相关参数介绍

串口通讯(Serial Communication)&#xff0c;是指外设和计算机间&#xff0c;通过数据信号线、地线等&#xff0c;按位进行传输数据的一种双向通讯方式。 串口是一种接口标准&#xff0c;它规定了接口的电气标准&#xff0c;没有规定接口插件电缆以及使用的通信协议&#xff0c…...

节省时间与精力:用BAT文件和任务计划器自动执行重复任务

文章目录 1.BAT文件详解2. 经典BAT文件及使用场景3. 使用方法4. 如何设置BAT文件为定时任务5. 实例应用&#xff1a;自动清理临时文件 BAT文件&#xff0c;也就是批处理文件&#xff0c;是一种在Windows操作系统中自动执行一系列命令的文本文件。这些文件的扩展名为 .bat。通过…...

一年前的Java作业,模拟游戏玩家战斗

说明&#xff1a;一年前写的作业&#xff0c;感觉挺有意思的&#xff0c;将源码分享给大家。 刚开始看题也觉得很难&#xff0c;不过写着写着思路更加清晰&#xff0c;发现也没有想象中的那么难。 一、作业题目描述&#xff1a; 题目&#xff1a;模拟游戏玩家战斗 1.1 基础功…...

C++ 学习 关于引用

&#x1f64b;本文主要讲讲C的引用 是基础入门篇~ 本文是阅读C Primer 第五版的笔记 &#x1f308; 关于引用 几个比较重要的点 &#x1f33f;引用相当于为一个已经存在的对象所起的另外一个名字 &#x1f31e; 定义引用时&#xff0c;程序把引用和它的初始值绑定&#xff08;b…...

BERT ner 微调参数的选择

针对批大小和学习率的组合进行收敛速度测试&#xff0c;结论&#xff1a; 相同轮数的条件下&#xff0c;batchsize-32 相比 batchsize-256 的迭代步数越多&#xff0c;收敛更快批越大的话&#xff0c;学习率可以相对设得大一点 画图代码&#xff08;deepseek生成&#xff09;…...

【MySQL精通之路】系统变量-持久化系统变量

MySQL服务器维护用于配置其操作的系统变量。 系统变量可以具有影响整个服务器操作的全局值&#xff0c;也可以具有影响当前会话的会话值&#xff0c;或者两者兼而有之。 许多系统变量是动态的&#xff0c;可以在运行时使用SET语句进行更改&#xff0c;以影响当前服务器实例的…...

fdk-aac将aac格式转为pcm数据

int sampleRate 44100; // 采样率int sampleSizeInBits 16; // 采样位数&#xff0c;通常是16int channels 2; // 通道数&#xff0c;单声道为1&#xff0c;立体声为2FILE *m_fd NULL;FILE *m_fd2 NULL;HANDLE_AACDECODER decoder aacDecoder_Open(TT_MP4_ADTS, 1);if (!…...

【C语言深度解剖】(15):动态内存管理和柔性数组

&#x1f921;博客主页&#xff1a;醉竺 &#x1f970;本文专栏&#xff1a;《C语言深度解剖》 &#x1f63b;欢迎关注&#xff1a;感谢大家的点赞评论关注&#xff0c;祝您学有所成&#xff01; ✨✨&#x1f49c;&#x1f49b;想要学习更多C语言深度解剖点击专栏链接查看&…...

力扣每日一题 5/25

题目&#xff1a; 给你一个下标从 0 开始、长度为 n 的整数数组 nums &#xff0c;以及整数 indexDifference 和整数 valueDifference 。 你的任务是从范围 [0, n - 1] 内找出 2 个满足下述所有条件的下标 i 和 j &#xff1a; abs(i - j) > indexDifference 且abs(nums…...

(1)无线电失控保护(一)

文章目录 前言 1 何时触发失控保护 2 将会发生什么 3 接收机配置...

基于51单片机的多功能万年历温度计—可显示农历

基于51单片机的万年历温度计 &#xff08;仿真&#xff0b;程序&#xff0b;原理图&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 本设计基于STC89C52&#xff08;与AT89S52、AT89C52通用&#xff0c;可任选&#xff09;单片机以及DS1302时钟芯片、DS18B…...

【软件设计师】下午题总结-数据流图、数据库、统一建模语言

下午题总结 1 试题一1.1 结构化语言 2 试题二弱实体增加权限增加实体间联系和联系的类型 3 试题三3.1 UML关系例子 3.2 例子&#xff08;2016上半年&#xff09;3.3 设计类分类3.3.1 接口类3.3.2 控制类3.3.3 实体类 3.4 简答题3.4.1 简要说明选择候选类的原则3.4.2 某个类必须…...

CSDN 自动评论互动脚本

声明 该脚本的目的只是为了提升博客创作效率和博主互动效率,希望大家还是要尊重各位博主的劳动成果。 数据库设计 尽量我们要新建一个数据库csdn_article,再在其中建一个数据表article -- csdn_article-- article-- 需要进行自动评论的表格信息...CREATE TABLE `article`…...

Tomcat端口配置

Tomcat是开源免费的服务器&#xff0c;其默认的端口为8080&#xff0c;本文讲述一下如何配置端口。 最后在浏览器中输入localhost:8888即可打开Tomcat界面...

SpringBoot中使用AOP实现日志记录功能

目录 一、SpringBoot框架介绍 二、什么是 AOP 三、日志记录的必要性 四、SpringBoot中如何使用AOP实现日志记录功能 一、SpringBoot框架介绍 SpringBoot是一个开源的Java开发框架&#xff0c;旨在简化基于Spring框架的应用程序的开发。它提供了一套开箱即用的工具&#xf…...

kubernetes(k8s) v1.30.1 helm 集群安装 Dashboard v7.4.0 可视化管理工具 图形化管理工具

本文 紧接上一篇&#xff1a;详细教程 Centos8.5 基于 k8s v1.30.1 部署高可用集群 kubeadm 安装 kubernetes v1.30.1 docker集群搭建 延长证书有效期-CSDN博客 1 Dashboard 从版本 7.0.0 开始&#xff0c;不再支持基于清单的安装。仅支持基于 Helm 的安装. #Helm 下载安装 …...

CS144(所有lab解析)

CS144 lab0-CSDN博客 (CS144 2024)Lab Checkpoint 1: stitching substrings into a byte stream &#xff08;详细解析&#xff09;-CSDN博客 CS144 Lab2 &#xff08;2024&#xff09;超详细解析-CSDN博客 Lab Checkpoint 3: the TCP sender-CSDN博客 CS144 Checkpoint 4: in…...

LeetCode 热题 100 介绍

"LeetCode热题100"通常是指LeetCode上被用户频繁练习和讨论的100道热门题目。这些题目往往对于面试准备和算法学习非常有帮助。 哈希 两数之和 难度&#xff1a;简单链接&#x1f517;&#xff1a; 这 字母异位词分组 难度&#xff1a;中等链接&#x1f517;&#x…...

Flutter 中的 AnimatedPhysicalModel 小部件:全面指南

Flutter 中的 AnimatedPhysicalModel 小部件&#xff1a;全面指南 Flutter 的 AnimatedPhysicalModel 是一个功能强大的小部件&#xff0c;它允许开发者创建具有物理效果的动画形状变换。这个小部件非常适合需要展示平滑过渡和动态交互的场景&#xff0c;如按钮按下效果、卡片…...

第二十届文博会沙井艺立方分会场启幕!大咖齐打卡!

2024年5月24日-27日&#xff0c;第二十届中国&#xff08;深圳&#xff09;国际文化产业博览交易会沙井艺立方分会场活动将在艺立方非遗&#xff08;文旅&#xff09;产业园盛大举办。 本届文博会艺立方分会场活动办展特色鲜明&#xff0c;亮彩纷呈&#xff0c;将以“种下梧桐树…...

【Vue】computed 和 methods 的区别

概述 在使用时&#xff0c;computed 当做属性使用&#xff0c;而 methods 则当做方法调用computed 可以具有 getter 和 setter&#xff0c;因此可以赋值&#xff0c;而 methods 不行computed 无法接收多个参数&#xff0c;而 methods 可以computed 具有缓存&#xff0c;而 met…...

HarmonyOS 鸿蒙应用开发 - 创建自定义组件

开发者定义的称为自定义组件。在进行 UI 界面开发时&#xff0c;通常不是简单的将系统组件进行组合使用&#xff0c;而是需要考虑代码可复用性、业务逻辑与UI分离&#xff0c;后续版本演进等因素。因此&#xff0c;将UI和部分业务逻辑封装成自定义组件是不可或缺的能力。 1、创…...