超越DragGAN和DragDiffusion!StableDrag:基于点的图像编辑新框架(南大腾讯) 原创 Yutao Cui等 AI生成未来

超越DragGAN和DragDiffusion!StableDrag:基于点的图像编辑新框架(南大&腾讯) 原创 Yutao Cui等 AI生成未来

文章链接:https://arxiv.org/pdf/2403.04437
开源地址:https://stabledrag.github.io/

基于点的图像编辑自DragGAN出现以来就引起了人们的极大关注。最近,通过将这种拖拽技术应用到扩散模型中,DragDiffusion进一步推动了生成质量。尽管取得了巨大的成功,但这种拖拽方案存在两个主要缺点,即不精确的点跟踪和不完整的运动监督,这可能导致令人不满意的拖拽结果。

为了解决这些问题,本文构建了一个稳定且精确的基于拖拽的编辑框架,命名为StableDrag,通过设计一种判别式的点跟踪方法和基于置信度的潜空间增强策略来实现。前者使我们能够精确定位更新的控制点,从而提高了长距离操作的稳定性,而后者负责确保优化的潜空间在所有操作步骤中尽可能高质量。由于这些独特的设计,本文实例化了两种类型的图像编辑模型,包括StableDrag-GAN和StableDrag-Diff,在DragBench上进行了广泛的定性实验和定量评估,实现了更稳定的拖拽性能。

介绍

在过去的几年里,使用生成模型进行可控图像编辑已经取得了显著的成就,可以根据进一步的精细化目的定制生成结果。最近,开创性的DragGAN已经大大推动了准确的图像编辑,通过交互式基于点的操作,即根据用户输入的控制点驱动语义对象朝向相应的目标点。DragGAN提出了一种新颖的拖拽技术,主要包含运动监督和点跟踪,其中前者监督着控制点周围的局部补丁逐步朝向目标点移动,而后者负责在每个步骤中定位更新的控制点。

尽管DragGAN取得了巨大的成功,但其编辑能力仍受制于生成对抗网络的固有模型容量和泛化性。因此,最近的一些工作借助扩散模型进行高质量的拖拽式图像编辑。代表性工作DragDiffusion探索了将拖拽方案适应于扩散模型,即首先微调一个LoRA,然后在单个扩散步骤中优化潜空间,最后基于MasaCtrl对优化的潜空间进行去噪。对于扩散潜空间优化的关键组件,它直接遵循了DragGAN的传统,即迭代地进行运动监督和点跟踪。我们分析当前的拖拽方案仍然存在以下问题。

  • 不准确的点跟踪。这些方法利用特征差异作为相似度度量来跟踪更新的控制点,这不足以从干扰项(即具有相似内容的周围误导性点)中精确地定位正确的控制点。特别是在扩散模型中,由于特征是从具有大量噪声注入的中间扩散过程中采样的,更新的点变得越来越难以与其周围的局部环境区分开来。这可能导致令人不满意的拖拽结果,如图1中蒙娜丽莎肖像和花瓶的示例所示。

  • 不完整的运动监督。在运动监督过程中,潜空间可能在某些步骤上没有充分优化,导致操纵质量的下降(见下图1中大象和女人的示例),以及点跟踪的漂移。在扩散模型中,潜空间比GAN更稳定且更难操纵,特别是在对特定图像微调LoRA时,这可能会加剧问题。

考虑到前面提到的问题,设计一个更稳定的拖拽框架需要两个主要原则。首先,需要一个稳健而高效的点跟踪方法,以避免定位错误点并增加太多的延迟,从而使基于点的拖拽更加精确。其次,应该保证在每个优化步骤中运动监督是完整的,以便在整个操作过程中保持编辑内容尽可能高质量,并充分释放生成模型的强大修复能力。此外,完整的运动监督可以增强给定控制点和更新点之间内容的相似性,防止跟踪错误的积累。

基于以上分析,重新制定了DragGAN和DragDiffusion中的点跟踪和运动监督的拖拽方案,并提出了一个更稳定的基于点的图像编辑的拖拽框架,称为StableDrag。具体而言,受到视觉对象跟踪成功的启发,试图从一个判别式学习损失中推导出一个简单而强大的点跟踪模型,采用卷积滤波器的形式。

该模型能够抑制干扰项点的跟踪置信度分数,并增强控制点的置信度分数。在操作步骤开始时,根据定制的相似性学习函数监督更新跟踪模型的权重。一旦跟踪模型准备好,将其与原始的特征差异方法结合起来,进行稳健而精确的点跟踪。

值得注意的是,由于我们只需要在初始操作步骤中优化简单的跟踪模型(即单个卷积滤波器),因此这种方法几乎不会增加推理延迟。此外,设计了基于置信度的潜空间增强策略,以确保每个步骤中运动监督的完整性。

具体来说,利用控制点的跟踪置信度分数来评估当前操作过程的质量。通常情况下,使用与DragDiffusion相同的运动监督方式。然而,当质量分数低于可接受的阈值时,将使用模板特征(即给定起始控制点的初始特征)来监督当前控制点的内容,直到其置信度分数令人满意。

由于拖拽方案的独特设计,我们实例化了两种类型的图像编辑模型,包括StableDrag-GAN和StableDrag-Diff,分别构建在GAN和扩散模型上,从而实现了更稳定和精确的拖拽性能。

本文的贡献总结如下:

  • 提出了一个判别式的点跟踪方法,使模型能够准确区分更新的控制点和干扰项点,从而提高了拖拽的稳定性。

  • 设计了一个基于置信度的潜空间增强策略,用于运动监督,可以提高每个操作步骤的优化质量。

  • 在这些设计的基础上,构建了StableDrag,一个基于点的图像编辑框架,基于不同的生成模型,包括GAN和Stable Diffusion。通过在各种示例上进行广泛的定性实验和在DragBench上进行定量评估,证明了StableDrag-GAN和StableDrag-Diff的有效性。

相关工作

图像编辑

图像编辑是一个热门话题,具有广泛的应用。生成对抗网络(GANs)在图像生成领域取得了显著进展,导致了许多先前的图像编辑技术建立在GAN框架之上。然而,GAN的模型容量仍然受到一定限制,以及将真实图像有效地转换为GAN潜空间的挑战,这些方法的实用性不可避免地受到限制。

最近,大规模的文本到图像扩散模型产生了非常逼真的生成结果,这些结果催生了许多基于扩散的图像编辑方法。这些技术主要通过调整与图像相关联的提示来编辑图像。然而,由于许多编辑尝试在文本中传达时具有挑战性,基于提示的策略通常会修改图像的高级语义或风格,因此缺乏实现精确的像素级空间操作的能力。

为了促进细粒度的编辑,已经提出了许多用于执行基于点的修改的研究。特别是,DragGAN通过两个简单的组件展示了显著的基于拖拽的操作:优化潜空间code以将控制点移向其期望的目标点,并通过点跟踪机制定位更新的控制点。

然而,由于GAN的有限容量,其通用性受到限制。DragDiffusion和DragonDiffusion进一步将拖拽方案扩展到扩散模型,以利用其出色的生成能力。FreeDrag提出通过引入一个无需点跟踪的范式来改进DragGAN。在这项工作中,我们通过重新构建一个自信的运动监督模块和一个判别式的点跟踪模块,探索了一种新的拖拽方案,实现了稳定的基于点的图像编辑。

视觉跟踪

由于提出的判别式点跟踪受到了视觉跟踪研究的启发,我们对这些方法进行了简要概述。将这些工作分为三类。

首先,基于相关滤波器的跟踪器利用了在线目标相关的判别模型进行跟踪学习。[5, 21]采用了在线相关滤波器来区分目标和背景,并以高速度获得良好的性能,这在实际中非常实用。

其次,基于孪生网络的跟踪器由于其简单和高效而受到了广泛关注。这些方法将相关操作与孪生网络结合起来,建模了目标和搜索之间的外观相似性和相关性。SiamFC利用孪生网络来衡量模板与搜索区域之间的相似性,具有较高的跟踪速度。SiamRPN++将跨相关改进为深度跨相关,可以提高性能和效率。

最后,一些最近的跟踪器引入了基于Transformer的集成模块,以捕获目标和搜索区域之间的相似性。受到这些发现的启发,我们通过判别式学习设计了一个稳健的点跟踪模型。与这些工作不同的是,将跟踪模型建立在GAN或扩散模型的中间特征之上,以利用它们的判别式,并仅优化跟踪模型,这既有效又高效。

方法

初识基于点的拖拽

首先,简要回顾最近关于GAN和扩散模型背后基于点的拖拽框架的文献,这是本工作的基础。

DragGAN。给定由GAN模型生成的图像,结合用户输入的控制点和目标点,DragGAN旨在驱动每个控制点的内容向其相应的目标点移动。

在这个意义上,主要关注点级编辑如何精确控制,同时保持高图像保真度。为了实现这一目标,DragGAN量身定制了一种新颖的范例,涉及重复的运动监督和点跟踪。考虑到生成器的特征,中间特征非常具有辨别力,他们利用简单的在线运动监督损失来优化潜空间code。当将周围的局部区域表示为,即距离小于半径的像素时,损失可以定义为:

其中,F表示当前优化步骤的中间特征,是初始步骤的特征,n是控制点的数量,是一个偏差向量,M是预定义的mask,用于控制变化区域。特别地,由于被分离,当前的内容将被激励向迈出一小步。然而,由于优化的固有不确定性,很难保证接近 + 。因此,他们利用简单的特征差异方法作为点跟踪,确定的更新状态。上述优化过程迭代直至每个控制点都收敛到各自的目标点。

DragDiffusion。DragDiffusion将基于点的编辑框架扩展到扩散模型,如Stable Diffusion(SD-V1.5),以释放其高稳定性和优越的生成质量的强大能力。该编辑方法涉及三个子过程,即在真实图像上对LoRA进行微调,在特定扩散步骤上优化潜空间并对更新的潜空间进行去噪以生成编辑后的图像。

具体来说,他们采用了相同的拖拽公式,即在单个中间扩散步骤上进行重复的运动监督和点跟踪来操纵潜空间。此外,采用了一种LoRA微调策略,通过整个操作过程保留图像的身份。最后,使用了自我注意力控制机制MasaCtrl来增强原始图像与编辑后图像之间的一致性。

概述

如前面图1所示,由于不精确的点跟踪和不完整的运动监督,DragGAN和DragDiffusion可能导致编辑图像质量下降。因此,在本工作中,我们关注当前的拖拽技术,以实现更稳定和精确的图像操作。所开发的拖拽流程如下图2所示,包括一个判别式点跟踪模块和一个自信的运动监督模块。

具体而言,设计了一种新的点跟踪方法,将原始的特征差异与来自学习的判别式跟踪模型产生的跟踪分数相结合,从而提高了点跟踪的准确性和拖拽的精度。基于跟踪分数,进一步探索了一种基于置信度的潜空间增强策略,以实现足够完整的运动监督。

还观察到,DragGAN在短时间内掌握了大变形和创造性内容(例如,将嘴闭合的狮子转化为吼叫状态)。而DragDiffusion擅长生成优质和高保真度的编辑结果。为了使拖拽模型能够适应各种情景,基于DragGAN和DragDiffusion构建了StableDrag,并设计了相应的拖拽方案。在本节中,我们将详细介绍所提出的拖拽方法。

判别式点跟踪

点跟踪在识别更新的控制点中发挥着关键作用,以避免拖拽错误点并产生不满意的编辑结果。在DragGAN和DragDiffusion中采用的普遍方法是直接进行最近邻搜索,通过识别与的初始特征模板的特征差异最小的位置来进行。然而,这完全忽略了背景外观信息,这对于在复杂场景中将控制点与相似点区分开来至关重要。

特别是,在扩散模型中,由于监督特征是从中间扩散阶段提取的,其中包含大量噪声,逐渐难以辨别更新的点。例如,如前面图1中蒙娜丽莎肖像的情况所示,鼻子的控制点与相邻点具有相似的外观,这导致了DragDiffusion中误导性位置的产生。因此,在本工作中,我们探索了一种实现更具辨别能力但简单的点跟踪的替代方法。

通过使用可学习的判别式跟踪模型,可以将给定的控制点与干扰因素区分开来。在我们的设计中,点跟踪模型由卷积层的权重组成,将点分类分数作为输出。具体而言,建议学习一个函数 ,其中 g 表示卷积函数, 是当前控制点 周围的局部区域, 是学习的跟踪模型,如果跟踪模型 与某个位置的内容匹配并将其识别为更新的控制点 ,则返回高分数;否则返回低分数。

特别地,跟踪模型 在潜空间优化之前学习,并在所有操作步骤中保持不变。在这个意义上,这种方法几乎不会增加编辑运行时。最后,我们将跟踪模型产生的分类分数与原始特征差异分数合并,以实现既具有判别能力又精确的点定位。判别式点跟踪的详细过程如前面图2所示。

形式上,给定局部区域 ,跟踪到的控制点 更新为:

这里,代表局部区域的跟踪置信度分数图,λ是加权因子,是step-0时初始控制点的原始特征,是当前步骤中的最大跟踪置信度分数,用于指导运动监督。在的术语中,前者衡量了模板与搜索区域之间的特征差异。尽管它在大多数情况下可以提供准确的点定位,但可能会被干扰因素所误导。因此,第二项负责通过判别式学习提高跟踪的鲁棒性,即在的初始优化过程中抑制周围点的分数。与简单的特征差异方法不同,这个跟踪模型能够利用背景信息,并利用中间特征的判别式特征,从而对原始方法进行有价值的增强。

跟踪模型的学习。在操作过程之前,对点跟踪模型进行学习,该模型是一个大小为1×C×1×1的卷积滤波器。学习过程的概述如图3所示。

使用来初始化,并在以下损失的监督下更新权重:

这里,表示step-0的初始特征,代表真值标签,即每个位置的期望置信度分数,通常设为以为中心的高斯函数。在学习过程中,梯度不会通过进行反向传播。换句话说,只需要优化跟踪模型,从而实现快速收敛。通过优化,我们突出了控制点,同时抑制了背景点的置信度分数。然后,在后续的操作步骤中,跟踪模型保持不变以确保效率。

自信运动监督

运动监督是逐步鼓励点向其预期目的地移动的核心。DragGAN使用方程(1)中的在线损失来实现这一目标,但在长程拖拽中可能会产生不理想的结果。

相反,我们设计了一个基于自信的运动监督组件,其核心原则是,不仅要在每一步确保高质量和全面的监督,而且还要允许适当的修改以适应更新状态的新内容创建。例如,图1中一个穿着裙子的女人的案例显示了维持视觉连贯性的完整监督的重要性。

为了实现上述目标,我们提出了一种基于置信度的潜空间增强策略,如前面图2所示。首先,我们引入了跟踪分数的最大值,即,来表示当前的监督置信度,以及step-1处的置信度分数来生成增强策略的阈值。通常情况下,当我们确定当前状态足够自信时,会使用方程(1)中的原始运动监督。如果当前的置信度分数低于预定义的阈值,会回退到初始模板进行监督。具体的增强监督定义为:

这里的是一个固定的模板,不进行梯度反向传播,它可以强制更新点的内容模仿初始状态。此外,是否使用这种潜空间增强监督是根据以下准则确定的。

这里,τ是一个阈值率,用于控制增强的强度。通过这种方式,可以防止控制点当前的内容明显偏离原始模板,从而实现自信的运动监督。另一方面,当置信度分数超过阈值时,依赖于动态的运动监督来维持高的可编辑性。为了更好地阐明自信的运动监督的见解,我们与FreeDrag中提出的方法进行了比较,该方法使用自适应模板和线性搜索来释放点跟踪模块。

首先,在FreeDrag中预设的线性搜索可能会对潜空间优化的灵活性施加限制,从而显著增加拖拽的难度。正如图4的左上角示例所示,FreeDrag的控制点经常沿着预定义路径振荡,并需要进行320步的优化。然而,我们的方法允许控制点沿着更为优化的非线性路径向目的地移动,仅需46步。

此外,如下图4的左下角示例所示,FreeDrag在生成创意和超出分布范围的内容方面遇到困难,因为它主要依赖于模板特征进行监督,即使采用了更新策略。相比之下,我们的StableDrag-GAN在给定长程拖拽路径的情况下可以生成令人满意的创意内容,展示了更好的可编辑性。

实验

实现细节

基于PyTorch实现了该方法,包括StableDrag-GAN和StableDrag-Diff。在优化潜空间代码的过程中,对StableDrag-Diff使用了学习率为0.01的Adam优化器,对StableDrag-GAN使用了学习率为0.001的Adam优化器,这遵循它们的默认设置。在大多数情况下,超参数λ和τ分别设为0.3和0.4。对于其他参数和模型设置,我们遵循DragGAN和DragDiffusion中的默认设置。实验在NVIDIA V100 GPU上进行。

定性比较

下图5展示了DragGAN和StableDrag-GAN、DragDiffusion和StableDrag-Diff、FreeDrag-Diff和StableDrag-Diff之间的定性结果,以进行公平比较。

为了评估方法的通用性,对于基于GAN的模型,输入图像是从StyleGAN2生成的。而对于基于扩散的模型,我们输入真实图像并使用DDIM反演来重建它们。可以看出,我们的方法可以更精确地将控制点移动到目标点,如山顶、狮子的下巴、鹿的前额和小灯。

此外,我们的StableDrag可以生成更高质量和更高保真度的编辑结果,例如保持包、眼镜、马和秦始皇兵马俑雕塑的外观。还将我们的StableDrag-Diff与基于扩散模型的FreeDrag进行了比较。可以看出,我们的Diff产生了更精确的结果,并保持了初始图像的细节。这证明了所提出的判别式点跟踪和自信的运动监督的有效性,能够实现更稳定的拖拽性能。

定量结果

在DragBench 上对我们的方法进行定量评估,其中包括205个样本,具有预定义的拖动点和mask。注意到,在DragBench中,有许多例子与适当的StyleGAN2模型不兼容,因此我们只对DragDiffusion和我们的Diff模型进行实验。

将StableDrag-Diff与DragDiffusion进行比较,并使用相同的LoRA权重和通用超参数进行公平比较。如下表1所示,在三种不同的优化步骤设置下,StableDrag-Diff始终优于DragDiffusion,特别是在60步优化下,Mean Distance得分超过基线3.22,Image Fidelity得分超过基线0.017。

这进一步表明,通过所提出的自信的运动监督和判别式点跟踪,StableDrag可以在编辑准确性和内容一致性方面取得有希望的结果。

探索性研究

为了验证本文提出的方法的有效性并进行彻底的分析,通过基于GAN和扩散模型的定性可视化以及基于扩散模型的DragBench上的定量评估进行了详细的消融研究。

自信的运动监督。这里研究了我们的自信的运动监督组件的效果。首先,对基于StableDrag-GAN的马的编辑进行实验。从下图6中可以看出,随着置信度逐渐降低,没有自信的运动监督模块的StableDrag产生了低质量的编辑图像。

这表明在每个步骤中进行自信的监督的重要性,并且还表明跟踪分数可以反映运动监督的质量。如表2所示,将自信的运动监督替换为DragGAN中的原始监督方法时,图像保真度降低了0.018,进一步证实了上述结论。

判别式点跟踪。在下图7和表2中,评估了StableDrag和没有判别式跟踪模型的StableDrag。可以看到,没有判别式跟踪模型的StableDrag可能会受到背景干扰点的误导,导致结果不准确。

特别是,没有我们判别式跟踪模型的StableDrag-Diff将平均距离增加了2.27。从结果中,可以得出结论,所提出的判别式跟踪模型有助于使拖动模型实现更准确的基于点的图像编辑。

跟踪模块的实用性。所提出的点跟踪器在公式和实现上都很简洁。如表3所示,跟踪器的训练过程(约1秒)远比拖动过程花费的时间少得多。对于每次监督步骤之前的点跟踪,它运行非常快,因为只需要执行一个卷积操作。

值得注意的是,在点跟踪过程中,我们使用局部搜索策略来避免在全局区域中识别两个完全相似的对象(例如,两个几乎完全相同的狗)。此外,核心代码实现简单,易于适应其他相关方法,因为只需向基线添加大约60行代码。代码后续将会发布。

对 τ 和 λ 的敏感性分析。为了更好地理解所提出的方法的鲁棒性,对 τ 和 λ 进行了敏感性分析,如下表4和表5所示。通过结果,我们可以得出结论

  • 自信的运动监督对于稳定的拖动至关重要,适当的阈值很重要

  • 将所提出的跟踪器与原始特征差异合并可以获得最佳的拖动性能。

的学习过程可视化

为了更全面地了解判别式跟踪模型,下图8中可视化了跟踪模型在学习过程中的预测结果。可以看到,随着训练迭代次数的增加,背景点(即远离中心的点)逐渐被抑制,从而得到一个更健壮和具有判别式的点跟踪模型,可以帮助拖动模型生成更准确的编辑结果。

结论

本文通过设计一种判别式点跟踪方法和基于置信度的潜空间增强策略,构建了一个稳定的基于拖动的编辑框架,命名为StableDrag。

通过所提出的点跟踪方法,可以精确地定位更新的控制点,从而提高了长距离操作的稳定性。而后者可以确保在所有操作步骤中优化的潜空间尽可能高质量。得益于这些独特的设计,我们实例化了两种类型的模型,包括StableDrag-GAN和StableDrag-Diff,以展示其通用性。

通过对各种示例进行广泛的定性和定量实验,StableDrag实现了稳定而精确的拖动性能。期望我们的发现和分析能促进精确图像编辑的发展。

参考文献

[1] StableDrag: Stable Dragging for Point-based Image Editing

 更多精彩内容,请关注公众号:AI生成未来

欢迎加群交流AIGC技术,添加小助手

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

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

相关文章

阿里云-零基础入门推荐系统 【Baseline】

文章目录 赛题介绍评价方式理解赛题理解代码实战导包df节省内存函数读取采样或全量数获取 用户 - 文章 - 点击时间字典获取点击最多的topk个文章itemcf的物品相似度计算itemcf 的文章推荐给每个用户根据物品的协同过滤推荐文章召回字典转换成df生成提交文件获取测试集从所有的召…

202003 青少年软件编程(Scratch)等级考试试卷(一级)

202003 青少年软件编程(Scratch)等级考试试卷(一级) 第1题:【 单选题】 在Scratch中,以下哪个区域可以展示编程效果? A:代码区 B:舞台区 C:角色区 D:积木区 【正确答案】: B 【试题解析】…

《C缺陷和陷阱》-笔记(4)

目录 一、边界计算与不对称边界 1.栏杆错误 2.程序简化 3.编写程序 4.移动字符 5.打印元素 二、求值顺序 一、边界计算与不对称边界 在C语言中,这个数组的下标范围是从0到9。一个拥有10个元素的数组中,它的元素的下标范围是从0到n-1。 例如&…

2.4 为赌博而生的期望值理论

期望值理论 人们在风险决策时,会把数学期望值最大的可能选项作为自己的最终选择。 期望值:指无数次相同的风险决策的最终平均值或加权平均数它往往以货币或财产的数量为表现形式。又称期望货币值。 期望值的计算 圣彼得堡论:为什么人们不愿…

FPGA高端项目:FPGA基于GS2971的SDI视频接收+HLS多路视频融合叠加,提供1套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI接收转HDMI输出应用本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收HLS图像缩放Video Mixer多路视频拼接应用本方案的SDI接收OSD动态字符叠加…

《AI歌手:音乐产业的未来之音?》

引言 随着人工智能技术的快速发展,AI歌手作为一种新兴的演艺模式逐渐走进了人们的视野。AI歌手以其独特的魅力和无限的潜力引发了人们对于音乐产业未来的思考。本文将围绕AI歌手的音乐呈现、市场认可、替代性以及其他类似AI应用等方面展开讨论,探究AI歌手是否有望成为音乐产…

R语言读取大型NetCDF文件

失踪人口回归,本篇来介绍下R语言读取大型NetCDF文件的一些实践。 1 NetCDF数据简介 先给一段Wiki上关于NetCDF的定义。 NetCDF (Network Common Data Form) is a set of software libraries and self-describing, machine-independent data formats that support…

【强化学习的数学原理-赵世钰】课程笔记(七)时序差分方法

目录 一.内容概述 二.激励性实例(Motivating examples)-随机问题(stochastic problems) 三.估计 state value 的 TD 算法(TD learning of state values) 四.估计 action value 的 TD 算法(TD…

【c语言 】 函数入门

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:C语言 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步&…

Spring循环依赖的成因与破局

一、Spring注入类型 Spring 核心功能之一依赖注入,依赖注入是使用 Spring 框架的基本手段,通过他获取各种类型的 bean,但使用不同的依赖注入类型时经常会遇到循环依赖的问题。Spring 依赖注入类型: 字段注入,这是最常…

酷开科技发力研发酷开系统,让家庭娱乐生活更加丰富多彩

在这个快节奏的社会,家庭娱乐已成为我们日常生活中不可或缺的一部分,为了给家庭带来更多欢笑与感动,酷开科技发力研发出拥有丰富内容和技术的智能电视操作系统——酷开系统,它集合了电影、电视剧、综艺、游戏、音乐等海量内容&…

01-分析同步通讯/异步通讯的特点及其应用

同步通讯/异步通讯 微服务间通讯有同步和异步两种方式 同步通讯: 类似打电话场景需要实时响应(时效性强可以立即得到结果方便使用),而且通话期间不能响应其他的电话(不支持多线操作)异步通讯: 类似发邮件场景不需要马上回复并且可以多线操作(适合高并发场景)但是时效性弱响应…

Unmanaged PowerShell

简介 在渗透测试当中经常会使用到PowerShell来执行脚本, 但是直接使用PowerShell.exe是一个非常敏感的行为, EDR等产品对PowerShell.exe进程的创建监控的很密切, 并且随着PowerShell的渗透测试工具的普及, 越来越多的EDR会利用微软提供的AMSI接口对PS脚本进行扫描, 但是对于低…

[短文]不同空白字符导致程序执行失败问题

屏幕显示的一个空白字符,对于编程者来说,并无差异,但底层截然不同的表示方法,极大可能导致程序执行失败! 今天博主就遇到一个空格字符的问题,大概情况是前端编写SQL传入,后端有时可以执行&…

Uninty 鼠标点击(摄像机发出射线-检测位置)

平面来触发碰撞,胶囊用红色材质方便观察。 脚本挂载到胶囊上方便操作。 目前实现的功能,鼠标左键点击,胶囊就移动到那个位置上。 using System.Collections; using System.Collections.Generic; using UnityEngine;public class c6 : MonoBe…

DNS服务

简介 DNS:domain name service 域名服务 作用:为客户机提供域名解析 dns 监听端口:53端口 分为 udp(只负责向外发) 和 tcp(确保正常发送至对端,对端发送数据包表示已经收到) 搭建…

解密QQ盗号诈骗APP:逆向溯源,探寻幕后黑色操作

逆向溯源qq盗号诈骗app 起因 专注于web漏洞挖掘、内网渗透、免杀和代码审计,感谢各位师傅的关注!网安之路漫长,与君共勉! 分析该app是源于朋友被盗号了,对方发了个app想盗号,这怎么能惯着他?这不…

day16_购物车(添加购物车,购物车列表查询,删除购物车商品,更新选中商品状态,完成购物车商品的全选,清空购物车)

文章目录 购物车模块1 需求说明2 环境搭建3 添加购物车3.1 需求说明3.2 远程调用接口开发3.2.1 ProductController3.2.2 ProductService 3.3 openFeign接口定义3.3.1 环境搭建3.3.2 接口定义3.3.3 降级类定义 3.4 业务后端接口开发3.4.1 添加依赖3.4.2 修改启动类3.4.3 CartInf…

MyBatisPlus理解

MyBatisPlus是mybatis的增强,mybatis是数据库持久化的框架,但mybatisplus并不是替代mybatis,而是相辅相成的关系 MyBatisPlus不会对以前使用mybatis开发的项目进行影响,引入后仍然正常运行。 使用方法: 1.在引入了对…

[力扣 Hot100]Day48 路径总和 III

题目描述 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到…