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

AIGC视频扩散模型新星:Video 版本的SD模型

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍慕尼黑大学携手 NVIDIA 等共同推出视频生成模型 Video LDMs。NVIDIA 在 AI 领域的卓越成就家喻户晓,而慕尼黑大学同样不容小觑,他们深度参与了最初 SD 系列图像生成模型的研发,在扩散模型领域,展现出了强劲实力 。

在这里插入图片描述

🌺优质专栏回顾🌺:

  1. 机器学习笔记
  2. 深度学习笔记
  3. 多模态论文笔记
  4. AIGC—图像

文章目录

    • 论文
    • 摘要
    • 1. 引言
      • 贡献
    • 2. 背景
      • 扩散模型(DMs)
      • 潜在扩散模型(LDMs)
    • 3. 潜在视频扩散模型
      • 3.1 将潜在图像转变为视频生成器
      • 3.1.1 时间自动编码器微调
      • 3.2 长视频生成的预测模型
      • 3.3 高帧率的时间插值
      • 3.4 超分辨率模型的时间微调
      • 总结
    • 4. 实验
      • 数据集
      • 评估指标
      • 模型架构和采样
      • 4.1 高分辨率驾驶视频合成
        • 4.1.1 消融研究
        • 4.1.2 驾驶场景模拟
      • 4.2 使用稳定扩散的文本到视频
        • 4.2.1 使用DreamBooth的个性化文本到视频
    • 5. 结论

论文

论文地址:https://arxiv.org/pdf/2304.08818
项目地址:https://research.nvidia.com/labs/toronto-ai/VideoLDM/

摘要

在图像生成领域,潜在扩散模型(LDMs)取得了重大成功,通过在低维潜在空间中训练扩散模型,避免了过高的计算需求的同时,能够实现高质量的图像合成

本文中,作者将LDM范式应用于高分辨率视频生成领域。过程如下:

  1. 首先仅在图像上预训练一个LDM;
  2. 然后,通过在潜在空间扩散模型中引入时间维度
  3. 在编码后的图像序列(即视频)上进行微调,将图像生成器转变为视频生成器。
  4. 对扩散模型的上采样器进行时间对齐,将它们转变为时间一致的视频超分辨率模型。

本文中,作者专注于两个实际相关的应用:野外驾驶数据的模拟基于文本到视频建模的创意内容创作

这种情况下,可以通过训练一个时间对齐模型,结合预训练图像LDM(如SD系列模型),转变为一个高效且表现力强的文本到视频模型。

1. 引言

1.图像生成模型发展:因基础建模方法突破,图像生成模型备受关注,强大模型基于生成对抗网络、自回归变换器和扩散模型构建,其中扩散模型优势明显,训练目标稳健可扩展且,并且通常比基于变换器的模型参数更少。
2. 视频建模现状图像领域进展巨大,但视频建模滞后。原因是视频数据训练成本高且缺乏合适数据集,多数视频合成工作只能生成低分辨率短视频,包括之前的视频扩散模型。
3. 研究内容:本文将视频模型应用于实际,生成高分辨率长视频,聚焦两个实际相关问题:一是高分辨率真实世界驾驶数据的视频合成,可用于自动驾驶模拟;二是用于创意内容生成的文本引导视频合成
4. 研究基础与模型提出:本文基于潜在扩散模型(LDMs)展开研究,提出Video LDMs,将其应用于高分辨率视频生成任务,LDMs可减轻高分辨率图像训练的计算负担。
5. 模型构建方法
先在大规模图像数据集在图像上预训练Video LDMs(或用现有预训练图像LDMs)。通过在潜在空间DM引入时间维度,固定预训练空间层的同时仅在编码后的图像序列(即视频)上训练这些时间层,将LDM图像生成器转变为视频生成器(图2);
在这里插入图片描述

图2. 时间视频微调。我们将预训练的图像扩散模型转变为时间一致的视频生成器。最初,模型合成的一批不同样本是相互独立的。在时间视频微调后,样本在时间上对齐,形成连贯的视频。图中可视化了一个一维玩具分布的扩散模型在微调前后的随机生成过程。为清晰起见,该图对应于像素空间中的对齐。在实践中,我们在LDM的潜在空间中进行对齐,并在应用LDM的解码器后获得视频(见图3)。我们还在像素或潜在空间中对扩散模型上采样器进行视频微调(第3.4节)。

  1. 微调LDM解码器:在像素空间中实现时间一致性(图3);
    在这里插入图片描述

    图3. 上:在时间解码器微调期间,我们使用固定的编码器处理视频序列,该编码器独立处理帧,并强制跨帧进行时间连贯的重建。我们还使用了一个视频感知判别器。下:在LDMs中,一个扩散模型在潜在空间中进行训练。它合成潜在特征,然后通过解码器将其转换为图像。请注意,下图是针对单个帧的可视化;关于生成时间一致的帧序列的视频微调框架,请见图2。

    为了进一步提高空间分辨率,我们还对像素空间和潜在DM上采样器进行时间对齐,这些上采样器广泛用于图像超分辨率,将它们转变为时间一致的视频超分辨率模型。

  2. 模型优势与实验成果:Video LDMs 能够以计算和内存高效的方式生成全局连贯且长的视频。作者对方法进行了消融实验实现了最先进的视频质量,并合成了长达几分钟的视频。

  3. 研究意义:通过对稳定扩散(Stable Diffusion)进行视频微调,将其转变为一个高效且强大的文本到视频生成器,分辨率高达1280×2048。由于在这种情况下我们只需要训练时间对齐层,因此可以使用相对较小的带字幕视频训练集

贡献

  1. 提出高效视频生成方法:基于LDMs设计出训练高分辨率、长期一致视频生成模型的高效方式。核心在于借助预训练的图像扩散模型(DMs),插入能让图像在时间上保持一致的时间层,进而将其转化为视频生成器(相关原理参考图2和图3)。
  2. 优化超分辨率DMs:对常见的超分辨率DMs进行时间微调,提升其在视频处理中的性能表现。
  3. 驾驶场景视频合成突破:在真实驾驶场景视频的高分辨率合成领域达到当前最优水平,能够生成长达数分钟的视频,满足实际应用中对长时间、高质量驾驶场景模拟等的需求。
  4. 拓展文本到视频应用:成功将公开的稳定扩散文本到图像LDM改造为功能强大、表现力丰富的文本到视频LDM,极大拓展了模型的应用范围,为文本驱动的视频创作提供有力工具。
  5. 时间层的通用性验证:验证了学习到的时间层具有通用性,可以和不同的图像模型检查点(如DreamBooth)结合,为个性化视频生成等更多创新应用提供了可能 。

2. 背景

扩散模型(DMs)

扩散模型(DMs)的核心原理,建模与训练方法是DMs通过迭代去噪学习对数据分布 p d a t a ( x ) p_{data}(x) pdata(x)建模,使用去噪分数匹配法训练。过程如下:

  1. 扩散过程:给定样本 x ∼ p d a t a x \sim p_{data} xpdata,构建扩散后的输入 x τ = α τ x + σ τ ϵ x_{\tau}=\alpha_{\tau}x+\sigma_{\tau}\epsilon xτ=ατx+στϵ,其中 ϵ ∼ N ( 0 , I ) \epsilon \sim N(0, I) ϵN(0,I) α τ \alpha_{\tau} ατ σ τ \sigma_{\tau} στ定义了一个噪声调度,通过扩散时间 T T T进行参数化,使得对数信噪比 λ τ = log ⁡ ( α τ 2 / σ τ 2 ) \lambda_{\tau}=\log(\alpha_{\tau}^{2}/\sigma_{\tau}^{2}) λτ=log(ατ2/στ2)单调递减。
  2. 去噪器优化:去噪器模型 f θ f_{\theta} fθ以扩散后的 x τ x_{\tau} xτ为输入,通过最小化 E x ∼ p d a t a , τ ∼ p τ , ϵ ∼ N ( 0 , I ) [ ∥ y − f θ ( x τ ; c , τ ) ∥ 2 2 ] \mathbb{E}_{x \sim p_{data}, \tau \sim p_{\tau}, \epsilon \sim \mathcal{N}(0, I)}[\left\| y - f_{\theta}(x_{\tau}; c, \tau) \right\|_{2}^{2}] Expdata,τpτ,ϵN(0,I)[yfθ(xτ;c,τ)22]进行优化,其中 c c c是可选的条件信息,例如文本提示,目标向量 y y y要么是随机噪声 ϵ \epsilon ϵ,要么是 v = α τ ϵ − σ τ x v = \alpha_{\tau}\epsilon - \sigma_{\tau}x v=ατϵστx。后一种目标(通常称为 v v v预测)是在渐进蒸馏的背景下引入的[73],在经验上通常能使模型更快收敛(在此,我们同时使用这两种目标)。此外, p τ p_{\tau} pτ是扩散时间 τ \tau τ上的均匀分布。 v = α τ ϵ − σ τ x v=\alpha_{\tau}\epsilon - \sigma_{\tau}x v=ατϵστx,研究中同时使用这两种目标, p τ p_{\tau} pτ是扩散时间 τ \tau τ上的均匀分布。

扩散模型的核心其实是前向扩散加入噪声以及反向扩散学习/预测前向扩散加入的噪声,并且去除噪声,进而生成的过程,扩散过程可以在连续时间框架中通过随机微分方程来描述【论文:Score-based generative modeling through stochastic differential equations】(也可参考图 2 和图 3 中的框架),但在实践中可以使用固定的离散化方法(DDPM)。

DDPM参考:Diffusion Model 原理
TODO:Score-based generative modeling through stochastic differential equations

最大扩散时间通常选择为使得输入数据完全被扰动为高斯随机噪声,并且可以从这种高斯噪声初始化一个迭代生成去噪过程,该过程使用学习到的去噪器 f θ f_{\theta} fθ来合成新的数据。在此,作者使用 p τ ∼ U { 0 , 1000 } p_{\tau} \sim U\{0, 1000\} pτU{0,1000},并依赖于方差保持噪声调度,对于该调度, σ τ 2 = 1 − α τ 2 \sigma_{\tau}^{2}=1-\alpha_{\tau}^{2} στ2=1ατ2

在本文的研究中,作者设定 p τ ∼ U { 0 , 1000 } p_{\tau} \sim U\{0, 1000\} pτU{0,1000},这意味着扩散时间 τ \tau τ是在0到1000这个区间内均匀分布的随机变量。这种均匀分布决定了在扩散过程中,不同扩散时间被选取的概率是相等的。
同时,作者采用了方差保持噪声调度策略。在这种策略下,有一个重要的公式 σ τ 2 = 1 − α τ 2 \sigma_{\tau}^{2}=1-\alpha_{\tau}^{2} στ2=1ατ2。这个公式定义了噪声强度随时间的变化关系, σ τ \sigma_{\tau} στ代表在扩散时间为 τ \tau τ时添加的噪声标准差,它决定了噪声的强度,而 α τ \alpha_{\tau} ατ则与扩散过程的其他特性相关。随着 τ \tau τ在0到1000之间取值变化, α τ \alpha_{\tau} ατ σ τ \sigma_{\tau} στ也会相应改变,从而调整噪声强度。例如,在扩散初期, τ \tau τ可能取较大值, σ τ \sigma_{\tau} στ较大,添加的噪声较多,数据被扰动得更剧烈;随着扩散进行, τ \tau τ逐渐减小, σ τ \sigma_{\tau} στ变小,噪声强度降低,去噪器 f θ f_{\theta} fθ逐步将数据恢复成有意义的内容(详细信息见附录F和H)。

潜在扩散模型(LDMs)

上节介绍的扩散模型实际上是在像素空间进行的。而潜在扩散模型(LDMs)在计算和内存效率上优于像素空间扩散模型(DMs),简要介绍如下:

  1. 提升效率的原理:先训练压缩模型,把输入图像转换到复杂度较低的空间低维潜在空间,在此空间可高保真重建原始数据,以此提升计算和内存效率。
  2. 实现方式:实际通过正则化自动编码器(在传统自动编码器基础上引入正则化项,抑制模型过拟合,提升泛化能力)实现,该编码器包含编码器模块 ϵ \epsilon ϵ解码器 D D D ,通过 x ^ = D ( ϵ ( x ) ) ≈ x \hat{x}=D(\epsilon(x)) \approx x x^=D(ϵ(x))x重建输入图像(见图3)。
  3. 确保重建质量的方法:在自动编码器训练时添加对抗目标,利用基于补丁的判别器来确保逼真的重建效果。
  4. 潜在空间DM的优势:在压缩的潜在空间训练DM,公式(1)中的 x x x用潜在表示 z = ϵ ( x ) z = \epsilon(x) z=ϵ(x)替代。相比于像素空间DMs,潜在空间DM的参数数量和内存消耗通常更少。

为了确保逼真的重建,可以在自动编码器训练中添加对抗目标[65],这可以使用基于补丁的判别器来实现[35]。然后,可以在压缩的潜在空间中训练一个DM,并且公式(1)中的 x x x被其潜在表示 z = ϵ ( x ) z = \epsilon(x) z=ϵ(x)所取代。与具有相似性能的相应像素空间DMs相比,这种潜在空间DM在参数数量和内存消耗方面通常较小。

SD系列模型就是在潜在空间进行扩散的,详情可以参考历史文章:SD系列专栏

3. 潜在视频扩散模型

本部分介绍对预训练的图像LDMs(以及DM上采样器)进行视频微调,以实现高分辨率视频合成。
作者假设获取到一个视频数据集 p d a t a p_{data} pdata,使得 x ∈ R T × 3 × H ˉ × W ˉ x \in \mathbb{R}^{T×3×\bar{H}×\bar{W}} xRT×3×Hˉ×Wˉ x ∼ p d a t a x \sim p_{data} xpdata是一个包含 T T T个RGB帧的序列,帧的高度和宽度分别为 H ~ \tilde{H} H~ W ˉ \bar{W} Wˉ

3.1 将潜在图像转变为视频生成器

转变思路如下:

  1. 高效训练思路:高效训练视频生成模型的关键在于重用预训练且固定的图像生成模型(由参数 θ \theta θ参数化的LDM)。
  2. 模型现有结构:构成图像LDM并处理像素维度输入的神经网络层为空间层 l θ i l_{\theta}^{i} lθi i i i是层索引)。
  3. 现有模型局限:虽能高质量合成单帧,但直接用于渲染 T T T个连续帧视频会失败,原因是模型无时间感知能力
  4. 改进措施:引入额外时间神经网络层 l ϕ i l_{\phi}^{i} lϕi,与空间层 l θ i l_{\theta}^{i} lθi交错排列,学习以时间一致的方式对齐单个帧。
  5. 最终模型构成:额外时间层 { l ϕ i } i = 1 L \{l_{\phi}^{i}\}_{i = 1}^{L} {lϕi}i=1L定义了视频感知时间骨干网络,完整模型 f θ , ϕ f_{\theta, \phi} fθ,ϕ由空间层和时间层组合而成,如图4。
    在这里插入图片描述

图4. 左:我们通过插入时间层,将预训练的潜在扩散模型(LDM)转变为视频生成器,这些时间层能够学习将帧对齐为在时间上连贯一致的序列。在优化过程中,图像骨干网络 θ \theta θ保持固定,仅训练时间层 l ϕ x l_{\phi}^{x} lϕx的参数 ϕ \phi ϕ,参见公式(2)。右:在训练期间,基础模型 θ \theta θ将长度为 T T T的输入序列解释为一批图像。对于时间层 l ϕ i l_{\phi}^{i} lϕi,这些批次的图像被重新整形为视频格式。它们的输出 z ′ z' z会与空间层的输出 z z z相结合,结合时使用一个可学习的融合参数 α \alpha α。在推理过程中,跳过时间层(即 α ϕ i = 1 \alpha_{\phi}^{i}=1 αϕi=1)可得到原始的图像模型。为便于说明,图中仅展示了一个U型网络模块。 B B B表示批量大小, T T T表示序列长度, c c c表示输入通道数, H H H W W W表示输入的空间维度。当训练预测模型时(第3.2节), c s cs cs是可选的上下文帧条件。

我们从按帧编码的输入视频 ϵ ( x ) = z ∈ R T × C × H × W \epsilon(x)=z \in \mathbb{R}^{T×C×H×W} ϵ(x)=zRT×C×H×W开始,其中 C C C是潜在通道的数量, H H H W W W是潜在空间的空间维度。空间层将视频视为一批独立的图像(通过将时间轴转换为批量维度来实现),对于每个时间混合层 l ϕ i l_{\phi}^{i} lϕi,我们按如下方式将其重新调整为视频维度(使用 einops [64] 表示法):
z ′ ← rearrange ( z , ( b t ) c h w → b c t h w ) z' \leftarrow \text{rearrange}(z, (b \ t) \ c \ h \ w \to b \ c \ t \ h \ w) zrearrange(z,(b t) c h wb c t h w)
z ′ ← l ϕ i ( z ′ , c ) z' \leftarrow l_{\phi}^{i}(z', c) zlϕi(z,c)
z ′ ← rearrange ( z ′ , b c t h w → ( b t ) c h w ) z' \leftarrow \text{rearrange}(z', b \ c \ t \ h \ w \to (b \ t) \ c \ h \ w) zrearrange(z,b c t h w(b t) c h w)
这里为了表述清晰,引入了批量维度 b b b

  • 空间层在批量维度 b b b中独立处理所有 B ⋅ T B \cdot T BT个已编码的视频帧;
  • 时间层 l ϕ i ( z ′ , c ) l_{\phi}^{i}(z', c) lϕi(z,c)则在新的时间维度 t t t中处理整个视频。
  • c c c是(可选的)条件信息,比如文本提示。
  • 在每个时间层之后,输出 z ′ z' z会与 z z z按照 α ϕ i z + ( 1 − α ϕ i ) z ′ \alpha_{\phi}^{i}z + (1 - \alpha_{\phi}^{i})z' αϕiz+(1αϕi)z的方式进行组合; α ϕ i ∈ [ 0 , 1 ] \alpha_{\phi}^{i} \in [0, 1] αϕi[0,1] 表示一个(可学习的)参数(另见附录D)。

在实际应用中,作者实现了两种不同类型的时间混合层(见图4):

  • 时间注意力机制;
  • 基于三维卷积的残差块。我们使用正弦嵌入[28, 89] 为模型提供时间位置编码。

使用与基础图像模型相同的噪声调度来训练视频感知时间主干网络。重要的是,固定空间层 l θ i l_{\theta}^{i} lθi,仅通过以下公式优化时间层 l ϕ i l_{\phi}^{i} lϕi
a r g m i n ϕ E x ∼ p d a t a , τ ∼ p τ , ϵ ∼ N ( 0 , I ) [ ∥ y − f θ , ϕ ( z τ ; c , τ ) ∥ 2 2 ] (2) \underset{\phi}{arg min } \mathbb{E}_{x \sim p_{data}, \tau \sim p_{\tau}, \epsilon \sim \mathcal{N}(0, I)}[\left\| y - f_{\theta, \phi}(z_{\tau}; c, \tau) \right\|_{2}^{2}] \tag{2} ϕargminExpdata,τpτ,ϵN(0,I)[yfθ,ϕ(zτ;c,τ)22](2)
其中 z T z_{T} zT表示扩散后的编码 z = ϵ ( x ) z = \epsilon(x) z=ϵ(x)。通过这种方式,只需跳过时间块(例如,为每一层设置 α ϕ i = 1 \alpha_{\phi}^{i}=1 αϕi=1),就可以保留原生的图像生成能力。这种策略的一个关键优势是,可以使用巨大的图像数据集来预训练空间层,而通常不太容易获得的视频数据则可以用于专注训练时间层。

3.1.1 时间自动编码器微调

基于预训练图像LDMs构建的视频模型,虽然提高了效率,但LDM的自动编码器仅在图像上进行了训练,在对时间连贯的图像序列进行编码和解码时会导致闪烁伪影
为了解决这个问题,作者为自动编码器的解码器引入了额外的时间层,并且使用由三维卷积构建的(基于图像块的)时间判别器,在视频数据上对这些时间层进行微调,见图3。需要注意的是,编码器与在图像训练时保持不变,这样一来,在潜在空间中对已编码视频帧进行操作的图像扩散模型就可以重复使用。这一步对于取得良好结果至关重要。

3.2 长视频生成的预测模型

局限性
尽管第3.1节中描述的方法在生成短视频序列方面效率很高,但在合成非常长的视频时却存在局限性。
解决方案
因此,作者还会在给定一定数量(最初的) S S S个上下文帧的情况下,将模型训练为预测模型,通过引入一个时间二进制掩码 m S m_{S} mS来实现这个目标,该掩码会遮蔽模型需要预测的 T − S T - S TS帧,其中 T T T是如第3.1节中所述的总序列长度。我们将这个掩码和掩码后的编码视频帧输入模型进行条件设定。
具体实现
这些帧通过潜在扩散模型(LDM)的图像编码器 ϵ \epsilon ϵ进行编码,然后与掩码相乘,接着在经过一个可学习的下采样操作处理后,(按通道与掩码进行连接)被输入到时间层 l ϕ i l_{\phi}^{i} lϕi中,见图4。设 c S = ( m S ∘ z , m S ) c_{S}=(m_{S} \circ z, m_{S}) cS=(mSz,mS)表示掩码和经过掩码处理(编码后)的图像在空间上连接后的条件信息。那么,公式(2)中的目标函数可表示为:
E x ∼ p d a t a , m S ∼ p S , τ ∼ p τ , ϵ [ ∥ y − f θ , ϕ ( z τ ; c S , c , τ ) ∥ 2 2 ] , ( 3 ) \mathbb{E}_{x \sim p_{data }, m_{S} \sim p_{S}, \tau \sim p_{\tau}, \epsilon}\left[\left\| y-f_{\theta, \phi}\left(z_{\tau} ; c_{S}, c, \tau\right)\right\| _{2}^{2}\right], (3) Expdata,mSpS,τpτ,ϵ[yfθ,ϕ(zτ;cS,c,τ)22],(3)
其中 p S p_{S} pS表示(分类的)掩码采样分布。在实际应用中,我们训练的预测模型会基于0个、1个或2个上下文帧来设置条件,这样就可以实现如下所述的无分类器引导。
推理过程
推理时,为了生成长视频,我们可以迭代地应用采样过程,将最新的预测结果作为新的上下文。过程如下:

  1. 最初的第一个序列是通过基础图像模型合成单个上下文帧,然后基于该帧生成下一个序列。
  2. 之后,以两个上下文帧作为条件来对运动进行编码(附录中有详细信息)。
  3. 为了稳定这个过程,作者发现使用无分类器扩散引导(Classifier-free guidance)是有益的,在采样过程中,通过下式引导模型:
    f θ , ϕ ′ ( z τ ; c S ) = f θ , ϕ ( z τ ) + s ⋅ ( f θ , ϕ ( z τ ; c S ) − f θ , ϕ ( z τ ) ) f_{\theta, \phi}'(z_{\tau}; c_{S}) = f_{\theta, \phi}(z_{\tau}) + s \cdot (f_{\theta, \phi}(z_{\tau}; c_{S}) - f_{\theta, \phi}(z_{\tau})) fθ,ϕ(zτ;cS)=fθ,ϕ(zτ)+s(fθ,ϕ(zτ;cS)fθ,ϕ(zτ))
    其中:
    • s ≥ 1 s \geq 1 s1表示引导尺度,为了可读性,这里省略了对 τ \tau τ和其他信息 c c c的显式条件设定。作者将这种引导方式称为上下文引导。
    • 最终的结果 f θ , ϕ ′ ( z τ ; c S ) f_{\theta, \phi}'(z_{\tau}; c_{S}) fθ,ϕ(zτ;cS) :将原始的无条件预测结果 f θ , ϕ ( z τ ) f_{\theta, \phi}(z_{\tau}) fθ,ϕ(zτ)经过条件调整的部分 s ⋅ ( f θ , ϕ ( z τ ; c S ) − f θ , ϕ ( z τ ) ) s \cdot (f_{\theta, \phi}(z_{\tau}; c_{S}) - f_{\theta, \phi}(z_{\tau})) s(fθ,ϕ(zτ;cS)fθ,ϕ(zτ)) 相加。这意味着最终的结果是在原始预测结果的基础上,根据条件信息 c S c_{S} cS 的影响进行调整,调整的程度由引导尺度 s s s 控制。

这里其实和Transformer的自回归生成相似。上文中,帧和序列不一样,序列是指一系列按时间顺序排列的帧的集合,在第二步中的两个上下文帧的来源于前面已经得到的序列。

3.3 高帧率的时间插值

高分辨率视频需兼具高空间分辨率高时间分辨率(高帧率)。为此,将其合成过程分为两部分:

  1. 第3.1和3.2节的过程可生成语义变化大的关键帧,但受内存限制,帧率较低。
  2. 引入一个额外的模型,其任务是在给定的关键帧之间进行插值。

为了实现这第二点,作者使用第 3.2 节中介绍的掩码 - 条件机制。然而,与预测任务不同的是,需要对插值的帧进行掩码处理 —— 除此之外,该机制保持不变,即图像模型被改进为视频插值模型

在作者的的实验中,通过在两个给定的关键帧之间预测三帧,从而训练一个将帧率从 T 提升到 4T 的插值模型。为了实现更高的帧率,作者同时在 T 到 4T 和 4T 到 16T 的帧率范围内(使用不同帧率的视频)训练模型,并通过二元条件指定。

作者对预测和插值模型的训练方法受到了近期一些视频扩散模型的启发,这些模型也使用了类似的掩码技术(另见附录C)。

3.4 超分辨率模型的时间微调

为了将其分辨率提升到百万像素级别。作者从级联DMs(SDXL、CogView3等都是级联DMs模型)中获得灵感,使用一个DM将Video LDM的输出再放大4倍。主要做法如下:

  • 在驾驶视频合成实验中,使用像素空间DM并将分辨率提升到512×1024;
  • 对于文本到视频模型,我们使用LDM上采样器并将分辨率提升到1280×2048。

作者使用噪声增强和噪声水平条件,并通过下式训练超分辨率(SR) 模型 g θ , ϕ g_{\theta, \phi} gθ,ϕ(在图像或潜在空间上):
E x ∼ p d a t a , ( τ , τ γ ) ∼ p τ , ϵ ∼ N ( 0 , I ) [ ∥ y − g θ , ϕ ( x τ ; c τ γ , τ γ , τ ) ∥ 2 2 ] (5) \mathbb{E}_{x \sim p_{data}, (\tau, \tau_{\gamma}) \sim p_{\tau}, \epsilon \sim \mathcal{N}(0, I)}[\left\| y - g_{\theta, \phi}(x_{\tau}; c_{\tau_{\gamma}}, \tau_{\gamma}, \tau) \right\|_{2}^{2}] \tag{5} Expdata,(τ,τγ)pτ,ϵN(0,I)[ ygθ,ϕ(xτ;cτγ,τγ,τ) 22](5)
其中 c τ γ = α τ γ x + σ τ γ ϵ c_{\tau_{\gamma}} = \alpha_{\tau_{\gamma}}x + \sigma_{\tau_{\gamma}}\epsilon cτγ=ατγx+στγϵ ϵ ∼ N ( 0 , I ) \epsilon \sim \mathcal{N}(0, I) ϵN(0,I),表示通过连接提供给模型的噪声低分辨率图像, τ γ \tau_{\gamma} τγ是根据噪声调度 α τ \alpha_{\tau} ατ σ τ \sigma_{\tau} στ添加到低分辨率图像上的噪声量。

  • 噪声增强是指在训练过程中,人为地向输入数据(通常是低分辨率图像)添加噪声的过程。
  • 噪声水平条件是指将噪声的水平(强度或数量)作为模型的一个输入条件。在公式中, τ \tau τ τ γ \tau_{\gamma} τγ 就是噪声水平条件,它们是从分布 p τ p_{\tau} pτ 中采样得到的。
  • 在上述超分辨率模型的训练公式中,噪声增强和噪声水平条件是相互关联的。首先通过噪声增强将噪声添加到低分辨率图像 x x x 中得到 x τ x_{\tau} xτ,同时使用噪声水平条件中的参数(如 α τ γ \alpha_{\tau_{\gamma}} ατγ σ τ γ \sigma_{\tau_{\gamma}} στγ)计算条件变量 c τ γ c_{\tau_{\gamma}} cτγ,将噪声添加到原始图像上得到一个新的条件输入。这样,超分辨率模型 g θ , ϕ g_{\theta, \phi} gθ,ϕ会根据输入的噪声水平条件,学习在不同噪声环境下如何将低分辨率图像转换为高分辨率图像。

此外还有一个新的问题:独立对视频帧进行上采样会导致时间一致性较差。

  • 解决方案:
    • 使 SR 模型具有视频感知能力。
    • 遵循第3.1节机制,利用空间层 l θ i l_{\theta}^{i} lθi 和时间层 l ϕ i l_{\phi}^{i} lϕi 对缩放器进行视频微调。
    • 以长度为 T T T 的低分辨率序列为条件,逐帧连接低分辨率视频图像。
    • 仅在图像块上高效训练缩放器,后续通过卷积应用模型。

总结

作者认为LDM上采样器DM的结合对于高效的高分辨率视频合成是理想的。图5展示了第3.1节至第3.4节所有组件的模型:

在这里插入图片描述

图5. Video LDM架构。我们首先生成稀疏关键帧。然后使用相同的插值模型分两步进行时间插值以实现高帧率。这些操作都基于共享相同图像骨干网络的潜在扩散模型(LDMs)。最后,将潜在视频解码到像素空间,并可选地应用视频上采样器扩散模型。

  • Video LDM的LDM组件
    • 利用压缩潜在空间进行视频建模。
    • 优势:可使用大批次大小,能联合编码更多视频帧,利于长期视频建模,不会有过高的内存需求,因为所有视频预测和插值都在潜在空间中进行。
  • 上采样器
    • 训练方式:高效的图像块方式。
    • 效果:节省计算资源,降低内存消耗,因低分辨率条件无需捕捉长期时间相关性,无需预测和插值框架。

相关工作的讨论见附录C。

4. 实验

这部分请参考原文,此处只做简要介绍

数据集

  • 用于驾驶场景视频生成和文本到视频任务,使用RDS数据集(683,060个8秒、512×1024、30fps视频,含昼夜标签、拥挤度注释、部分含边界框)、WebVid-10M数据集(1070万视频-字幕对,52,000视频小时,调整为320×512),以及附录I.2的山地自行车数据集。

评估指标

  • 采用逐帧FID、FVD,因FVD不可靠,作者还进行了人工评估;文本到视频实验还评估CLIPSIM和IS(见附录G)。

模型架构和采样

  • 图像LDM基于[65],使用卷积编码器/解码器,潜在空间DM架构基于[10]的U-Net;像素空间上采样器DM使用相同图像DM骨干网络,实验用DDIM采样,更多信息在附录。

更多架构、训练、评估、采样和数据集的详细信息见附录。

4.1 高分辨率驾驶视频合成

  • 训练过程
    • 在RDS数据上训练Video LDM管道及4倍像素空间上采样器,基于昼夜和拥挤度条件,训练时随机丢弃标签实现不同合成方式。
    • 先训练图像骨干LDM的空间层,再训练时间层。
  • 性能对比
    • 以LVG为基线,Video LDM在128×256未使用上采样器时性能更优,添加条件可降FVD。
    • 人工评估显示Video LDM样本在真实感方面更优,条件模型样本好于无条件样本。
  • 上采样器比较
    • 视频微调上采样器与独立逐帧图像上采样对比,时间对齐对上采样器性能重要,独立上采样致FVD下降但FID稳定。
  • 实验结果展示
    • 展示结合Video LDM和上采样器的条件样本,能生成长达数分钟、时间连贯的高分辨率驾驶视频,已验证5分钟结果在附录和补充视频。
4.1.1 消融研究

重点提炼

  • 在RDS数据集上对比较小的Video LDM与各种基线,结果在表1(右)及附录G。
  • 不同模型设置的性能比较:
    • 对预训练像素空间图像扩散模型应用时间微调策略,性能不如原Video LDM。
    • 端到端LDM在RDS视频上从头学参(无图像预训练),FID和FVD大幅下降。
    • 引入3D卷积时间层可输入上下文帧,性能优于仅用注意力机制的时间模型(同空间层和可训练参数)。
    • 应用上下文引导可降FVD但增FID。

此外还做了如下操作:

  • 分析对包含LDM框架[65]的压缩模型解码器进行视频微调的效果。
  • 在RDS数据集上应用微调策略,对比重建视频/图像帧的FVD/FID分数。
  • 结果表明视频微调使FVD/FID分数有数量级的提升(表3)。
4.1.2 驾驶场景模拟

省略,参考原文

4.2 使用稳定扩散的文本到视频

Video LDM方法

  • 无需先训练自己的图像LDM骨干网络,可利用现有图像LDM转变成视频生成器。
  • 将稳定扩散转变为文本到视频生成器,使用WebVid-10M数据集训练时间对齐版本,对稳定扩散的空间层微调,插入时间对齐层和添加文本条件。
  • 对稳定扩散潜在上采样器进行视频微调,支持4倍上采样,生成1280×2048分辨率视频,生成的视频含113帧,可渲染为不同帧率和时长的片段。
  • 能生成超越训练数据的具有表现力和艺术性的视频,结合了图像模型风格与视频的运动和时间一致性。

评估结果

  • 在UCF-101和MSR-VTT评估零样本文本到视频生成,除Make-A-Video外优势显著,在UCF-101的IS指标上超Make-A-Video,Make-A-Video使用更多数据。
4.2.1 使用DreamBooth的个性化文本到视频

时间层转移测试

  • 探究Video LDM中图像LDM骨干网络上训练的时间层能否转移到其他模型检查点。
  • 使用DreamBooth对稳定扩散的空间骨干网络(SD 1.4)在少量特定对象图像上微调,绑定身份与罕见文本标记。
  • 将经过视频调整的稳定扩散中的时间层插入原始稳定扩散模型的新DreamBooth版本,用绑定标记生成视频,可生成个性化连贯视频并能捕捉训练图像身份,验证了时间层可推广到其他图像LDM,首次实现个性化文本到视频生成,更多结果在附录I。

5. 结论

下面是本文的核心:

  • 模型提出:Video Latent Diffusion Models(Video LDMs)用于高效高分辨率视频生成。
  • 关键设计:基于预训练图像扩散模型,并通过时间对齐层进行时间视频微调转化为视频生成器。
  • 计算效率保证:利用LDMs,可与超分辨率DM结合并进行时间对齐。
  • 应用成果
    • 合成长达数分钟高分辨率且时间连贯的驾驶场景视频。
    • 稳定扩散文本到图像LDM转变为文本到视频LDM并实现个性化文本到视频生成。
  • 时间层特性:学习到的时间层可转移到不同模型检查点,利用这一点进行个性化文本到视频生成。

相关文章:

AIGC视频扩散模型新星:Video 版本的SD模型

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍慕尼黑大学携手 NVIDIA 等共同推出视频生成模型 Video LDMs。NVIDIA 在 AI 领域的卓越成就家喻户晓,而慕尼黑大学同样不容小觑,…...

08-ArcGIS For JavaScript-通过Mesh绘制几何体(Cylinder,Circle,Box,Pyramid)

目录 概述代码实现1、Mesh.createBox2、createPyramid3、Mesh.createSphere4、Mesh.createCylinder 完整代码 概述 对于三维场景而言,二位的点、线、面,三维的圆、立方体、圆柱等都是比较常见的三维对象,在ArcGIS For JavaScript中我们知道点…...

在 Go 语言中如何高效地处理集合

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons:JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram,自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 ? 5 IDEA必装的插件&…...

Python的进程和线程

ref 讲个故事先 这就像一个舞台(CPU核心)​, 要供多个剧组演出多个剧目(进程)​, 剧目中有多个各自独立的角色(线程)​,有跑龙套的,有主角,第一…...

基于单片机的智能台灯设计

摘要: 方向和亮度,采用的是手动调节。而对于儿童来说,他们通常不知道如何调整以及调整到何种程度。本文设计了一款智能台灯,当有人的 台灯是用于阅读学习而设计使用的灯,一般台灯用的灯泡是白炽灯、节能灯泡以及市面上流行的护眼台灯,可以调节高度、光照的时候,可以根据…...

vue3案例:筛选部门、选择人员案例组件

可以控制可以选多人,或者只能选单人可以做部门筛选再选人,没有部门情景,直接显示全部人员,有输入框可以搜索人员 ✨一、实现功能 需求: 可以灵活控制,多选或者单选人员配合部门进行部门下的人员筛选 详细…...

Spring MVC:综合练习 - 深刻理解前后端交互过程

目录 1. Lombok 1.1 引入 lombok 依赖 1.1.1 通过 Maven 仓库引 lombok 依赖 1.1.2 通过插件引入 lombok 依赖 1.2 Data 1.3 其他注解 2. 接口文档 2.1 接口(api) 2.2 接口文档 3. 综合练习 - 加法计算器 3.1 定义接口文档 3.2 准备工作 - 前端代码 3.3 后端代码 …...

Debian常用命令

以下是完整的 Linux 命令大全,适用于 Debian、Ubuntu 及其衍生系统,涵盖系统管理、文件操作、磁盘管理、用户管理、网络调试、安全、进程管理等多个方面。 目录 基本命令关机与重启文件和目录管理文件搜索挂载文件系统磁盘空间管理用户和群组管理文件和…...

【FFmpeg】FLV 格式分析 ③ ( Tag Body 数据块体结构 - Vedio Data 视频数据 )

文章目录 一、Tag Body 数据块体结构 - Video Data 视频数据1、Vedio Data 视频数据 类型标识2、Vedio Data 视频数据 结构分析3、Composition Time Offset 字段涉及的时间计算4、AVC Packet Type 字段说明① AVC Sequence Header 类型② AVC NALU 类型③ AVC End of Sequence …...

开源鸿蒙开发者社区记录

lava鸿蒙社区可提问 Laval社区 开源鸿蒙项目 OpenHarmony 开源鸿蒙开发者论坛 OpenHarmony 开源鸿蒙开发者论坛...

MinIO的安装与使用

目录 1、安装MinIO 1.1 下载 MinIO 可执行文件 1.2 检查 MinIO 是否安装成功 1.3 设置数据存储目录 1.4 配置环境变量(可选) 1.5 编写启动的脚本 1.6 开放端口 1.7 访问 2、项目实战 2.1 引入依赖 2.2 配置yml文件 2.3 编写Minio配置类 2.4…...

【分布式日志篇】从工具选型到实战部署:全面解析日志采集与管理路径

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...

Spring Boot/MVC

一、Spring Boot的创建 1.Spring Boot简化Spring程序的开发,使用注解和配置的方式开发 springboot内置了tomact服务器 tomact:web服务器,默认端口号8080,所以访问程序使用8080 src/main/java:Java源代码 src/main/resource:静态资源或配置文件,存放前端代码(js,css,html) s…...

uni-app连接EventSource

前言 uniapp默认是不支持event-source&#xff0c;这里是借助renderjs进行SSE连接 正文 引入event-source-polyfill 这里演示的是直接将代码下载到本地进行引入 下载地址 把里面的eventsource.min.js文件放到项目中的static文件夹 项目封装event-source.vue组件 <templ…...

[SCTF2019]babyre

[SCTF2019]babyre 一、查壳 无壳&#xff0c;64位 二、IDA分析 1.没有main&#xff0c;那就shifef12 点击&#xff1a; 再进&#xff1a; 都是花指令&#xff0c;所以要先解决花指令 三、解决花指令&#xff0c;得到完整的 main 往上面翻&#xff0c;注意看爆红的&#x…...

简洁实用的wordpress外贸模板

简洁、实用、大气的wordpress外贸模板&#xff0c;适合跨境电商搭建外贸B2B产品展示型网站。 简洁实用的wordpress外贸模板 - 简站WordPress主题简洁、实用、大气的wordpress外贸模板&#xff0c;适合跨境电商搭建外贸B2B产品展示型网站。https://www.jianzhanpress.com/?p828…...

每日一题 414. 第三大的数

414. 第三大的数 简单 class Solution { public:int thirdMax(vector<int>& nums) {int n nums.size();long first , second,third;first second third LONG_MIN ;bool find false;for(auto num : nums){if(num > first){ third second;second first…...

TVM框架学习笔记

TVM是陈天齐等人一个开源的深度学习编译器栈,用于优化和部署机器学习模型到各种硬件后端。它支持多种前端框架,如TensorFlow、PyTorch、ONNX等,并且可以在不同的硬件平台上运行,包括CPU、GPU和专用加速器。官方文档: Apache TVM Documentation — tvm 0.20.dev0 documenta…...

Codeforces Round 998 (Div. 3)

文章目录 EF E 原题链接 思路&#xff1a; 题目要求对于 G 中存在路径的两个点&#xff0c;在 F 中也必须存在路径&#xff0c;不是两个点存在直连的边。 两个点存在路径&#xff0c;说明俩个点在同一个连通块。我们用并查集来维护图的连通块。 最终的要求就是把 F 的并查集通…...

Vue.js 渐进式增强:如何逐步为传统项目注入活力

Vue.js 是一个渐进式框架&#xff0c;这意味着你可以将它逐步引入到现有项目中&#xff0c;而无需彻底重构。渐进式增强特别适合那些已经在使用传统服务器渲染框架&#xff08;如 PHP、Django、Laravel&#xff09;的项目&#xff0c;为它们增加动态交互功能。本篇教程将介绍如…...

【算法】经典博弈论问题——巴什博弈 python

目录 前言巴什博弈(Bash Game)小试牛刀PN分析实战检验总结 前言 博弈类问题大致分为&#xff1a; 公平组合游戏、非公平组合游戏&#xff08;绝大多数的棋类游戏&#xff09;和 反常游戏 巴什博弈(Bash Game) 一共有n颗石子&#xff0c;两个人轮流拿&#xff0c;每次可以拿1~m颗…...

【技术洞察】2024科技绘卷:浪潮、突破、未来

涌动与突破 2024年&#xff0c;科技的浪潮汹涌澎湃&#xff0c;人工智能、量子计算、脑机接口等前沿技术如同璀璨星辰&#xff0c;方便了大家的日常生活&#xff0c;也照亮了人类未来的道路。这一年&#xff0c;科技的突破与创新不断刷新着人们对未来的想象。那么回顾2024年的科…...

【0x06】HCI_Authentication_Complete事件详解

目录 一、事件概述 二、事件格式及参数 2.1. HCI_Authentication_Complete事件格式 2.2. Status 2.3. Connection_Handle 三、事件的生成于处理 3.1. 事件生成 3.2. 认证流程 3.2.1. 发送认证请求 3.2.2. 处理流程 3.2.3. 示例代码 四、应用场景 4.1. 设备配对与连…...

JS-Web API -day03

一、事件流 1.1 事件流与两个阶段说明 事件流 指的是事件完整执行过程中的流动路径 假设页面有个div标签&#xff0c;当触发事件时&#xff0c;会经历两个阶段&#xff0c;分别是捕获阶段、冒泡阶段 捕获阶段&#xff1a;Document - Element html - Elementbody - Element div…...

电子应用设计方案103:智能家庭AI浴缸系统设计

智能家庭 AI 浴缸系统设计 一、引言 智能家庭 AI 浴缸系统旨在为用户提供更加舒适、便捷和个性化的沐浴体验&#xff0c;融合了人工智能技术和先进的水疗功能。 二、系统概述 1. 系统目标 - 实现水温、水位和水流的精确控制。 - 提供多种按摩模式和水疗功能。 - 具备智能清洁…...

linux静态库+嵌套makefile

linux静态库嵌套makefile 文章目录 linux静态库嵌套makefile1、概述2、代码结构3、代码1&#xff09;main.c2&#xff09;主makefile3&#xff09;fun.c4&#xff09;func.h5&#xff09;静态库makefile 4、运行效果1&#xff09;在main.c目录下执行make2&#xff09;到output目…...

AIP-127 HTTP和gRPC转码

编号127原文链接AIP-127: HTTP and gRPC Transcoding状态批准创建日期2019-08-22更新日期2019-08-22 遵守面向资源设计的API使用RPC进行定义&#xff0c;但面向资源设计框架允许这些API表现为整体上符合REST/JSON约定的接口。这一点很重要&#xff0c;可以帮助开发者利用现有知…...

代码随想录算法训练营day32

代码随想录算法训练营 —day32 文章目录 代码随想录算法训练营前言一、动态规划理论基础二、509. 斐波那契数动态规划动态规划优化空间版递归法 三、70. 爬楼梯动态规划动态规划空间优化 746. 使用最小花费爬楼梯动态规划空间优化 总结 前言 今天是算法营的第32天&#xff0c…...

设计模式的艺术-开闭原则

原则使用频率图&#xff08;仅供参考&#xff09; 1.如何理解开闭原则 简单来说&#xff0c;开闭原则指的是 “对扩展开放&#xff0c;对修改关闭”。 当软件系统需要增加新的功能时&#xff0c;应该通过扩展现有代码的方式来实现&#xff0c;而不是去修改已有的代码。 例如我…...

【易康eCognition实验教程】003:点云数据加载浏览与操作详解

文章目录 一、加载并创建点云数据二、三维浏览1. 点云模式2. 点云视图设置 三、使用点云 一、加载并创建点云数据 本实验点云数据位于专栏配套实验数据包中的data003.rar中的terrian.las&#xff0c;解压后进行以下实验操作。 打开ecognition软件&#xff0c;点击【File】→【…...

海外雅思备考经验

1.18号斯图雅思考试 第一次考雅思&#xff0c;第一次在国外考雅思&#xff01; 最近在德国斯图加特联培&#xff0c;报考了1月18号的雅思机考&#xff0c;下面分享一些考试经验. ✌️考试地点 EZ Plus WEST Hasenbergstr. 31/1,, in the backyard of Hasenbergstrae 31, Stuttg…...

Oracle之Merge into函数使用

Merge into函数为Oracle 9i添加的语法&#xff0c;用来合并update和insert语句。所以也经常用于update语句的查询优化&#xff1a; 一、语法格式&#xff1a; merge into A using B on (A.a B.a) --注意on后面带括号&#xff0c;且不能更新join的字段 when matched then upd…...

Spring Boot 自定义属性

Spring Boot 自定义属性 在 Spring Boot 应用程序中&#xff0c;application.yml 是一个常用的配置文件格式。它允许我们以层次化的方式组织配置信息&#xff0c;并且比传统的 .properties 文件更加直观。 本文将介绍如何在 Spring Boot 中读取和使用 application.yml 中的配…...

前端面试题-问答篇-5万字!

1. 请描述CSS中的层叠&#xff08;Cascade&#xff09;和继承&#xff08;Inheritance&#xff09;规则&#xff0c;以及它们在实际开发中的应用。 在CSS中&#xff0c;层叠&#xff08;Cascade&#xff09;和继承&#xff08;Inheritance&#xff09;是两个关键的规则&#x…...

2025年1月21日(树莓派点亮呼吸灯第一次修改)

系统信息&#xff1a; Raspberry Pi Zero 2W 系统版本&#xff1a; 2024-10-22-raspios-bullseye-armhf Python 版本&#xff1a;Python 3.9.2 已安装 pip3 支持拍摄 1080p 30 (1092*1080), 720p 60 (1280*720), 60/90 (640*480) 已安装 vim 已安装 git 学习目标&#xff1a;…...

【Linux网络编程】传输层协议

目录 一&#xff0c;传输层的介绍 二&#xff0c;UDP协议 2-1&#xff0c;UDP的特点 2-2&#xff0c;UDP协议端格式 三&#xff0c;TCP协议 3-1&#xff0c;TCP报文格式 3-2&#xff0c;TCP三次握手 3-3&#xff0c;TCP四次挥手 3-4&#xff0c;滑动窗口 3-5&#xf…...

JavaScript系列(41)--状态管理实现详解

JavaScript状态管理实现详解 &#x1f504; 今天&#xff0c;让我们深入探讨JavaScript的状态管理实现。状态管理是现代前端应用中的核心概念&#xff0c;它帮助我们有效地管理和同步应用数据。 状态管理基础概念 &#x1f31f; &#x1f4a1; 小知识&#xff1a;状态管理是一…...

flume和kafka整合 flume和kafka为什么一起用?

‌Flume和Kafka一起使用的主要原因是为了实现高效、可靠的数据采集和实时处理。‌‌12 实时流式日志处理的需求 Flume和Kafka结合使用的主要目的是为了完成实时流式的日志处理。Flume负责数据的采集和传输,而Kafka则作为消息缓存队列,能够有效地缓冲数据,防止数据堆积或丢…...

【深度学习】 自动微分

自动微分 正如上节所说&#xff0c;求导是几乎所有深度学习优化算法的关键步骤。 虽然求导的计算很简单&#xff0c;只需要一些基本的微积分。 但对于复杂的模型&#xff0c;手工进行更新是一件很痛苦的事情&#xff08;而且经常容易出错&#xff09;。 深度学习框架通过自动…...

什么是三高架构?

大家好&#xff0c;我是锋哥。今天分享关于【什么是三高架构?】面试题。希望对大家有帮助&#xff1b; 什么是三高架构? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 “三高架构”通常是指高可用性&#xff08;High Availability&#xff09;、高性能&#xff…...

IOS 自定义代理协议Delegate

QuestionViewCell.h文件代码&#xff0c;定义代理协议 protocol QuestionViewCellDelegate <NSObject>- (void)cellIsOpenDidChangeAtIndexPath:(NSIndexPath *)indexPath;endinterface QuestionViewCell : UITableViewCellproperty (nonatomic, weak) id<QuestionVi…...

【flutter版本升级】【Nativeshell适配】nativeshell需要做哪些更改

flutter 从3.13.9 升级&#xff1a;3.27.2 nativeshell组合库中的 1、nativeshell_build库替换为github上的最新代码 可以解决两个问题&#xff1a; 一个是arg("--ExtraFrontEndOptions--no-sound-null-safety") 在新版flutter中这个构建参数不支持了导致的build错误…...

C#编程:List.ForEach与foreach循环的深度对比

在C#中&#xff0c;List<T>.ForEach 方法和传统的 foreach 循环都用于遍历列表中的元素并对每个元素执行操作&#xff0c;但它们之间有一些关键的区别。 List<T>.ForEach 方法 方法签名&#xff1a;public void ForEach(Action<T> action)类型&#xff1a;…...

leetcode_2762. 不间断子数组

2762. 不间断子数组 - 力扣&#xff08;LeetCode&#xff09; 运用滑动窗口和multise(平衡二叉树实现) 符合条件 右窗口向右扩展 不符合条件 左窗口向左扩展 class Solution { public:long long continuousSubarrays(vector<int>& nums) {int max, min; //表示窗…...

Java学习教程,从入门到精通,JDBC创建数据库语法知识点及案例代码(99)

JDBC创建数据库语法知识点及案例代码 一、JDBC创建数据库语法 在JDBC中&#xff0c;创建数据库主要通过执行SQL语句来实现。其基本语法如下&#xff1a; CREATE DATABASE database_name;CREATE DATABASE 是固定的SQL语句关键字&#xff0c;用于指定创建数据库的操作。databa…...

进阶——第十六届蓝桥杯(sscanf的运用)

声明变量 char tx_buf[30];char rx_buf[30];char car_type[5];char car_num[5];char car_time[15]; int sscanf(const char *str, const char *format,...); sscanf函数功能 sscanf 函数从字符串 str 中读取数据&#xff0c;根据 format 所指定的格式将数据存储到后续的变量中…...

嵌入式硬件篇---ADC模拟-数字转换

文章目录 前言第一部分&#xff1a;STM32 ADC的主要特点1.分辨率2.多通道3.转换模式4.转换速度5.触发源6.数据对齐7.温度传感器和Vrefint通道 第二部分&#xff1a;STM32 ADC的工作流程&#xff1a;1.配置ADC2.启动ADC转换 第三部分&#xff1a;ADC转化1.抽样2.量化3.编码 第四…...

Spark Streaming编程基础

文章目录 1. 流式词频统计1.1 Spark Streaming编程步骤1.2 流式词频统计项目1.2.1 创建项目1.2.2 添加项目依赖1.2.3 修改源目录1.2.4 添加scala-sdk库1.2.5 创建日志属性文件 1.3 创建词频统计对象1.4 利用nc发送数据1.5 启动应用&#xff0c;查看结果 2. 编程模型的基本概念3…...

android wifi AsyncChannel(WifiManager和WifiP2pManager)

AynscChannel的讲解 [Android]AsyncChannel介绍-CSDN博客 WifiP2pManager里的channel的使用理解 WifiP2pManager.java public void createGroup(Channel c, ActionListener listener) {checkChannel(c);c.mAsyncChannel.sendMessage(CREATE_GROUP, WifiP2pGroup.NETWORK_ID_PE…...

生存网络与mlr3proba

在R语言中,mlr3包是一个用于机器学习的强大工具包。它提供了一种简单且灵活的方式来执行超参数调整。 生存网络是一种用于生存分析的模型,常用在医学和生物学领域。生存分析是一种统计方法,用于研究事件发生的时间和相关因素对事件发生的影响。生存网络可以用来预测个体在给…...