Artfairy's blog

Hello,world.


  • 首页

  • 简历

  • 标签

  • 分类

  • 归档

  • 日程表

基于SpringBoot+Mybatis+Thymeleaf的员工信息管理系统

发表于 2022-04-12 | 分类于 项目

基于SpringBoot+Mybatis+Thymeleaf的员工信息管理系统

本项目是一个采用SpringBoot框架开发的轻量级后台管理系统,其主要逻辑与模块:

  • 系统模块架构:实体类包括用户信息类、部门信息类;Dao层使用xml文件编写SQL语句;Service层封装增删改查的方法;Controller层处理外部请求并返回页面。
  • 登录验证和授权管理:使用SpringSecurity框架实现高效的拦截器功能,控制普通账户和管理员账户的页面访问权限和数据修改权限。
  • 数据库连接池:配置Druid数据源,实时监控SQL执行信息。

涉及技术:

  • 使用maven进行项目构建与管理

  • 使用Springboot+Mybatis快速搭建系统

  • 使用MySQL数据库管理信息

  • 使用Thymeleaf模板引擎实现页面静态化

  • 使用SpringSecurity实现认证与授权服务

用于图像去噪的双CNN神经网络的设计与训练

发表于 2022-4-12 | 分类于 论文

用于图像去噪的双CNN神经网络的设计与训练

摘要

​ 用于图像去噪的深卷积神经网络(CNNs)近年来引起了越来越多的研究兴趣。然而,普通网络不能恢复复杂任务的精细细节,例如真实的噪声图像。在本文中,我们提出了一种双重去噪网络(DudeNet)来恢复干净的图像。具体地,DudeNet由四个模块组成:特征提取块、增强块、压缩块和重构块。特征提取模块采用稀疏机制,通过两个子网络分别提取全局特征和局部特征。增强块收集并融合全局和局部特征,为后一种网络提供补充信息。压缩块细化提取的信息并压缩网络。最后,利用重建块重建去噪后的图像。DudeNet具有以下优点:

(1)具有解析机制的双重网络可以提取互补特征,增强去噪器的泛化能力。

(2)融合全局特征和局部特征可以提取显著特征,恢复复杂噪声图像的精细细节。

(3)采用小尺寸滤波器来降低去噪器的复杂度。大量的实验证明了DudeNet比现有最先进的去噪方法的优越性。

引言

​ 图像去噪是低级计算机视觉领域的一个长期存在的问题[1,2]。一般而言,它可用于通过退化模型y=x+v恢复高质量图像(也被视为潜在的干净图像)x,其中y表示受污染(有噪声)图像,v是标准差为σ的加性高斯白噪声。在贝叶斯推理观点中,先验知识对图像去噪有重要影响[3]。例如,加权核范数最小化(WNNM)[4]利用奇异值来导出不同的权重作为解。然后,小波NNM处理基于非局部自相似性的图像去噪。块匹配和3-D滤波(BM3D)方法[5]结合了3D数据和稀疏性,优先处理图像去噪问题。同时使用信号处理技术和现有技术有利于图像处理应用[6]。为了提高去噪的效率,开发了字典学习技术来抑制噪声[7]。

​ 虽然基于先验的方法可以获得很好的去噪效果,但它们面临着参数手动设置和复杂的优化算法的挑战。针对这些问题,提出了多种判别学习方法来训练图像先验模型。例如,施密特等人提出了收缩场级联(CSF)模型[8],利用展开的半二次优化算法进行图像恢复。Chen等人设计了可训练非线性反应扩散(TNRD)方法[9]来训练基于梯度下降推理的专家领域图像先验的去噪模型。虽然这些方法对图像去噪效果较好,但它们的应用受到所用先验的限制。此外,它们需要几个手动调整的参数才能获得最佳参数[10]。另外,上述方法只适用于一定的噪声水平,对盲去噪效果不佳。

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image001.png)

​ 最近提出的CNN在很大程度上改进了图像去噪[11]。张等人提出了去噪卷积神经网络(DnCNN)[10],它使用残差学习(RL)和批处理重整化(BN)[12]来去除噪声。具体地说,DnCNN首先应用单个模型来处理多个应用,例如,图像去噪、超分辨率和去块。这些多用途方法的有效性取决于所使用的核心结构。如果它们的核心结构不能很好地恢复动态或复杂任务的清晰图像细节,例如真实世界中损坏的图像和盲噪声,这些方法可能不能很好地执行[13]。为了解决这些问题,我们提出了一种计算量较小的双重去噪网络(DudeNet),如图1所示。DudeNet由四个部分组成:特征提取块(FEB)、增强块(EB)、压缩块(CB)和重构块(RB)。具体地说,具有稀疏机制的FEB首先从给定的噪声图像中提取全局和区域特征。然后,为了逐步增强残差信息,EB通过两阶段机制融合全局特征和局部特征,为后一网络提供补充信息。然后,对CB进行叠加,提取得到的残差图像,减少局部参数的个数。最后,RB从残差和噪声图像中重建出潜在的干净图像。

拟议的DudeNet有几个优点:

(1)采用稀疏机制的双网络可以提取不同的特征,提高去噪器处理复杂任务(如真实世界中的图像和盲噪声)的泛化能力。提出的双网络具有稀疏机制,可以提取不同的特征,提高去噪器处理复杂任务的能力。

(2)融合全局特征和局部特征可以获得显著的特征来恢复细节,可以合并双网络来处理复杂的去噪任务。

(3)采用小尺寸滤波器来降低去噪器的复杂度。

本文的其余部分组织如下:第二节综述了与我们提出的方法相关的几项工作。第三节详细阐述了拟议的DudeNet。第四节给出了所提出的DudeNet的综合实验结果,并进行了深入的分析。第五节得出结论。

2 相关工作:

A. 深度CNN在图像去噪中的应用:

由于深层CNN的表达能力强、速度快,许多基于CNN的去噪方法已经成为低层视觉任务的热门方法[14]。张某等人提出了一种快速灵活的去噪网络以及基于噪声级图和含噪图像的FFDNet盲去噪方法[15]。为了更好地权衡效率和专门任务之间的关系,张等人提出了一种新的解决方案。提出了一种判别学习和基于模型优化相结合的图像复原CNN(IRCNN)[16]方法来预测干净的图像。为了便于培训,刘等人提出了一种深度多层小波CNN(MWCNN)[17],它融合了Unet结构[18]和小波来提取频率特征,用于图像恢复任务。Tai等人的研究成果提出了一种由递归和门单元组成的深层次持久存储网络(又称MemNet)[19]来恢复高质量的图像,以挖掘更准确的信息。毛等人开发了一种更深的30层残差编解码器网络(RED30)[20],由大量卷积和随后的转置卷积组成,以获得更清晰的图像。虽然有些方法在图像恢复方面取得了很好的效果,但它们都依赖于主体结构。当主要结构的细节恢复良好时,其性能是完美的。然而,对于多变或复杂的任务,如盲噪声和真实噪声图像,主要结构不能很好地恢复,这些方法效果不佳[13]。为了解决这个问题,潘等人[13]提出用双卷积神经网络提取互补特征来增强低水平视觉任务中恢复的细节。受此启发,我们使用双CNN来去除噪声,特别是变化的噪声图像(即现实应用中的受损图像和盲噪声)。

B. 用于图像去噪的基于深度CNN的模块:

由于端到端的连接架构,具有灵活插件的CNN被广泛用于许多任务,即图像[21]、视频[22]和文本应用[23]。具体地说,CNN中的模块或块用于低级计算机视觉,特别是图像超分辨率[24,25]和去噪[26]。基于模块的深度神经网络主要分为两类:提高性能、加快速度。对于第一个方面,学者们主要是融合获得的多个特征来增强CNN的表达能力。例如,深度提升框架(DBF)[27]使用特征提取、特征集成和重构块来抑制噪声。具体地说,特征集成块使用多个级联操作来融合特征。级联残差网络(CARN)[28]通过重复级联残差块实现图像超分辨率的集成特征。残差密集网络(RDN)[29]通过递归使用残差块来重复融合全局和局部特征,以提高图像的超分辨率性能。

对于第二个方面,压缩网络是提高网络速度的常用方法。例如,一种轻量级特征融合网络(LFFN)[30]被用来减小卷积核大小和压缩训练模型。自适应加权超分辨网络(AWSRN)[31]利用自适应加权多尺度(AWMS)模块对小尺度卷积进行裁剪。信息提取网络(IDN)[32]使用三个块(即,信息提取块、信息提取块、构造块)来提取所获得的特征。具体地说,信息精馏模块使用1×1的分组卷积和卷积核来降低网络参数和计算量。这些方法在图像超分辨率或去噪性能或效率上都取得了较好的效果。因此,本文提出了基于块的DudeNet来缩小去噪效率和去噪性能之间的差异,以达到去噪的目的。DudeNet的详细信息将在第三节中显示。

3 所提方法:

A 网络结构:

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image002.png)

​ 如图1所示,所提出的DudeNet由四个部分组成:特征提取块(FEB)、增强块(EB)、压缩块(CB)和重构块(RB)。FEB采用稀疏机制,既能提取不同的特征,又能降低网络的深度。EB通过将特征融合在两个子网络中来增强提取的特征,这对于被未知类型的噪声污染的图像特别有用,例如许多真实的被破坏的图像和盲噪声。CB对网络进行压缩,以降低计算成本。最后用RB重建干净的图像。

​ 具体地,FEB包含两个子网络,分别是FEB-Net1和FEBnet2,其中FEBnet1包括稀疏机制。我们将DudeNet的输入表示为Y,输出表示为X。利用这两个16层子网络从输入的含噪图像中提取两个不同的特征映射。FEB CAN的过程表示为:

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image003.png)

​ 其中,Fi(Y)和FEBi分别表示第i个网络的特征提取函数和提取的特征。

​ EB包含两个部分:增强块1(EB1)和增强块2(EB2)。FEB的输出被送入EB1,EB1通过链式方式融合来自FEB的上述两个子网的两个不同的特征:

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image004.png)

​ 其中E表示EB1和EB2的功能,OE1表示EB1的输出。

​ CB由三个压缩块(CB1)、压缩块2(CB2)和压缩块3(CB3)组成。请注意,CB1集成在FEBnet1中。放置在EB1和EB2之间的CB2用于细化提取的特征,如下所述:

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image005.png)

​ 其中C1分别表示CB1、CB2和CB3的功能。OCB2是CB2的输出。

在CB2之后,EB2用于获取如下公式的补充信息:

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image006.png)

​ 其中OE2代表EB2的输出。

​ 然后,CB3进一步对EB2的输出进行如下处理:

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image007.png)

​ 其中OCB3表示CB3的输出。

​ 最后,利用RB构造潜在的干净版本。使用以下残差运算从所获得的残差特征OCB3中提取输入Y:

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image008.png)

​ 其中‘−’表示残差操作。

B.特征提取块(FEB):

​ FEB用于提取可靠的视觉特征。FEB由第一网络和第二网络组成。具体地说,第一个网络可以分为三个模块:Conv+BN+RELU、扩展Conv+BN+RELU和Conv。具体地说,在所提出的稀疏机制中,扩张卷积+BN+RELU依次执行扩张卷积[33]、批归一化[12]和校正线性单元[34]。Conv+BN+RELU在第1、3、4、6、7、8、10、11、13、14、15层起作用,扩张型Conv+BN+REU设计在第2、5、9、12层,Conv形成第16层。所有卷积层的滤波器大小均设置为3×3,2-16层的大小为64×3×3×64。第1层的大小为c×3×3×64,其中c是通道号,其中c=1和c=3分别表示输入的噪声图像是灰度图像和彩色图像。此外,层2-12包括FEBnet1中的稀疏机制。文献[35]表明,稀疏性可以放大少量大能点的效应。基于此,我们在FEB1的FEBnet1中提出了一种稀疏机制。具体地说,第2、5、9和12层通过一系列膨胀因子为2的膨胀卷积可以捕捉到丰富的上下文信息,即大能量点。FEBnet1的其他层进行普通卷积提取的特征比膨胀卷积层提取的特征相对较少,即小能量点。大能点和低能点的联合利用利用了稀疏性。因此,FEBnet1中的第2-12层称为稀疏机制。因此,FEBnet1的功能可以表示如下:

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image009.png)

​ 其中CBR1、S、CBR3和C分别代表Conv+BN+REU的功能,设计了稀疏机制,设计了3个Conv+BN+REU和1个3×3卷积。这被转换为F1(Y)=feb1通过(1)。

​ 第二子网FEBnet2包含两个不同的模块:Conv+RELU和CB1。具体地说,Conv+REU指的是滤波器大小为3×3的卷积,然后是RELU。CB1通过1×1卷积层实现。第2-15层的尺寸均为64×3×3×64。第1层和第16层的尺寸分别设计为c×3×3×64和64×1×1×64,其中c为通道数。FEBnet2的程序可以制定如下:

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image010.png)

​ 其中CR15表示十五个Conv+REU的功能。

C. 增强模块(EB):

​ EB使用两个部分来增强所设计网络的学习功能,适用于实际应用中的未知类型的噪声,如受损图像和盲噪声。拟议的EB在FEB和CB3之间工作,包括EB1和EB2两个部分。具体地说,EB1在FEB和CB2之间起作用。EB1由三部分组成:融合部分、BN部分和RELU部分。首先,融合部分通过串联操作集成来自不同网络(第一和第二网络)的两种不同类型的特征[36]。众所周知,在第一个网络中通过膨胀卷积获得的特征与在第二个网络中通过膨胀卷积获得的特征是不同的,这导致在EB1中获得的特征的分布有很大的不同。因此,使用BN来消除不良影响。最后,利用RELU将得到的线性特征转换为非线性特征。这一过程可以制定如下:

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image011.png)

​ 其中B是BN的函数,R表示激活函数RELU。EB2,介于CB2和CB3之间,将DudeNet的输入和CB2的输出连接起来,产生重要信息。这一过程可以用以下表达式表示:

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image012.png)

​ 其中OE2扮演CB3的角色。

D. 压缩块(Cb)和重建块(Rb):

​ 利用CB对提取出的特征进行更准确的提取,降低了计算量。它由CB1、CB2和CB3三部分组成。具体地说,尺寸为64×1×1×64的CB1被放置在Feb的FEBnet2的第16层中,尺寸为128×1×1×c的CB2被放置在EB1和EB2之间,尺寸为2c×1×1×c的CB3被放置在EB2和Rb之间,其中c是通道尺寸。此外,CB1、CB2和CB3由1×1卷积实现,这可以降低它们的维数并提高DudeNet的效率,因为已知1×1的卷积可以压缩数据[32]。上面的插图显示了CB1和CB2。因此,CB3着重显示如下。

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image013.png)

​ 其中,OCB3表示如图1所示的残差图像(视为噪声映射)。RB使用(6)来构造预测的干净图像。

E.损失函数:

​ 我们使用下面的均方误差(MSE)[37]作为目标函数(也称为损失函数)来测量预测残差图像R(Yj)和对应的地面真实图像Yj−Xj之间的差异,其中Xj表示第j个清洁图像:

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image014.png)

​ 其中θ表示DudeNet中训练的模型的参数。{(yj,xj)}nj=1表示N个噪声-清洁图像对。损失函数用于通过ADAM优化器[38]恢复潜在清洁图像。

4 实验:

A. 训练数据集:

​ 我们的训练数据分为两部分:合成图像和真实噪声图像。大小为180×180的合成噪声图像包括灰度图像和彩色图像。为了创建该训练集,我们为合成噪声数据选择了相同的400幅图像[6]。我们使用以下两种方法[39]来增加合成噪声图像的训练数据。(1)采用降尺度因子为0.7、0.8、0.9和1的双三次插值对训练数据集进行扩展。(2)采用以下八种操作来增加训练样本的多样性:无操作(即,原始图像)、90◦逆时针旋转、180◦逆时针旋转、2 70◦逆时针旋转、水平翻转、90◦逆时针旋转然后水平翻转、180◦逆时针旋转然后水平翻转、270◦逆时针旋转然后水平翻转。为了使训练后的模型更稳健,每次操作只能应用于一幅图像,并且每幅图像在一个时期内使用四次。

​ 对于真实的噪声图像,我们使用大小为512×512的100个JPEG压缩图像[40]作为训练数据,这些图像是使用五种不同的数字设备收集的:佳能80D、尼康D800、佳能600D、索尼A7 II和佳能5D Mark II,它们带有不同参数的传感器(即800、1,600、3,200、6,400、12,800和25,600)。由于这些真实的噪声图像被压缩,对图像去噪提出了更大的挑战。

B.测试集:

​ 所提出的DudeNet在五个公共基准数据集上进行了测试:BSD68[41]、Set12[7]、CBSD68[41]、Kodak24[42]和CC[43]。在这些数据集中,BSD68和Set12分别包含68个和12个不同场景的灰度图像。两个数据集中每个图像的大小分别为321×481和256×256。CBSD68和Kodak24分别包含68色和24色自然图像。CBSD68和Kodak24的图像大小分别为321×481和500×500。CC包含15个损坏的512×512真实世界,部分如图2所示,由3个数字设备捕获:佳能5D Mark III、尼康D600和尼康D800,具有三个ISO值(例如1,600、3,200和6,400)。

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image015.png)

C.实施细节:

​ DudeNet的深度为18。为了加快训练速度,按照文献[44]的建议,将训练样本裁剪成大小为41×41的块来训练去噪模型。在训练阶段,初始参数设置如下:学习率为10−3,ε=10−8,批次大小为。12 8,β1=0.9,β2=0.999[45]。培训的数量:对于真实和合成噪声图像的去噪模型,Epochs为70,其中学习率设置为10−3到10−5。

D.网络分析:

​ 1)感受野的设计:与整个图像相比,将图像分成多个块可以降低计算成本[44]。具体地说,补丁的大小通常略大于所设计网络的接收场大小。在DudeNet中,第一和第二网络的感受野大小分别为41×41和32×32,遵循[33]。需要注意的是,补丁的大小应该大于DudeNet的接受场大小,否则,补丁的大小不能满足网络填充的要求,这将降低去噪性能。考虑到计算量和去噪性能之间的权衡,我们将两个子网的平均接收场大小取为FEB:(41+32)/2=36.5≈37。因此,DudeNet的总体感受野大小为39×39,斑块大小选择为41×41。

​ 2)FEB的设计、分析和有效性:为了提取准确的特征,我们采用了特征融合的方法来增强DudeNet的表示能力。也就是说,FEB包括第一和第二网络。对于第一种网络,所提出的稀疏机制是一个重要的组成部分,具有以下优点:

​ 首先,它可以更好地恢复潜像的细节。其次,它可能导致浅层次的结构,这有利于解决长期依赖问题。第三,浅DudeNet具有较低的计算复杂度。

具体实现见第三节C部分。具体而言,该机制用具有较大膨胀因子的膨胀卷积来模拟大能量点,而用具有小膨胀因子的卷积来表示小能量点以实现稀疏性。然而,选择大的能源点是至关重要的。我们分别从稀疏性特征和网络设计两个方面解释了原因。

​ 对于稀疏性,我们知道大的能量点是不规则分布的[47]。在此基础上,提出了寻找大能源点的具体要求。

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image016.png)

​ 大能量点在CNN中不是连续的、等距的,这有利于提高去噪性能。如果CNN中的大能量点是连续的,这将导致信息丢失。具体地说,CNN的记忆能力是有限的[48]。CNN的后一层由于不能完全理解前一层的信息,需要学习更大范围的新内容。证明了“连续高能点CB2、CB3网络”的性能比表I所示的“具有稀疏机制的第一网络CB2和CB3(FS)”的性能要差。具体地说,“连续高能点网络CB2、CB3”是CB2、CB3和第一个具有2-5层高能点(膨胀卷积)的网络的组合。此外,还注意到局部地区的网络差异越大,其性能越好[29]。因此,我们在CNN中不会选择等距的大点。这一点通过表I中的“FEBnet1的层2、层5、层8和层11的膨胀因子为2的DudeNet”和“DudeNet”进行了验证。

​ 3)大能量点不多,能保证去噪效率:举个例子,Elep在处理噪声图像时比FS消耗更多的运行时间,如表II所示。

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image017.png)

​ 对于网络结构来说,大能量点是连续的、等距离的、多个的,这会导致效率低、去噪性能差。举个例子,我们假设第一个网络中的每一层都使用膨胀卷积。这需要在第一个网络的每一层进行填充操作,效率较低,如表II所示的“Elep”和“FS”。此外,当感受野的大小大于输入图像的块大小时,特征映射需要零填充,这会降低去噪性能。从表I中比较ELEP和FS的性能可以看出这一点,因此,在图像去噪中放弃了这一思想。此外,稀疏机制在效率和性能上具有竞争力。具体地说,FS的感受场大小为43×43,与核大小为3×3的21层相比,其去噪效果较好,但只有18层,降低了网络深度,提高了去噪效率。

在去噪性能方面,我们通过对表I中的“DudeNet”和“RB、EB、CB和FEB的组合(没有稀疏机制)”和“没有CB2和EB2的DudeNet”的性能进行比较,证明了稀疏机制的有效性。综上所述,FEB的FEBnet1中提出的稀疏机制是有效的。此外,FEBnet2对FEBnet1进行了合并以提高去噪性能,这将在EB中详细说明。

​ 4)EB的设计、分析和有效性:值得注意的是,不同的网络可以从多个角度提供互补的信息[48]。而且CNN的地方架构差异更大,效果更好[29]。基于此,我们提出了一种增强学习能力的EB。具体地说,EB包括EB1和EB2两个部分。EB1集合了两个子网络,在深度相同的情况下提高了网络的表达能力。可以看出,“RB、EB1、CB和FEB无稀疏机制和BN的组合”比“FWS”和“第二个有CB2和CB3的网络”获得了更高的峰值信噪比(PSNR)。“有CB2的DudeNet和没有EB2的DudeNet”优于“FS”和“有CB2的第二个网络和CB3”。证明了FEB和EB1相结合对图像去噪是非常有效的。具体地说,两个子网络只使用一种稀疏机制来扩大FEB的差异,这在表I中是有效的,例如“具有两个稀疏机制的DudeNet”和“DudeNet”。证明了具有稀疏机制的双网络可以提取不同的特征,提高了去噪器的泛化能力。

​ EB2融合了获得的局部特征和原始图像信息,也可以为第一阶段和以后的网络提供补充信息。通过比较“无稀疏机制的Rb、EB1、Cb和FEB的组合”和“无稀疏机制的Rb、Eb、Cb和FEB的组合”、“DudeNet”和“DudeNet有Cb2和无EB2的DudeNet”来验证这一点。同时,BN并入FEB和EB对DudeNet有积极的影响,这反映在表I中。其原因有以下两点。首先,第一个网络中的膨胀卷积会导致所获得的特征分布不同。其次,从两个不同的网络中获取的特征不同,导致融合后的特征分布不同。这些都对图像去噪有很好的效果。因此,我们选择BN进入第一个网络,并在FEB份选择EB1来分别解决这些问题。此外,值得注意的是,EB1和EB2融合了局部特征和全局特征来增强表达能力,非常适合于未知的受污染图像,如真实世界中的噪声图像和盲去噪。

​ 5)CB的设计、分析和有效性:为了提高效率,CB通过1×1卷积的方式对冗余特征信息进行打折。由于CB1被嵌入到FEB的第二个网络中,CB3可以将噪声特征转换为噪声映射(也称为噪声图像)。因此,我们只证明了CB2算法对图像去噪的有效性。也就是说,“有CB2的DudeNet和没有EB2的DudeNet”获得了比表I所示的“没有CB2和EB2的DudeNet”更高的PSRN。此外,如表I-III所示,有CB的DudeNet(也称为DudeNet)在性能、运行时间和计算成本方面与“每层内核大小为3×3的DudeNet”具有很强的竞争力。具体地说,为了使去噪结果更具说服力,DudeNet深度参考了DnCNN。然而,由于EB2和CB3的存在,DudeNet的深度在DnCNN之上有一层。另外,我们的网络比DnCNN更广。考虑到这些因素,我们选择18层的“两个DnCNN”作为比较方法,从峰值信噪比、运行时间和复杂度三个方面对去噪性能进行测试,其中“两个DnCNN”是由两个相同的DnCNN串联而成的。

​ 在去噪效果上,‘DudeNet’优于表I所示的‘DnCNN’和‘Two DnCNN’。从运行时可以看出,对于有噪声的图像,‘DudeNet’接近于‘Two DnCNN’(即256×256、512×512和1024×1024)。从复杂度来看,‘DudeNet’比‘Two DnCNN’具有更少的参数和Gflops。就去噪网络的复杂度而言,“DudeNet”优于“RED30”和“每层核大小为3×3的DudeNet”。这表明该器件结构浅,滤波器尺寸小,具有较小的计算量和存储量。因此,我们的DudeNet对图像去噪是有效和高效的。

E. 与最先进的去噪方法的比较:

​ 本文对灰度和彩色合成噪声图像、盲去噪图像和真实噪声图像四个应用进行了对比实验,并对每幅图像的运行时间进行了比较。对于这些实验,我们选择了最先进的方法,包括BM3D[5],WNNM[4],期望补丁对数似然(EPLL)[44],多层感知器(MLP)[52],CSF[8],TNRD[9],DnCNN[10],DnCNN用于盲去噪(DnCNN-B)[10],IRCNN[16],FFDNet[15],目标图像去噪(TID)[53。具体地说,我们使用PSNR[55,56]和运行时间作为比较去噪方法的性能指标:PSNR=10×log10((Max)2),其中Max和MSE MSE分别是给定的干净图像和预测的干净图像之间的最大像素值和均方误差。

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image018.png)

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image019.png)

​ 灰度和彩色合成噪声图像:表IV列出了基准数据集BSD68上的灰度合成噪声图像的平均PSNR。可以看出,DudeNet的性能优于几种最先进的去噪器,即DnCNN和FFDNet。此外,带盲去噪的DudeNet(DudeNet-B)也获得了较好的性能。例如,当σ=50时,DudeNet-B比DNCNN有0.02dB的改善。图3显示了来自BSD68上的BM3D、IRCNN、FFDNet、DudeNet和DudeNet-B的可视图像。表V显示了DudeNet对每一类灰度合成噪声图像的良好去噪性能,其中对于不同的噪声级别(即15、25、50)其去噪效果最佳。图4显示了最终图像。可以看出,DudeNet产生的图像比IRCNN清晰得多。从表VI看,在不同的噪声水平(即15、25、35、50、75、[0,55])下,DudeNet和DudeNet-B与CBSD68和Kodak24的其他常用彩色合成噪声图像方法相比具有很强的竞争力。

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image020.png)

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image021.png)

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image022.png)

2)盲去噪:DudeNet–盲去噪模型。B从0训练到55 3)真实噪声图像:表VII显示了真实噪声图像的去噪性能。

​ DudeNet取得了很好的效果,比DnCNN提高了1.86dB。综上所述,我们的去噪模型适用于复杂的噪声任务,如彩色合成噪声图像、盲降噪和真实噪声图像。如表IV-VI所示,我们可以看到DudeNet-B在灰度和彩色图像去噪方面与FFDNet和IRCNN相比具有很强的竞争力。这证明了我们的模型对盲去噪具有很好的鲁棒性。

![img](Users/tianjirong/Library/Group Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image023.png)

​ 表八显示了9种方法在每个不同大小的图像上的运行时间,其中DudeNet比最先进的去噪器(即RED30和MemMet)更具竞争力。表IV-VIII说明了不同方法的去噪性能(即PSNR和运行时间),其中红线和蓝线分别表示图像去噪的最佳和次佳结果。根据前面第四节D节的分析和第四节E节的实验验证,我们可以将本文的优点提炼如下:

首先,具有稀疏机制的双网络可以提取不同的特征,以增强去噪器处理复杂任务(如真实噪声图像和盲噪声)的广义能力。

其次,将全局特征和局部特征相结合,可以获得显著的特征来恢复细微的细节,从而可以合并双网络来解决复杂的任务。

最后,采用较小的滤波器尺寸来降低去噪器的复杂度。

结论

​ 本文提出了一种新的DudeNet图像去噪方法。DudeNet使用双重网络来提取不同的特征,以增强学习特征的表示能力以进行去噪。DudeNet的稀疏机制可以很好地在去噪性能和处理速度之间进行权衡,通过提取全局和局部特征来融合它们,获得显著的特征,从而恢复复杂噪声图像的精细细节。我们还提出使用压缩块来减少冗余信息,从而降低计算成本和内存消耗。大量实验表明,DudeNet具有较高的视觉质量和计算效率。在未来,我们打算扩展DudeNet来处理多个低级视觉任务,包括图像超分辨率和去模糊。

基于测量条件生成模型的压缩感知

发表于 2022-4-12 | 分类于 论文

基于测量条件生成模型的压缩感知

摘要

​ 压缩感知(CS)中经常采用预训练生成器,因为它能够在NNS先验的情况下有效地估计信号。为了进一步提炼基于神经网络的先验,我们提出了一个框架,允许生成器学习特定于测量的先验分布,从而对测量产生更准确的预测。
我们的框架有一个简单的形式,它只利用来自给定测量的额外信息进行先前学习,所以它可以很容易地应用于现有的方法。尽管该框架结构简单,但我们通过大量的实验证明,我们的框架表现出了一致的优越性能,并且在某些应用中可以将重建误差降低到一个数量级。我们还从理论上解释了实验的成功,表明我们的框架可以略微放宽严格的信号存在条件,这是保证信号恢复成功所必需的。

1.引言:

​ 几十年来,压缩传感(CS)一直是一种流行的方法,用于在设备数量大于测量大小时恢复信号,例如在通信中[1,2,3],或者在医学成像[4,5,6]和光学成像[7]中测量非常昂贵。CS的目标是在给定欠采样测量向量y∈Rm的情况下,在以下线性关系下估计信号x∈Rd:

​ 其中A∈Rm×d是给定的感测矩阵,使得m<d,并且ω是未知噪声。由于(1)是欠定线性系统,它需要对信号做一些基本假设以保证解的唯一性。关于CS的经典文献假设x在某些已知基上是稀疏的,并通过L1-最小化来求解(1)。

​ 由于神经网络在有监督学习(包括回归和分类任务)和无监督学习(如聚类和密度估计任务)方面都取得了巨大的成功,因此近年来许多研究者致力于利用神经网络作为CS的结构假设[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,6]。特别地,在[22]中证明了使用预训练生成器(CSPG)的CS能够通过利用特定于领域的先验而不是通用稀疏先验来重构信号。尽管使用LASSO[25]的方法仅从由某一算子(例如,小波变换)变换的数据中捕获信号稀疏性,但现实世界的数据具有除稀疏性之外的多种特征。结果,训练生成模型使其生成器能够学习特定于领域的分布,这允许信号恢复,即使在稀疏先验的情况下,与理论下界相比,测量次数更少。

​ 遗憾的是,CSPG的前人工作[22,18,26,27,10,8,14]只涉及训练生成器来推断信号本身的先验概率分布。由于每个训练信号的测量向量在训练生成器时都是可用的,因此我们可以通过使生成器依赖于测量并学习在测量条件下的信号分布来进一步优化生成器。在本文中,我们集中讨论如何帮助生成器学习这种测量条件分布。

我们的贡献有三个方面:

  • 我们提出了一个框架,使生成器能够学习特定于测量的先验分布p(x|y)。据我们所知,我们的框架是首次尝试将y插入到CS的生成模型中。
  • 我们为学习测量条件先验提供了理论支持,我们的框架减轻了严格的信号存在假设,从而使信号重构更加成功
  • 我们的经验表明,在各种各样的先前工作的基础上,我们取得了持续的、相当大的改进。在以往生成性模型难以重建(即MRI图像重建)的真实数据上,我们进一步证明了该方法的实用性。

2 相关工作:

​ 我们介绍了深度神经网络在CS中的几个研究方向,根据是否使用生成器,这些研究可以很大程度上分为两类:

CS通过NNS,无需生成器:

​ 这组研究主要涉及为某些特殊目的设计神经网络体系结构。首先,文献[28]提出迭代收缩阈值算法(ISTA)的更新步骤可以表示为神经网络的每一层,并提出了一种深层结构作为ISTA的学习变体(LISTA)。由于LISTA优化了最初设置为ISTA的网络,LISTA利用其体系结构直接提高了ISTA的性能。在这种展开过程的激励下,通过展开最先进的CS算法(例如,近似消息传递、稀疏贝叶斯学习和乘子交替方向方法等)并将它们映射到特定的网络结构,已经进行了广泛的研究[29、30、31、32、33、24、23、6、19]。除了基于展开的研究之外,[11]还提出了一种卷积自动编码器的变体,以加速信号恢复并诱导数据驱动的降维。[9]提出了如何通过设计一种受投影次梯度法启发的自动编码器来学习传感矩阵。[20]研究了正则化泛函被构造为神经网络的情况。

CS通过带生成器的NNS:
根据是否训练生成器,第二组进一步分为使用预训练生成器的CS(CSPG)和使用未训练的生成器的CS(CSUG)。CSPG指示通过对数据进行训练的生成器来恢复信号的算法。[22]首先利用预先训练的生成器来重构信号,提供恢复保证。此后已经进行了许多研究[18、26、14、27、8、10]以提高CSPG的绩效。与CSPG相比,诸如[17,34]之类的CSUG表示基于深度图像先验[35]的方法,从而可以仅使用一个测量向量yte来训练未训练生成器的权重。虽然CSUG即使在没有训练数据的情况下也能够恢复信号,但是CSPG的使用比CSUG更广泛,因为训练数据通常可以在实践中获得,并且CSPG通常在各个方面优于CSUG(例如,CSUG[36,34]的性能类似于基于小波的套索方法,而CSPG[22,18]的性能优于它)。

​ 在这项工作中,我们提出了一个新的框架,该框架易于应用于CSPG,同时通过对条件生成模型的建模,显著而统一地改进了现有的CSPG方法。虽然在构建条件生成模型方面有几种选择,但我们的框架特别基于生成对抗网络(GAN)[37],因为它在CSPG中很受欢迎。因此,我们的框架也可以理解为条件GaN(CGAN)的特例[38],以及最近将cGAN应用于各个领域的研究[39,40,40,40,41,41,42,43,44,45,46,42,42,47,48]。然而,所有这些工作都只是针对生成任务,而不是针对恢复,特别是针对CS。

3 CS的度量条件生成模型框架:

​ 在这一部分中,我们概述了CSPG的基本背景,并提出了一个简单而有效的方案来应对这一限制。

记法:我们使用Gθ(Z)来表示具有参数θ和潜在变量z的生成器。类似地,我们使用Dφ(X)来表示具有参数φ和输入x的鉴别 器。(xtr,ytr)(或者(xte,yte))表示由(1)给出的一对训练(或测试)信号xtr(或xte,yte)和相应的测量向量ytr(或yte)。我们用p(x,y)、p(X)和p(x|y)分别表示(x,y)的联合分布、x的边缘分布和x给定y的条件分布。

3.1 初步:使用预先训练的生成器进行压缩传感:

​ 使用预训练生成器(CSPG)的CS中的算法通常可以分为以下两个阶段,分别是训练(2)和测试(22)。训练阶段旨在找出给定一组训练信号{xtr}的发生器Gθ∗,φ∗和鉴别器Dθ的最佳参数(φ):

​ 其中,x̄表示训练信号xTR或由Gθ(Z)生成的伪信号,LTR(M)表示与模型M有关的训练的损失函数,并且FOPT[·]由操作员定义以相对于T优化其输入。通常,M={Gθ(X),Dφ(x̄)}和T={θ,φ},但T可以随M而变化。

​ 在测试阶段,通过以下两个阶段的过程将目标xte估计为xˆ:我们首先找出给定训练的∗和测量yte的最优潜在变量zθ∗:

​ 其中,lte􏰁Gθ∗(Z),yte􏰂表示用于推断的目标函数。然后,给定估计的z∗和训练的θ∗,我们将目标xte恢复为xˆ=Gθ∗(z∗)。

3.2 测量 : 有条件的预训练发电机:

​ 与现有的在DCGAN[50]等原始GAN框架下学习感兴趣的边际概率p(X)的CSPG方法不同,我们的框架提供了一种通过利用条件GAN[38]框架的概念来学习测量条件分布p(x|y)的方法。本质上,我们不仅通过“噪声”产生信号分布,而且利用特定的“测量信息”来产生信号分布,从而利用测量向量的附加信息来进一步提炼先验。在CS中关于满足p(x,y)>0的所有(x,y)都存在从y到x的逆映射的经典假设下,如果生成器准确地推导出p(x|y),则它可以成功地从yte恢复XTE。当然,在实践中,几乎不存在这样理想的逆映射。然而,如图1(A)中经验所示,条件生成器仍然可以为目标信号提供更精细的先验,从而增加了在后续信号重构阶段(如(22))中的成功机会。

​ 这种称为“插入测量”(IM)的方法可以很容易地应用于任何使用预训练生成器(CSPG)的CS方法,如图2所示。与判别性模型(即,用于CS的学习NNS,其在没有任何生成器的情况下将测量直接映射到目标信号)不同,CS的生成模型具有潜在变量矢量z,该潜在变量矢量z可以在测试阶段VIA(22)中进行优化,以找到更接近真实信号的估计。在这个过程中,可以同时使用生成模型中的各种样本来帮助有效地实现这一目标。如图1(B)所示,我们的方法继承了生成模型的优点,同时采取了类似的区分方法的精神,从而改进了CS的生成模型。

4 在我们的框架下看现有的CSPG模型:

​ 我们现在提供的例子展示了我们的框架,将IM用于各种CSPG模型,例如使用生成模型的压缩传感(CSGM)[22]和投影梯度下降GaN(PGDGAN)[26]。IM在深度压缩传感(DCS)[10]和SparseGen[18]中的应用推迟到附录。

使用生成模型的压缩传感(CSGM):

​ 基于生成模型的压缩传感(CSGM)[22]是第一个在(2)和(22)中提出基于GaN的CSPG框架的工作。虽然它允许任何GaN模型,但是如果如[22]所示使用包括DCGAN[50]的标准GaN训练目标,则通过解决以下最小-最大问题来训练生成器Gθ和鉴别器Dφ:

​ 在其框架下开始了另一个合理的GAN实例。在这种情况下,CSGM的培训阶段可以给出如下形式:

​ 其中,R_φ(x_̄)=∥x̄−Dφ(x_̄)∥_p)表示由D_φ根据p=1或2范数确定的重建损失,并且参数ζ控制自动编码真实图像和区分真实图像与虚假图像之间的平衡。当(6)中的Dφ输出指示其输入是否是真实图像的标量值(概率)时,(7)中的Dφ基于其输入重建图像。

​ 测试阶段中的CSGM通过最小化关于预训练生成器Gˆ的输入噪声z的以下损失来计算目标信号xte的估计xθ∗=G∗(zθ∗):

CSGM-IM:

​ 我们现在展示在我们的框架下如何将所提出的方案应用于CSGM。我们将此应用程序命名为CSGM-IM。CSGM-IM的训练阶段根据以下优化(9)(针对DCGAN)和(10)(针对BEGIN)学习(θ,φ),它们分别由(6)和(7)修订而来:

​ ![image-20220709200537879](/Users/tianjirong/Library/Application Support/typora-user-images/image-20220709200537879.png)

​ 在测试阶段,CSGM-IM通过将测试测量一致地馈送到学习生成器来估计目标信号xte为xˆ=Gθ∗(z∗,yte):

​ 我们在图2中说明了CSGM-IM与CSGM的不同之处,并将他们的算法加到附录中。

4.2 投影梯度下降GaN(PGDGAN):

​ 投影梯度下降GaN(PGDGAN)[26]是将投影梯度方法应用于CSPG框架的代表性工作。与CSGM类似,PGDGAN的训练阶段可以是任何优化生成器Gθ的学习方案,如(6)或(7)。然而,在测试阶段,PGDGAN通过联合减小欧几里得测量误差[26]和使信号估计属于预训练生成器的范围来恢复信号。具体地说,测试阶段的PGDGAN通过迭代求解以下关于预训练生成器Gˆ的输入噪声z的递归公式来计算目标信号xTE的估计xθ∗=xT:

​ 对于t=0,···,T_−_1,其中PG_θ∗(H)=G_θ∗(argminz_∥h−Gθ∗(Z)∥)表示将输入h映射到预先训练生成器G_θ∗,x0=0或A_⊤_yte的范围内最接近h的点的投影算子,通常,α是学习率,T是迭代的总次数。注意,(12)中的第二项的内部和外部计算分别将估计更新为减小欧几里得测量误差的方向,并将该更新的估计投影到Gθ∗的范围内。因此,PGDGAN可以被认为是用基于网络的正则化算法来解决最小二乘问题,而不是用CS中通常使用的稀疏提升正则化算法来解决最小二乘问题。

PGDGAN-IM:

​ 我们现在描述IM如何在我们的框架下应用于PGDGAN。我们将此应用程序命名为PGDGAN-IM。由于PGDGAN具有与CSGM相同的训练阶段,PGDGAN-IM也具有与CSGM-IM相同的训练阶段((9)或(10))。在测试阶段,PGDGAN-IM通过将测试测量一致地馈送到训练的生成器来估计目标信号xte为xˆ=xt:

​ 我们在附录中给出了PGDGAN和PGDGAN-IM的算法。

5 实验:

​ 为了评估算法的有效性,我们重点在CelebA[52]数据集上进行了实验,这是一项常见但比MNIST[53]或Omniglot[54]数据集更困难的任务。图像在中心被裁剪成大小为64×64×3(d=12288)并归一化到范围[−1,1]。为了进行推断,我们利用测试集中的64个随机图像,以5次试验的95%置信区间计算重建误差∥xTe−xˆ∥2。感测矩阵A的每个条目从正态分布N(0,1/m)采样。除非另有说明,否则我们遵循与[22]相同的实验设置。当将y添加到生成模型中时,在DCGAN和BEGIN中,y都连接到Gθ中的z。在BEGIN中,Y还连接到Dφ中的嵌入层。由于在DCGAN的Dφ中没有嵌入层,我们仿真了[55]中提出的体系结构。关于实验设置和不同m上的实验结果的进一步信息在附录中给出。

CSGM-IM:

​ 如表2所示,IM显著改善了所有m个的CSGM。平均而言,IM将重建误差降低了30%以上。虽然IM极大地提高了CSGM在小m情况下的性能,但它仍然表现出与CSGM一样的性能饱和。当攻击开始时,CSGM-IM表现出更令人信服的性能,并克服了这样的限制。与表2和表2中的最后一列相比,对于每m个m,使用BEGIN的CSGM-IM的每像素重建误差小于使用DCGAN。更引人注目的是,对于表2中的m≥,使用BEGIN的CSGM-IM的每像素重建误差几乎小于使用START的CSGM的每像素重建误差一个数量级。结果,不仅使用START的CSGM-IM在m=1000时恢复了与原始图像相似的图像(m/d≈为8.14%),而且在m=5000(m/d≈为40.69%)时重建的图像与原始图像几乎相同,如图3所示。

PGDGAN-IM:

​ 为进行公平比较,我们遵循与[26]相同的超参数。在表2中,PGDGAN-IM比PGDGAN的重建误差平均降低30%以上。

DCS-IM

​ 为了验证我们方法的有效性,在没有D-φ的情况下,我们将IM应用到DCS中。表2显示,IM将DCS的重构误差降低了70%以上。当m≤为100时,dcs-IM的性能尤其优于所有其他方法,这意味着IM使dcs在小m中的实力更加突出。此外,IM将mCSGM-IM的每个像素的重建误差降低了mCSGM 1000的一个数量级,从而实现了像使用如图3所示的BEGIN的≥-IM那样的成功信号恢复。

​ SparseGen-IM我们只考虑小波基,因为[18]推荐的是小波基,而不是离散余弦变换。表2表明,SparseGen-IM优于SparseGen,重建误差平均减少38%左右。

6 在磁共振成像中的应用:

​ 为了验证IM在真实数据上的实用性,我们在FAST MRI[56]数据集上进行了实验。特别地,我们利用了膝部数据集。由于测试切片质量不高,我们将验证切片作为测试集。与[56]类似,图像在中心被裁剪到大小256×256,并且被下采样到大小128×128(d=16384)。任何数据扩充都不是为了表明IM可以鼓励以前的方法即使在少量数据上也能很好地执行。为了进行测试,我们在验证切片中使用了64个随机图像。更多信息见附录。与第6节相同,感测矩阵A的每个条目也从正态分布N(0,1/m)中采样,并且重建误差被用作评估度量。与(1)不同,在创建测量矢量yte时不添加噪声。在这个实验中,我们只使用BEGIN架构,因为它在我们的实验中工作得最好。

​ 与第6节类似,CSGM-IM的性能比CSGM好得多。如表3所示,IM将m≥2500CSGM的重建误差降低了近一个数量级。不仅如此,如图4所示,CSGM-IM可以恢复与原始图像高度相似的图像,而CSGM根本不能。

7 结论:

​ 我们提出了一种简单而有效的方法,即插入测量值,使生成器能够学习p(x|y)而不是p(X)。即使在IM框架中,生成性模型的特点仍然存在,这使得我们可以通过潜在优化找到更接近真实信号的估计。通过利用判别模型和生成模型的优点,IM可以产生比现有方法小得多的重建误差,最高可达一个数量级。因此,我们期望IM能够用于各种CS应用程序以及图像恢复。

数据库的事务

发表于 2022-4-10 | 分类于 数据库

数据库中的事务

事务(Transaction),是我们关系型数据库中非常重要的一个概念,它要符合ACID特性。是由一组SQL语句组成的一个程序执行单元(Unit),该执行单元要么成功Commit,要么失败Rollback。

ACID特性:

1)Atomicity (原子性):

指事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。

通俗的说:我们有一堆的事情,它要么全做,要么全都不做,不能只做一半。比如我们的银行转账。

2)Consistency (一致性):

指事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

通俗的说:我和你的钱加起来一共是2000,那么不管我和你之间如何转账,转几次账,事务结束后我们的钱相 加起来应该还得是2000,这就是事务的一致性。

3) Isolation (隔离性):(最重要)

指多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。

通俗的说:多个用户并发访问操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干 扰,多个并发事务之间要相互隔离。

注:数据库定义了4个隔离的级别:

  1. 读取未提交;
  2. 读取已提交;
  3. 可重复读;
  4. 串行化;

4)Durability (持久性):

指事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

通俗的说:比如我将事务做完之后,这个结果是能持久下去的并能一直存下去。不管断电还是其他情况。

建站公告与解释

发表于 2022-04-15

建站公告与解释

12

Artfairy

15 日志
4 分类
4 标签
GitHub E-Mail Wechat

|--------------------友链-------------------|


Yuameshi

标签

I'm a student from senior high school.
I'm just a rubbish.
You can call me Yuameshi or 由雨糸
I lives in a small city of Guangdong.
Makding Microsoft's Fan.

欧阳淇淇

标签

「大切な人と再会できる日を」

IcebearType

标签

© 2022 Artfairy
由 Hexo 强力驱动
萌ICP备20220417号 |
主题 — NexT.Mist