生成一个好故事!StoryDiffusion:一致自注意力和语义运动预测器必不可少(南开字节)

文章链接:https://arxiv.org/pdf/2405.01434
主页:https://storydiffusion.github.io/

对于最近基于扩散的生成模型来说,在一系列生成的图像中保持一致的内容,尤其是那些包含主题和复杂细节的图像,是一个重大挑战。本文提出了一种新的自注意力计算方式,称为一致性自注意力,显著提升了生成图像与流行的预训练基于扩散的文本到图像模型之间的一致性,并以zero-shot方式增强

为了将本文的方法扩展到长视频生成,进一步引入了一种新颖的语义空间时间运动预测模块,称为语义运动预测器。它被训练用于估计语义空间中两个提供的图像之间的运动条件。该模块将生成的图像序列转换为具有平滑过渡和一致主题的视频,与仅基于潜在空间的模块相比,尤其是在长视频生成的情况下,稳定性显著提高。

通过将这两个新颖组件合并,该框架,被称为StoryDiffusion,可以用一致的图像或视频描述基于文本的故事,涵盖丰富多样的内容。所提出的StoryDiffusion在视觉故事生成方面进行了开创性的探索,呈现了图像和视频的展示,希望这能激发更多从架构修改的角度进行的研究。

一致性自注意力效果展示

StoryDiffusion生成的更多视频(原文可跳转)

介绍

最近,扩散模型发展迅速,并展示了在内容生成方面的非凡潜力,如图像,3D目标和视频。通过广泛的预训练和先进的架构,扩散模型在生成高质量图像和视频方面表现优于先前基于生成对抗网络(GAN)的方法。

然而,生成具有一致主题(例如,具有一致身份和服装的角色)的图像和视频来描述故事对现有模型仍然具有挑战性。常用的以图像为参考的IP-Adapter可以用于指导扩散过程以生成类似于它的图像。然而,由于强大的引导作用,对文本提示生成的内容的可控性降低了。

另一方面,最近的最先进的身份保持方法,如InstantID,侧重于身份的可控性,但无法保证服装和情景的一致性。因此,本文的目标是找到一种方法,能够生成具有一致性角色的图像和视频,无论是身份还是服装,同时最大限度地提高用户通过文本提示的可控性

保持不同图像之间(或在视频生成的情境下的帧之间)的一致性的一种常见方法是使用时间模块。然而,这需要大量的计算资源和数据。与此不同,本文的目标是探索一种轻量级方法,具有最小的数据和计算成本,甚至以zero-shot方式进行。

正如之前的研究所证明的,自注意力是建模生成视觉内容整体结构的最重要模块之一。本文的主要动机是,如果我们能够使用参考图像来指导自注意力的计算,那么两个图像之间的一致性应该会显著提高。由于自注意力权重是依赖于输入的,因此可能不需要模型训练或微调。遵循这个思路,本文提出了一致性自注意力,这是StoryDiffusion的核心,可以以zero-shot方式插入扩散骨干,取代原始的自注意力。

与标准的自注意力不同,后者是在表示单个图像的tokens上操作的(如下图2(d)所示),一致性自注意力在tokens相似性矩阵计算和tokens合并过程中包含了从参考图像中采样的参考tokens。采样的tokens共享相同的Q-K-V权重,因此不需要额外的训练。

如下图1所示,使用一致性自注意力生成的图像成功地保持了在身份和服装方面的一致性,这对于叙事非常重要。

直观地说,一致性自注意力在批处理中建立了图像之间的相关性,在身份和服装等方面生成了一致的角色图像。这使能够为叙事生成主题一致的图像。

对于给定的故事文本,首先将其分成几个提示,每个提示对应一个单独的图像。然后,本文的方法可以生成高度一致的图像,有效地叙述一个故事。为了支持长篇故事的生成,还沿着时间维度实现了一致性自注意力以及一个滑动窗口。这消除了峰值内存消耗与输入文本长度的依赖关系,从而使生成长篇故事成为可能。

为了将生成的故事帧流式传输成视频,进一步提出了语义运动预测器,它可以在语义空间中预测两个图像之间的过渡。经验性地发现,在语义空间中预测运动比在图像潜空间中的预测产生了更稳定的结果。结合预训练的运动模块,语义运动预测器可以生成平滑的视频帧,其质量显著优于最近的条件视频生成方法,如SEINE和SparseCtrl。

贡献总结如下:

  • 提出了一种无需训练且可即插即用的注意力模块,称为一致性自注意力。它可以保持生成图像序列中角色的一致性,从而实现高文本可控性的叙事。

  • 提出了一种新的运动预测模块,可以在语义空间中预测两个图像之间的过渡,称为语义运动预测器。它可以生成明显更稳定的长视频帧,比最近流行的图像条件方法(如SEINE和SparseCtrl)更容易扩展到分钟级。

  • 证明了本文的方法可以基于预定义的文本故事使用一致性自注意力和语义运动预测器生成长图像序列或视频,其中的运动由文本提示指定。新框架称为StoryDiffusion

相关工作

扩散模型

扩散模型迅速展示了其在生成逼真图像方面的惊人能力,这也使它们在最近几年主导了生成建模领域。通过利用深度去噪网络,扩散模型通过迭代添加噪声和去噪来建立噪声分布与真实图像分布之间的连接。早期的工作主要集中在无条件图像生成方面,奠定了扩散模型的理论基础。

随后,为提高扩散模型的效率和性能,进行了各种努力。典型例子包括高效采样方法、潜空间中的去噪、可控性。随着基础理论的探索,扩散模型逐渐受到欢迎,并在各个领域展示了强大的性能,如图像生成、视频生成、3D生成、图像分割和低级别视觉任务。

可控文本到图像生成

作为扩散模型应用的重要子领域,最近引起了人们的极大关注的文本到图像生成,代表作有潜空扩散、DiT和Stable XL。此外,为增强文本到图像生成的可控性,也出现了许多方法。其中,ControlNet和T2I-Adapter引入了控制条件,如深度图、姿态图像或素描,以指导图像的生成。MaskDiffusion和StructureDiffusion专注于增强文本的可控性。还有一些工作控制生成图像的布局。

ID保持是期望根据指定的ID生成图像的热门话题。根据是否需要测试时微调,这些工作可以分为两大类。第一类仅需要对给定图像的部分模型进行微调,例如Textual Inversion、DreamBooth和Custom Diffusion。另一类,例如IPAdapter和PhotoMaker,利用已在大型数据集上进行了预训练的模型,允许直接使用给定图像来控制图像生成。与这两种类型不同,我们专注于在多个图像中保持主题一致性,以叙述一个故事。一致性自注意力是无需训练且可插拔的,可以在批处理中建立图像之间的连接,生成多个主题一致的图像。

视频生成

由于扩散模型在图像生成领域的成功,视频生成领域的探索也变得流行起来。由于文本是用户可以指定的最直观的描述符,基于文本的视频生成受到了最多的关注。VDM是最早将2D U-Net从图像扩散模型扩展到3D U-Net以实现视频生成的方法之一。

由于视频生成的计算成本显著增加,后续的工作,如MagicVideo和Mindscope,引入了1D时间注意机制,通过基于潜空间扩散模型来降低计算量。在Imagen之后,Imagen Video采用了级联采样pipeline,通过多个阶段生成视频。Show-1也提出了一种多阶段方法,以平衡生成质量和效率。

除了传统的端到端文本到视频(T2V)生成外,使用其他条件进行视频生成也是一个重要的方向。这类方法使用其他辅助控制生成带有其他辅助控制的视频,例如深度图、姿态图、RGB图像或其他引导运动视频。与文本提示的歧义不同,引入这种条件信息增强了视频生成的可控性。

本文的视频生成方法专注于转换视频生成,预期生成具有给定起始帧和结束帧的视频。典型的相关工作包括SEINE和SparseCtrl。SEINE在训练中将视频序列随机mask作为视频扩散模型的初始输入,以使两个帧之间的过渡预测成为可能。SparseCtrl引入了稀疏控制网络,使用稀疏控制数据为每个帧合成相应的控制信息,从而指导视频的生成。

然而,前述的过渡视频生成方法仅依赖于图像潜空间中的时间网络进行中间内容的预测。因此,这些方法在复杂的过渡,如角色的大规模移动时通常表现不佳。StoryDiffusion旨在在图像语义空间中进行预测以获得更好的性能,并且可以处理更大的移动,将在实验部分展示。

方法

本文的方法可以分为两个阶段,如前面图2和下图3所示。在第一阶段中,StoryDiffusion利用Consistent Self-Attention以无需训练的方式生成具有主题一致性的图像。这些一致的图像可以直接用于叙事,也可以作为第二阶段的输入。在第二阶段,StoryDiffusion基于这些一致的图像创建一致的过渡视频。

无需训练的一致图像生成

本节介绍本文的方法如何以无需训练的方式生成具有主题一致性的图像。解决上述问题的关键在于如何在图像批次内保持角色的一致性。这意味着需要在生成过程中在图像批次内建立连接。

在重新审视扩散模型中不同注意机制的作用后,受到启发,探索利用自注意力来服务于图像批次内的一致性,并提出了Consistent Self-Attention。将Consistent Self-Attention插入到现有的图像生成模型中U-Net架构的原始自注意力的位置,并重复使用原始自注意力权重以保持无需训练和可插拔性。

形式上,给定一批图像特征,其中B、N和C分别是批大小、每个图像中的tokens 数量和通道数量,定义一个函数Attention来计算自注意力。分别表示在注意力计算中使用的查询、键和值。原始的自注意力在每个图像特征中独立进行。将特征投影到,并送入注意力函数,得到

为了在批次内的图像之间建立互动以保持主题一致性,Consistent Self-Attention从批次中的其他图像特征中抽样一些tokens 。

其中,RandSample表示随机采样函数。采样后,将采样的tokens 与图像特征Ii配对,形成一个新的tokens 集。然后,我们对进行线性投影,生成Consistent Self-Attention的新键和值。在这里,原始的查询不会改变。最后,计算自注意力如下:

考虑到配对的tokens,我们的方法在图像批次中执行自注意力,促进不同图像特征之间的交互。这种类型的交互促进了模型在生成过程中对角色、面部和服装的融合。尽管以简单且无需训练的方式,我们的一致自注意力可以高效生成主题一致的图像,将在实验中详细展示。这些图像用作说明以叙述复杂的故事,如前面图2所示。为了更清晰地表达,还在下算法1中展示了伪代码。

视频生成的语义运动预测器

生成的主题一致图像序列可以通过在相邻图像对之间插入帧来进一步细化为视频。这可以被视为一个具有已知起始和结束帧条件的视频生成任务。然而,在经验上观察到,最近的方法,如SparseCtrl和SEINE,在两个图像之间的差异较大时无法稳定地连接两个条件图像。

这种限制源自它们完全依赖于时间模块来预测中间帧,而这可能不足以处理图像对之间的巨大状态差异。时间模块在每个空间位置上独立操作像素,因此,在推断中间帧时可能不充分考虑空间信息。这使得难以建模长和具有物理意义的运动。

为了解决这个问题,本文提出了语义运动预测器,它将图像编码成图像语义空间中的向量,以捕获空间信息,从而更准确地预测给定起始帧和结束帧之间的运动。

具体来说,在语义运动预测器中,首先使用一个函数 来建立从 RGB 图像到图像语义空间向量的映射,对空间信息进行编码。我们不直接使用线性层作为 ,而是利用预训练的 CLIP 图像编码器作为 ,以利用其零次学习能力来增强性能。利用 ,给定的起始帧 和结束帧 被压缩为图像语义空间向量 和 。

随后,在图像语义空间中,训练了一个基于 Transformer 结构的预测器来执行每个中间帧的预测。预测器首先执行线性插值,将两个帧 和 扩展为序列 ,其中 L 是所需的视频长度。然后,序列 被送入一系列 Transformer 块 B 来预测过渡帧:

接下来,需要将图像语义空间中预测的这些帧解码为最终的过渡视频。受图像提示方法的启发,将这些图像语义嵌入 定位为控制信号,将视频扩散模型定位为解码器,以利用视频扩散模型的生成能力。我们还插入额外的线性层将这些嵌入投影到键和值中,涉及到 U-Net 的跨注意力。

形式上,在扩散过程中,对于每个视频帧特征 ,我们将文本嵌入 T 和预测的图像语义嵌入 连接起来。跨注意力计算如下:

与先前的视频生成方法类似,我们通过计算预测过渡视频 和 L 帧地面真实值 之间的均方误差损失来优化我们的模型。

通过将图像编码到图像语义空间以整合空间位置关系,语义运动预测器能够更好地建模运动信息,从而实现生成具有大运动的平滑过渡视频。展示了显著改进的结果和比较,可以在前面图 1 和下图 5 中观察到。

实验

实现细节

对于生成主题一致的图像,由于无需训练和可插拔的特性,在Stable Diffusion XL 和 Stable Diffusion 1.5 上实现我们的方法。为了与比较模型保持一致,使用相同的预训练权重在 Stable-XL 模型上进行比较。所有比较模型都使用 50 步 DDIM 采样,无分类器引导分数一直设置为 5.0。

对于生成一致的视频,基于 Stable Diffusion 1.5 预训练模型实现我们的方法,并结合预先训练的时间模块以实现视频生成。所有比较模型采用 7.5 的无分类器引导分数和 50 步 DDIM 采样。根据先前的方法,使用 Webvid10M数据集来训练我们的过渡视频模型。更多细节可以在补充材料中找到。

一致性图像生成的比较

通过与最近的两种 ID 保持方法 IP-Adapter和 Photo Maker进行比较,评估了本文生成主题一致图像的方法。为了测试性能,使用 GPT-4 生成了二十个角色提示和一百个活动提示,描述了特定的活动。将角色提示与活动提示相结合,获取测试提示的组。对于每个测试案例,使用三种比较方法生成一组图像,描述一个人参与不同的活动,以测试模型的一致性。

由于 IP-Adapter 和 PhotoMaker 需要额外的图像来控制生成图像的 ID,首先生成一个角色图像作为控制图像。分别进行定性和定量比较,全面评估这些方法在一致图像生成方面的性能。

定性比较。定性结果如下图4所示。StoryDiffusion能够生成高度一致的图像,而其他方法,如IP-Adapter和PhotoMaker,可能会生成着装不一致或文本可控性降低的图像。

对于第一个示例,IP-Adapter方法生成了一个与文本提示“使用望远镜观星”的图像。PhotoMaker生成了与文本提示匹配的图像,但在三个生成的图像中着装存在显著差异。由StoryDiffusion生成的第三行图像展示了一致的面部和着装,并具有更好的文本可控性。对于最后一个示例“一位戴着超大耳机的专注玩家”,IP-Adapter在第二幅图像中失去了“狗”,在第三幅图像中失去了“纸牌”。PhotoMaker生成的图像无法保持着装。StoryDiffusion仍然生成了主题一致的图像,具有相同的面部和相同的着装,并符合提示中的描述。

定量比较。评估了定量比较,并在下表1中展示了结果。评估了两个指标,第一个是文本-图像相似度,它计算了文本提示和相应图像之间的CLIP分数。第二个是角色相似度,它衡量了角色图像的CLIP分数。StoryDiffusion在两个定量指标上表现最好,这显示了我们的方法在保持角色的同时符合提示描述方面的稳健性。

过渡视频生成的比较

在过渡视频生成中,与两种最先进的方法SparseCtrl和SEINE进行比较,以评估性能。随机采样了约1000个视频作为测试数据集。使用三种比较模型来预测过渡视频的中间帧,给定起始帧和结束帧,以评估它们的性能。

定性比较。进行了过渡视频生成的定性比较,并在前面图5中展示了结果。StoryDiffusion在生成平滑且物理合理的过渡视频方面明显优于SEINE和SparseCtrl。

对于第一个示例,两人在水下接吻,SEINE生成的中间帧已损坏,并直接跳转到最终帧。SparseCtrl生成的结果具有稍好的连续性,但中间帧仍包含损坏的图像,出现了许多手。然而,StoryDiffusion成功生成了具有非常平滑运动的视频,没有损坏的中间帧。

对于第二个示例,SEINE生成的中间帧有损坏的手臂。另一方面,SparseCtrl未能保持外观的一致性。StoryDiffusion生成了连贯性很好的一致视频。对于最后一个示例,我们生成的视频遵循物理空间关系,而SEINE和SparseCtrl只在过渡中改变外观。更多的视觉示例可以在补充材料中找到。

定量比较。遵循先前的研究,将本文的方法与SEINE和SparseCtrl进行了四项定量指标的比较,包括LPIPS-first,LPIPS-frames,CLIPSIM-first和CLIPSIM-frames,如下表2所示。

LPIPS-first和CLIPSIM-first衡量了第一帧和其他帧之间的相似性,反映了视频的整体连续性。LPIPS-frames和CLIPSIM-frames衡量了相邻帧之间的平均相似性,反映了帧之间的连续性。本文的模型在所有四个定量指标上表现优于其他两种方法。这些定量实验结果显示了我们的方法在生成一致且无缝过渡视频方面的强大性能。

消融研究

用户指定的ID生成。进行了一项消融研究,以测试具有用户指定ID的一致图像生成的性能。由于Consistent Self-Attention是可插拔且无需训练的,将Consistent Self-Attention与PhotoMaker结合起来,为一致图像生成提供了控制角色的图像。结果如下图6所示。在ID图像的控制下,StoryDiffusion仍然可以生成符合给定控制ID的一致图像,这强烈表明了我们的方法的可扩展性和即插即用性。

Consistent Self-Attention的采样率。Consistent Self-Attention从批处理中的其他图像中采样tokens,并在自注意计算过程中将它们合并到键和值中。为了确定最佳采样率,对Consistent Self-Attention的采样率进行了消融研究。结果也显示在图6中。发现采样率为0.3不能保持主题一致性,如上面图6左侧的图像中左侧的第三列所示,而较高的采样率成功地保持了一致性。在实践中,我们默认将采样率设置为0.5,以对扩散过程产生最小影响并保持一致性。

用户研究

我们进行了一项用户研究,共有30位参与者。每位用户被分配50个问题,以评估我们的主题一致图像生成方法和过渡视频生成方法的有效性。对于主题一致图像生成,与最近的最先进方法IP-Adapter和PhotoMaker进行比较。在过渡视频生成中,与最近的最先进方法SparseCtrl和SEINE进行比较。为了公平起见,结果的顺序是随机的,并且用户不知道每个生成模型对应的结果。

用户研究的实验结果如下表3所示。无论是对于主题一致图像生成还是过渡视频生成,我们的模型都表现出了压倒性的优势。用户研究进一步确认了StoryDiffusion的卓越性能。

结论

StoryDiffusion,一种可以以无需训练的方式生成一致图像以进行叙事,并将这些一致图像转换成视频的新方法。Consistent Self-Attention在多个图像之间建立连接,以高效地生成具有一致面部和服装的图像。 进一步提出了Semantic Motion Predictor,将这些图像转换成视频,并更好地叙述故事。希望StoryDiffusion能够激发未来可控图像和视频生成的努力。

参考文献

[1] STORYDIFFUSION: CONSISTENT SELF-ATTENTION FOR LONG-RANGE IMAGE AND VIDEO GENERATION

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

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

相关文章

C/C++ BM32 合并二叉树

文章目录 前言题目解决方案一1.1 思路阐述1.2 源码 解决方案二2.1 思路阐述2.2 源码 总结 前言 树的题目大概率是要用到递归的,将一个树的问题拆分成子树的问题,不断拆分。 这题也用到了递归的思想。 题目 已知两颗二叉树,将它们合并成一颗…

腾讯地图商业授权说明一篇文章讲清楚如何操作

最近在使用腾讯地图,发现我要上架应用商店APP需要我有地图的授权书。 认真研究了一下原来腾讯地图现在要收费了,如果你打算以商业目的使用它,比如对第三方用户收费或者进行项目投标等,就需要先获取腾讯位置服务的商业授权许可。申…

网络演进技术演进:裸纤专线、SDH、MSTP+、OTN、PTN、IP-RAN

前言 文章主要介绍常见名词以及其在各自领域实现的功能价值。 01 裸纤 裸光纤(裸光纤)由运营商提供,是无中继的光纤线路,仅通过配线架连接。相比传统光纤,裸光纤提供纯粹的物理传输路径,无需额外网…

win2012磁盘空间不足,c盘正常,d盘无法写入,如何解决?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

人工智能概述与入门基础简述

人工智能(AI)是计算机科学的一个分支,它致力于创建能够执行通常需要人类智能的任务的机器。这篇科普文章将全面介绍人工智能的基本概念、发展历程、主要技术、实际应用以及如何入门这一领域。 一、人工智能的定义与发展历程 人工智能的概念…

vue2实现生成二维码和复制保存图片功能(复制的同时会给图片加文字)

<template><divstyle"display: flex;justify-content: center;align-items: center;width: 100vw;height: 100vh;"><div><!-- 生成二维码按钮和输入二维码的输入框 --><input v-model"url" placeholder"输入链接" ty…

第四篇:记忆的迷宫:探索计算机存储结构的奥秘与创新

记忆的迷宫&#xff1a;探索计算机存储结构的奥秘与创新 1 引言 1.1 计算机存储系统的发展与重要性 在现代计算技术中&#xff0c;存储系统承担着非常关键的角色&#xff0c;它不仅负责信息的持久保存&#xff0c;同时确保高效的数据访问速度&#xff0c;影响着整体系统性能的…

[redis] redis为什么快

1. Redis与Memcached的区别 两者都是非关系型内存键值数据库&#xff0c;现在公司一般都是用 Redis 来实现缓存&#xff0c;而且 Redis 自身也越来越强大了&#xff01;Redis 与 Memcached 主要有以下不同&#xff1a; (1) memcached所有的值均是简单的字符串&#xff0c;red…

electron 通信总结

默认开启上下文隔离的情况下 渲染进程调用主进程方法&#xff1a; 主进程 在 main.js 中&#xff0c; 使用 ipcMain.handle&#xff0c;添加要处理的主进程方法 const { ipcMain } require("electron"); 在 electron 中创建 preload.ts 文件&#xff0c;从 ele…

getchar和putchar函数详解

getchar和putchar函数详解 1.getchar函数1.1函数概述1.2函数返回值1.3函数注意事项1.4函数的使用 2.putchar函数2.1函数概述2.2函数返回值2.3函数使用实例 1.getchar函数 1.1函数概述 从一个流中读取一个字符&#xff0c;或者从标准输入中获得一个字符 函数原型&#xff1a; …

HFSS学习-day1-T形波导的内场分析和优化设计

入门实例--T形波导的内场分析和优化设计 HFSS--此实例详细步骤1.创建项目2.设置求解类型3.设置与建模相关的一些信息设置默认的建模长度单位 4.创建T形模型的三个臂基本参数端口激励进行复制 5.创建被挖去的部分设置正确的边界条件和端口激励方式添加求解设置添加扫频项检查一下…

基于EWT联合SVD去噪

一、代码原理 &#xff08;1&#xff09;基于EWT-SVD的信号去噪算法原理 经验小波变换&#xff08;Empirical Wavelet Transform&#xff0c;EWT&#xff09;&#xff1a;EWT是一种基于信号局部特征的小波变换方法&#xff0c;能够更好地适应非线性和非平稳信号的特性。奇异值…

寻找最佳App分发平台:小猪APP分发脱颖而出

在当今移动应用市场日益饱和的环境下&#xff0c;选择一个合适的App分发平台对于开发者来说至关重要。这不仅关系到应用能否快速触达目标用户&#xff0c;还直接影响到品牌的塑造与市场份额的争夺。本文将深入探讨几大关键因素&#xff0c;帮助开发者判断哪个App分发平台最适合…

pyside6的调色板QPalette的简单应用

使用调色板需要先导入:from PySide6.QtGui import QPalette 调色板QPalette的源代码&#xff1a; class QPalette(Shiboken.Object):class ColorGroup(enum.Enum):Active : QPalette.ColorGroup ... # 0x0Normal : QPalette.ColorGrou…

权益商城系统源码 现支持多种支付方式

简介&#xff1a; 权益商城系统源码&#xff0c;支持多种支付方式&#xff0c;后台商品管理&#xff0c;订单管理&#xff0c;串货管理&#xff0c;分站管理&#xff0c;会员列表&#xff0c;分销日志&#xff0c;应用配置。 上传到服务器&#xff0c;修改数据库信息&#xff…

裁员为什么先裁技术人员?

最近这个问题比较火&#xff0c;我分享一个印象深刻的答案&#xff1a;楼盖完了&#xff0c;还需要搬砖的吗&#xff1f; 这个答案让我对互联网/程序员这个行业/职业有了新的认识。 房地产是在现实世界里盖房子&#xff0c;互联网是在虚拟世界里盖房子&#xff0c;只不过互联网…

【CTF Web】XCTF GFSJ0485 simple_php Writeup(代码审计+GET请求+PHP弱类型漏洞)

simple_php 小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。 解法 &#xfeff;<?php show_source(__FILE__); include("config.php"); $a$_GET[a]; $b$_GET[b]; if($a0 and $a){echo $flag1; } if(is_numeric($b)){exit(); } if($b>1234){ech…

【氮化镓】GaN HEMTs 在金星及恶劣环境下的应用

文章是关于GaN增强模式晶体管(enhancement-mode p-GaN-gate AlGaN/GaN HEMTs)在金星探索和其它恶劣环境下的应用研究。文章由Qingyun Xie等人撰写,发表在《Applied Physics Letters》上,属于(Ultra)Wide-bandgap Semiconductors for Extreme Environment Electronics特刊。…

基于Springboot的果蔬作物疾病防治系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的果蔬作物疾病防治系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…

接口性能调优

1. 如何判断性能问题 行内默认错误率超过 0.05% 是有问题的查看吞吐量 正常情况下&#xff1a;吞吐量会随着线程的增加而增长 当遇到瓶颈时&#xff0c;吞吐量会持平或者下滑 2. 如果访问一个接口的访问时间很慢&#xff0c;如何查找问题 数据库是否有问题--》缓存redis是否正…