51-60 CVPR 2024 最佳论文 | Generative Image Dynamics

news2024/11/16 18:01:41

在2023年11月,谷歌研究院发布了一项令人瞩目的研究成果——Generative Image Dynamics(生成图像动力学)。这项技术的核心是将静态的图片转化为动态的、无缝循环的视频,而且更令人兴奋的是,这些生成的视频还具有交互性。

一作Zhengqi Li,作为谷歌研究院的杰出科学家,专注于3D/4D计算机视觉、基于图像的渲染以及计算摄影的研究。他尤其擅长处理“in the wild”图像和视频,即那些在非受控环境下捕获的复杂数据。在康奈尔大学攻读计算机科学博士学位期间,师从著名学者Noah Snavely。Zhengqi Li的杰出贡献得到了业界的广泛认可,曾荣获CVPR 2019最佳论文荣誉提名奖,并于2020年获得谷歌博士奖学金和奥多比研究奖学金。在随后的职业生涯中,他再接再厉,于2021年获得百度全球人工智能100强中国新星奖,在CVPR 2023上荣获最佳论文荣誉奖,更在CVPR 2024的评选中获得最佳论文奖。这些荣誉充分展现了Zhengqi Li在计算机视觉领域的卓越才华和持续贡献。

该研究提出了一种对场景运动建模图像—空间先验的方法。该先验是从真实视频序列中提取的运动轨迹集合中学习而来,描绘了物体的自然振荡动力学,例如树木、衣服等物体在风中摇曳。该研究将傅立叶域中密集、长期运动建模为频谱体积(spectral volume),研究团队发现这非常适合用扩散模型预测。

Figure 1. We model a generative image-space prior on scene motion 

该研究可以通过调整运动纹理的幅度来缩小(顶部)或放大(底部)动画运动。

与基于图像的渲染模块一起,预测的运动特征可用于许多下游应用,例如将静止图像变成无缝循环视频,或者允许用户与真实图像中的对象进行交互,产生逼真的动态模拟。

本专题由深圳季连科技有限公司AIgraphX自动驾驶大模型团队编辑,旨在学习互助。内容来自网络,侵权即删,转发请注明出处。 

Abstract

我们提出了一种基于场景运动图像空间先验的建模方法。先验知识是从真实运动轨迹序列中学习,这些运动轨迹描绘了树木、花朵、蜡烛和在风中摇摆的衣服等物体的自然振荡动力学。我们将傅里叶域中密集、长期的运动建模为频谱体积spectral volumes,我们发现这非常适合用扩散模型进行预测。给定单个图像,训练模型使用频率协调扩散frequency-coordinated diffusion采样过程来预测频谱体积,可以将其转换为跨整个视频的运动纹理。与基于图像渲染模块一起,预测运动表示可用于许多下游应用,例如将静止图像转换为无缝循环视频,或允许用户与真实图像对象进行交互,产生逼真的动态变化(通过将频谱体积解释为图像空间模态基)。

项目网址:Generative Image Dynamics

1. Introduction

自然世界总是在运动中,即使是看似静态的场景,即使风、水流、呼吸或其他自然韵律,也包含不易觉察的振荡。模拟这种运动对于视觉内容合成至关重要——人类对运动的敏感性会导致没有运动的图像看起来不可思议或不真实。

虽然人类很容易解释或想象场景中的运动,但训练模型来学习或产生逼真的场景运动绝非易事。我们在现实世界中观察到的运动是底层物理动力学的结果,即施加在物体上的力根据其独特的物理特性(质量、弹性等)做出反应,这些物理特性很难在一定范围内测量和捕捉。幸运的是,对于某些应用程序来说,测量它们不是必需的:例如,可以通过简单地分析一些观察到的 2D 运动来模拟场景中的合理动态。

这种运动也可以作为跨场景学习的监督信号——因为尽管观察到的运动是多模态的,并且基于复杂的物理效应,但它仍然通常是可预测的:蜡烛会以某种方式闪烁,树木会摇摆,树叶会沙沙作响。对于人类来说,这种可预见性在我们的感知系统中根深蒂固:通过查看静止图像,我们可以想象合理的运动——或者,由于可能有许多可能的这样的运动,自然运动的分布取决于该图像。考虑到人类有模拟这些分布的能力,一个自然的研究问题是通过计算来模拟。

生成模型特别是条件扩散模型的最新进展使我们能够对丰富的分布进行建模,包括以文本为条件的真实图像分布。该功能支持几个新应用,例如以文本为条件生成各种逼真的图像内容。随着这些图像模型的成功,最近的工作将这些模型扩展到其他领域,如视频和3D几何。

在本文中,我们为图像空间场景运动建模生成先验,即单个图像中所有像素的运动。该模型从大量真实视频序列中自动提取运动轨迹来进行训练。特别是,从每个训练视频中,我们以频谱体积的形式计算运动,这是密集长像素轨迹的频域表示。

  • Image-space modal bases for plausible manipulation of objects in video,2015
  • Visual vibration analysis,2016

频谱体积非常适合表示振荡动力学的场景,例如,树木和花朵在风中移动。我们发现这种表示作为扩散模型输出来建模场景运动也非常有效。我们训练了一个生成模型,该模型以单个图像为条件,从学习分布中采样频谱体积。然后,预测的频谱体积可以直接转换为运动纹理——一组逐像素的长运动轨迹——可以用来使图像动画化。频谱体积也可以解释为图像空间模态基——用于模拟交互动力学。

我们使用扩散模型从输入图像中预测频谱体积,该模型每次生成一个频率的系数,但通过共享注意力模块跨频段协调这些预测。预测的运动可以用来合成未来帧(通过基于图像的渲染模型)——将静止图像转化为逼真的动画,如图1所示。

与原始RGB像素的先验相比,运动先验捕捉更基本,更低维的结构,有效地解释了像素值的长期变化。因此,生成中间运动有助于更连贯的长期生成和对动画更细粒度控制。我们演示了几个下游应用,例如创建无缝循环视频、编辑生成运动,以及通过图像空间模态基建立交互式动态图像,即针对用户施加的力来模拟物体动态响应。

2. Related Work

Generative synthesis.

生成模型的最新进展使基于文本提示的图像合成成为可能。这些文本到图像的模型可以通过沿着时间维度扩展生成的图像张量来增强合成视频序列。虽然这些方法可以产生视频序列,捕捉真实镜头的时空统计信息,然经常会出现伪影,如不连贯的运动、纹理中不切实际的时间变化,以及违反物理约束。

Animating images.

其他技术不是完全从文本生成视频,而是将静止图片作为输入,并使其动画化。最近许多深度学习方法采用3D-Unet架构直接生成视频。这些模型实际上是相同的视频生成模型(但以图像信息而不是文本为条件),并且表现出与上述相似的伪影。克服这些限制的一种方法是不直接生成视频内容本身,而是通过基于图像的渲染对输入源图像进行动画处理。即根据来自外部源的运动如驾驶视频、运动或三维几何先验或用户标注移动图像周围内容。根据运动场对图像进行动画会产生更大的时间一致性和真实感,但这些先前的方法要么需要额外的引导信号或用户输入,要么利用有限的运动表示。

Motion models and motion priors.

在计算图形学中,自然振荡的3D运动(例如,水的波纹或风中摇曳的树木),可以用在傅立叶域中形成的噪声来建模,然后转换为时域运动场。其中一些方法依赖于被模拟系统潜在动力学的模态分析。

Chuang等人在给定用户标注的情况下,将这些频谱技术用于从单张2D图片中绘制植物、水和云的动画。我们的工作特别受到[Visual vibration analysis,2016]的启发,他将场景的模态分析与该场景视频中观察到的运动联系起来,并使用该分析来模拟视频中的交互动态。我们采用频率-空间频谱体积运动表示法frequency-space spectral volume motion representation,并从大量训练视频中提取该表示法。结果表明,频谱体积适用于具有扩散模型的单幅图像运动预测。其他方法在预测任务中使用了各种运动表示,其中使用图像或视频来告知确定性的未来运动估计,或更丰富的可能运动分布。然而这些方法大部分是预测光流运动估计(即,每个像素的瞬时运动),而不是完整的运动轨迹。此外,之前的许多工作都集中在活动识别等任务上,而不是综合任务上。最近的研究表明,在人类和动物等封闭领域环境中,使用生成模型建模和预测运动具有优势。

Videos as textures.

某些移动场景可以被认为是一种纹理——称为运动纹理——它将视频建模为随机过程的时空样本。运动纹理可以表示平滑、自然的运动,如波浪、火焰或移动的树木,并已广泛用于视频分类、分割或编码。另一种相关的纹理称为视频纹理,它将运动场景表示为一组输入视频帧以及任意帧对之间的过渡概率。许多方法通过分析场景运动和像素统计来估计运动或视频纹理,目的是生成无缝循环或无限变化的输出视频。与此工作相比,我们的方法可以提前学习先验,然后将其应用于单个图像。

3. Overview

给定一张图片I0,我们的目标是生成一个具有振荡运动的视频{^I1, ^I2,… ^It},如在微风中摇曳的树木、花朵或蜡烛火焰。我们的系统由两个模块组成:运动预测模块和基于图像的渲染模块。我们的流程首先使用潜在扩散模型LDM,输入I0,预测频谱体积S = (Sf0 , Sf1 , ..., SfK−1)。然后通过离散傅里叶反变换,将预测的频谱体积转换为运动纹理F = (F1, F2,… FT)。这个运动决定了每个输入像素在未来每个时间步长的位置。

给定预测的运动纹理,然后我们使用基于神经图像的渲染技术对输入的RGB图像进行动画处理(第5节)。我们在第6节中探索了这种方法的应用,包括生成无缝循环动画和模拟交互动态。

4. Predicting motion

4.1. Motion representation

形式上,运动纹理是一系列时变的2D位移映射 F = {Ft|t = 1, ..., T }。其中,从输入图像I0开始的每个像素坐标p处的2D位移向量Ft(p)定义了该像素在未来时刻 t 的位置。为了在时间 t 生成未来帧,可以使用相应的位移映射Dt从I0中分割像素,从而得到前向扭曲图像

我们的目标是通过运动纹理制作视频,那么一种选择是直接从输入图像中预测时域运动纹理。然而,运动纹理的大小需要根据视频的长度进行缩放:

生成T个输出帧意味着预测T个位移场。为了避免预测长视频如此大的输出表示,许多先验动画方法要么自回归生成视频帧,要么通过额外的时间嵌入独立预测每个未来输出帧。然而,这两种策略都不能保证生成视频的长时间一致性。

幸运的是,许多自然运动可以被描述为以不同频率、幅度和相位表示的少数谐波振荡器叠加。因为这些潜在运动是准周期的,所以在频域对它们进行建模是很自然的。因此,我们采用了[Visual vibration analysis,2016]对视频运动一种有效的频率空间表示,称为频谱体积,如图 1 所示。频谱体积是从视频中提取的逐像素轨迹的时间傅里叶变换,组织成称为模态图像的图像。

以前工作进一步表明,在某些假设下,在特定频率下评估的频谱体积形成了一个图像空间模态基,它是底层场景的振动模式投影(或者更一般地说,捕捉运动中的空间相关性)。我们使用术语频谱体积来指代特定运动纹理的频率空间编码(去除高频)。稍后,当频谱体积用于模拟时,我们也将其称为“图像空间模态基”。

鉴于这种运动表示,我们将运动预测问题表述为多模态图像到图像的转换任务:从输入图像到输出运动频谱体积。我们采用潜在扩散模型LDM来生成由4K通道2D运动频谱图组成的频谱体积,其中K << T是建模的频率数,并且在每个频率上我们需要四个标量来表示x和y维度的复傅立叶系数。

注意,像素在未来时间步长运动轨迹 F(p) = {Ft(p)|t = 1, 2, ...T }

及其频谱体积 S(p) = {Sfk (p)|k = 0, 1,...,T2 -1} 通过快速傅里叶变换 (FFT) 关联:

如何选择K个输出频率?

先前的实时动画研究工作发现,大多数自然振荡运动主要由低频成分组成。为了验证这一观察结果,我们计算了从1000个随机采样的5秒真实视频片段中提取的运动的平均功率频谱。如图 2 左图所示,运动的功率频谱随着频率的增加呈指数递减。这表明大多数自然振荡运动确实可以用低频项很好地表示。在实践中,我们发现第一个K = 16傅立叶系数足以在一系列真实视频和场景中逼真地再现原始的自然运动。

4.2. Predicting motion with a diffusion model

我们选择潜在扩散模型LDM作为运动预测模块的主干,因为LDM比像素空间扩散模型计算效率更高,同时保持合成质量。

Frequency adaptive normalization.

我们观察到的一个问题是,运动纹理在频率上具有特定的分布特征。如图 2 左图所示,频谱体积的振幅范围为0到100,并且随着频率的增加近似呈指数衰减。由于扩散模型需要输出值在0到1之间才能进行稳定的训练和去噪,因此我们必须对从真实视频中提取的S系数进行归一化,然后再使用它们进行训练。如果我们像之前的工作一样,根据图像尺寸将这些系数的大小缩放到[0,1],则几乎所有高频系数最终都接近于零,如图 2 的右图所示。在这些数据上训练的模型可能会产生不准确的运动,因为在推理过程中,即使很小的预测误差也会在非规范化后导致较大的相对误差。

为了解决这个问题,我们采用了一种简单但有效的频率自适应归一化方法:首先,我们根据从训练集计算的统计数据独立地归一化每个频率的傅里叶系数。也就是说,对于每个单独的频率 fj,我们计算所有输入样本的傅里叶系数幅度的97个百分位数,并将该值用作每频率缩放因子sfj。然后,我们对每个缩放后的傅里叶系数进行幂变换,使其远离极值。在实践中,我们观察到平方根比其他非线性变换(如对数或倒数)表现得更好。总之,频谱体积S(p)在频率 fj (用于训练我们的LDM)的最终系数值计算为

如图 2 右图所示,经过频率自适应归一化处理后,频谱体积系数分布更加均匀。

Frequency-coordinated denoising.

预测具有K个频带的频谱体积S的直接方法是从单个扩散U-Net输出4K通道的张量。然而,正如之前的工作,我们观察到训练一个模型来产生大量的通道可能会产生过度平滑的、不准确的输出。另一种选择是通过向LDM中注入额外的频率嵌入来独立预测每个单独频率,但这种设计选择将导致频域中不相关的预测,从而导致不切实际的运动。

因此,受最近视频扩散工作的启发,我们提出了一种频率协调去噪策略,如图 3 所示。

Figure 3. Motion prediction module.  

特别的,给定输入图像I0,我们首先训练LDM εθ来预测频谱体积Sfj的单个4通道频率,其中我们将额外的频率嵌入与时间步长嵌入一起注入LDM。然后,我们冻结LDM的参数,在K频段上引入与εθ的2D空间层交织的注意层,并进行微调。

具体来说,对于批大小B, εθ的2D空间层将通道大小C对应的B·K噪声潜在特征视为形状为R(B·K)×C×H×W的独立样本。然后,注意层将这些解释为跨频率轴的连续特征,我们将先前2D空间层中的潜在特征重塑为RB×K×C×H×W,将它们提供给注意层。换句话说,频率注意层被微调以协调所有的频率切片,从而产生相干的频谱体积。在我们的实验中,我们看到当我们从单个2D U-Net切换到频率协调去噪模块时,平均VAE重建误差从0.024提高到0.018,这表明LDM预测精度的上限得到了提高;在第7.3节中,我们还展示了这种设计选择提高了视频生成质量。

5. Image-based rendering

现在,描述如何对给定输入图像I0预测频谱体积S,并在时间t上渲染未来的帧。首先使用应用于每个像素 F(p) =FFT−1(S(p)) 的逆时序 FFT 推导出时域的运动纹理。为了生成未来的帧^It,我们采用基于深度图像的渲染技术,并使用预测的运动场Ft进行溅射,对编码后的I0进行正向扭曲,如图 4 所示。由于前向扭曲会导致孔洞,并且多个源像素可以映射到相同的输出2D位置,因此我们采用先前在帧插值中提出的 feature pyramid softmax splatting 策略。

Figure 4. Rendering module. 

具体而言,我们通过特征提取器网络对I0进行编码,生成多尺度特征图。对于尺度为 j 的每个单独的特征图,我们根据分辨率调整预测的2D运动场Ft的大小。与先前工作一样,我们使用预测的流Flow大小作为深度的代理,以确定映射到其目标位置的每个源像素贡献权重。特别是,我们计算了每像素的权重W (p) = 1/T Pt  || Ft(p) ||2 作为预测运动纹理的平均大小。换句话说,我们假设大的运动对应于移动的前景物体,小的或零的运动对应于背景。我们使用运动衍生的权重,而不是可学习的权重,因为我们观察到在单视图情况下,可学习的权重不能有效地解决消光歧义。

对于运动场Ft和权重W,我们应用 softmax splatting 在每个尺度上变换特征映射,以产生变形的特征。然后将新特征注入到图像合成解码器的相应块中,以产生最终渲染的图像。我们使用从真实视频中随机采样的起始帧和目标帧(I0, It)共同训练特征提取器和合成网络,使用I0到It的估计流场来变换I0的编码特征,并使用VGG感知损失监督预测。

6. Applications

Image-to-video.

我们的系统通过首先从输入图像预测运动频谱体积,并通过应用基于图像的渲染模块对从频谱体积转换的运动纹理生成动画,从而实现单个静止图像的动画。由于我们明确地模拟场景运动,这允许我们通过线性插值运动纹理来制作慢动作视频,或者通过调整预测的频谱体积系数的幅度来放大(或缩小)动作。

Seamless looping.

许多应用程序需要无缝循环的视频,在视频的开始和结束之间没有间断。不幸的是,很难找到大量的无缝循环视频用于培训。相反,我们设计了一种方法来使用我们的运动扩散模型,在常规的非循环视频剪辑上训练,以产生无缝循环视频。受近期图像编辑指导工作的启发,我们的方法是一种运动自引导技术,使用显式循环约束指导运动去噪采样处理。特别是,在推理过程中的每个迭代去噪步骤中,我们在标准无分类器引导的基础上加入了一个额外的运动引导信号,其中我们强制每个像素在开始帧和结束帧的位置和速度尽可能相似:

其中,Fn/t为预测的2D位移场时刻,去噪步数n, w为无分类器引导权值,u为运动自引导权值。在补充视频中,我们应用了基于基线外观的循环算法,从我们的非循环输出中生成循环视频,并表明我们的运动自引导技术产生的无缝循环视频失真更少,伪影更少。

Interactive dynamics from a single image.

以前工作在某些共振频率下评估的频谱体积可以近似图像空间模态基,即底层场景振动模式的投影(或者,更一般地说,捕获振荡动力学中的空间和时间相关性),并可用于模拟对象对用户定义力的响应。我们采用这种模态分析方法,使我们能够将物体物理响应的图像空间2D运动位移场写成运动谱系数Sfj的加权和,该运动谱系数由每个模拟时间步长t处的复模态坐标qfj(t)的状态调制:

复模态坐标qfj(t)通过一种应用于模态空间中质量-弹簧-阻尼解耦系统运动方程的显式欧拉方法来模拟。我们建议读者参阅补充材料和原始作品以获得完整的推导。请注意,我们的方法从单个图片生成交互式场景,而之前的方法需要视频作为输入。

7. Experiments

Implementation details.

我们使用LDM[74]作为骨干来预测光谱体积,为此我们使用连续潜在空间为4维的VAE。我们用L1重建损失、多尺度梯度一致性损失和KL散度损失来训练VAE,其权重分别为1、0.2、10−6。我们训练原始LDM工作中使用的相同的2D U-Net,使用简单的MSE损失进行迭代去噪,并采用[41]中的注意层进行频率协调去噪。对于定量评估,我们从头开始训练大小为 256 × 160 图像的 VAE 和 LDM 以进行公平比较,使用 16 个 Nvidia A100 GPU 训练,收敛大约需要 6 天。为了主要的定量和定性结果,我们使用DDIM运行运动扩散模型250步。最后还展示了生成分辨率为 512 × 288 的视频,通过在我们的数据集上微调预训练图像修复 LDM 模型来创建。

我们在IBR模块中对特征提取器采用ResNet-34。我们的图像合成网络基于条件图像修复的架构。我们的渲染模块在推理过程中在Nvidia V100 GPU上以25FPS实时运行。我们采用通用指导来生成无缝循环视频,权重 w = 1.75, u = 200,并使用 500 步具有 2 次自重复迭代的 DDIM 步骤。

Data.

我们收集并处理了一组3015个自然场景的视频。自己拍摄的振荡运动视频,保留10%的视频用于测试,其余用于训练。为了提取地面真值运动轨迹,我们在每个选定的起始图像和视频的每个未来帧之间应用从粗到细的流方法flow method。作为训练数据,作为训练数据,我们将每第10视频帧作为输入图像,并使用接下来的149帧上计算运动轨迹来导出相应的地面真值频谱体积。总的来说,我们的数据由超过150K个图像-运动对组成。

7.1. Quantitative results

7.2. Qualitative results

7.3. Ablation study

8. Discussion and conclusion

Limitations.

由于我们的方法只预测频谱体积的较低频率,它可能无法模拟非振荡运动或高频振动——这可以通过使用学习运动基来解决。此外,生成视频质量依赖于底层运动轨迹质量,在具有很小运动或具有大位移物体的场景中,性能可能会降低。即使正确,需要产生大量新的未见内容的运动也可能导致退化。

Conclusion.

我们提出了一种从单幅静止图像建模自然振荡动力学的新方法。我们的图像空间运动先验用频谱体积表示,频谱体积是每像素运动轨迹的频率表示,我们发现这对于扩散模型的预测是有效的,并且我们从真实世界的视频集合中学习。使用频率协调的潜在扩散模型预测频谱体积,并通过基于图像的渲染模块对未来视频帧进行动画处理。实验表明,我们的方法可以从一张图片中产生逼真的动画,明显优于先前的基线,并且它还可以支持一些下游应用程序,例如创建无缝循环或交互式的动态图。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Web APIs】JavaScript 事件基础 ② ( “ 事件 “ 开发步骤 | 常见鼠标 “ 事件 “ )

文章目录 一、" 事件 " 开发步骤1、" 事件 " 开发步骤2、完整代码示例 二、常见鼠标 " 事件 "1、常见鼠标 " 事件 "2、鼠标 " 事件 " 代码示例 Web APIs 博客相关参考文档 : WebAPIs 参考文档 : https://developer.mozilla…

计算机组成原理 | CPU子系统(1)基本概述

基本结构模型 运算与缓存部件 数据寄存部件 PSW不是很清楚 存储器是什么&#xff1f;属于那个结构里&#xff1f; 时序处理部件 cpu是大脑&#xff0c;控制器是神经元 ①通过硬件产生控制信号 ②通过软件产生控制信号 外频&#xff08;系统时钟信号&#xff09;&#xff0c;…

Springboot整合cxf进行WebService发布和WebService调用

import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; /** 测试接口 author Μr.ηobοdy date 2019-12-29 */ WebService(name “UserService”, // 暴露服务名称 targetNamespace “http://servic…

后端数据null前端统一显示成空

handleNullValues方法在封装请求接口返回数据时统一处理 // null 转 function handleNullValues(data) {// 使用递归处理多层嵌套的对象或数组function processItem(item) {if (Array.isArray(item)) {return item.map(processItem);} else if (typeof item object &&…

深入解析 Python dataclass:类属性与类方法解释

文章目录 dataclass实例属性和类属性自动设置属性 实例方法静态方法&#xff08;staticmethod&#xff09;和 类方法&#xff08;classmethod&#xff09;静态方法类方法 dataclass dataclass 是 Python 3.7 引入的一个装饰器&#xff0c;用于简化类的定义。 使用 dataclass …

Unity的ScrollView滚动视图复用

发现问题 在游戏开发中有一个常见的需求&#xff0c;就是需要在屏幕显示多个&#xff08;多达上百&#xff09;显示item&#xff0c;然后用户用手指滚动视图可以选择需要查看的item。 现在的情况是在100个data的时候&#xff0c;Unity引擎是直接创建出对应的100个显示item。 …

0801功率放大问题

3个学时讲一个电路&#xff08;两个共集共集并联&#xff09;&#xff0c;4个问题&#xff0c;发展线索 丙类放大电路用在高频通讯行业&#xff0c;低频功放是甲类&#xff0c;乙类&#xff0c;甲乙类 PT三极管的损耗 Pv电源提供的功率 现代模电通常使用方法b 只有交流…

聊聊 golang 中 channel

1、引言 Do not communicate by sharing memory; instead, share memory by communicating Golang 的并发哲学是“不要通过共享内存进行通信&#xff0c;而要通过通信来共享内存”&#xff0c;提倡通过 channel 进行 goroutine 之间的数据传递和同步&#xff0c;而不是通过共享…

YashanDB为新质生产力赋能 灌注合肥区域转型源动力

当前&#xff0c;数据要素已成为我国数字经济的“核心引擎”与“关键生产要素”&#xff0c;为全面激发数据要素的价值&#xff0c;各地区正积极探索数据要素交易平台的可行模式&#xff0c;加快在数据要素领域的布局。近日&#xff0c;深圳计算科学研究院崖山数据库系列产品受…

JDBC从入门到精通-笔记(一):JDBC基本概念与开发基础

视频资源&#xff1a;JDBC从入门到精通视频教程-JDBC实战精讲_哔哩哔哩_bilibili JDBC定义与本质 概念 什么是JDBC&#xff1a;Java DataBase Connectivity JDBC本质&#xff1a;SUN公司制定的一套接口&#xff08;interface&#xff09;&#xff0c;java.sql.*。 面向接口调…

【progressBar-js】优雅的 前端进度条 构建!

progressBar-js JS 前端进度条小工具 您可以通过此工具来构建一个有效的工具条&#xff0c;接下来就是一个示例&#xff01; 使用示例 引入 progressBar-js 库 直接在这里将 css 和 js 文件引入进来就算是成功导入了哦&#xff01;&#xff01;&#xff01; <link href&…

SVN学习(001 svn安装)

尚硅谷SVN高级教程(svn操作详解) 总时长 4:53:00 共72P 此文章包含第1p-第p19的内容 介绍 为什么使用版本控制工具 版本控制工具的功能 版本控制简介 客户端服务器结构 c/s结构 服务端的结构&#xff1a; 服务程序 、版本库(存放我们上传的文件) 客户端的三个基本操作&#…

高考填报志愿,选专业和选学校,哪个优先?

一、 专业优先&#xff0c;还是学校优先&#xff1f; 专业和学校都非常重要&#xff0c;好的学校可以给你提供较高的学习平台&#xff0c;好的专业能够给将来的职业生涯提供便利。高考报考&#xff0c;每一个学校的每一个专业的分数都会不同&#xff0c;热门的专业分数较高&am…

Swift 周报 第五十三期

文章目录 前言新闻和社区苹果公司取得基于波束组合的信道状态信息&#xff08;CSI&#xff09;反馈专利&#xff0c;为 5G 网络中的信道状态信息&#xff08;CSI&#xff09;报告提供新方案关于在欧盟分发 App 的最新信息公司快评&#xff5c;新广告引发不满&#xff0c;苹果也…

大模型揭秘:AI与CatGPT在实体识别中的创新应用

摘要 尽管大规模语言模型 (LLM) 在各种 NLP 任务上已经取得了 SOTA 性能&#xff0c;但它在 NER 上的性能仍然明显低于监督基线。这是由于 NER 和 LLMs 这两个任务之间的差距&#xff1a;前者本质上是序列标记任务&#xff0c;而后者是文本生成模型。在本文中&#xff0c;我们…

被年轻人买爆的转运能量石,戴一天竟等于拍千次胸片?

离谱的事年年有&#xff0c;这几年可以说非常多&#xff01;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 尤其是这届年轻人&#xff0c;不知道什么时候开始&#xff0c;越来越迷信了&#xff01; 比如去年很…

基于在校学习平台MOOC的选课推荐系统

基于在校学习平台MOOC的选课推荐系统 1、效果 在线demo&#xff0c;点我查看 2、功能 根据学生于在校学习平台MOOC学习期间的选课记录等相关特征来对学生进行课程推荐。 采用数据挖掘技术&#xff0c;包括BPR、FM、CF&#xff0c;神经网络推荐&#xff0c;用户协同过滤推荐…

2024 CISCN 华东北分区赛-Ahisec

Ahisec战队 WEB python-1 break 源码如下&#xff1a; # -*- coding: UTF-8 -*-from flask import Flask, request,render_template,render_template_stringapp Flask(__name__)def blacklist(name):blacklists ["print","cat","flag",&q…

【嵌入式Linux】<总览> 多进程(更新中)

文章目录 前言 一、进程的概念与结构 1. 相关概念 2. 内核区中的进程结构 3. 进程的状态 4. 获取进程ID函数 二、进程创建 1. fork和vfork函数 2. 额外注意点 3. 构建进程链 4.构建进程扇 三、进程终止 1. C程序的启动过程 2. 进程终止方式 四、特殊的进程 1. 僵…

AppInventor2添加超过10个屏幕会怎样?

之前发过一篇AppInventor2官方翻译文档&#xff0c;建议一个项目不要超过10个屏幕&#xff0c;详见&#xff1a; App Inventor 2 构建多屏幕App的最佳实践 App Inventor 可以轻松地向应用程序添加更多屏幕&#xff0c;但最好也不要添加太多屏幕&#xff0c;因为多个屏幕的应用…