AIGC视频扩散模型新星:SVD——稳定扩散的Video模型
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍慕尼黑大学携手 NVIDIA 等共同推出视频生成模型 Video LDMs。NVIDIA 在 AI 领域的卓越成就家喻户晓,而慕尼黑大学同样不容小觑,他们深度参与了最初 SD 系列图像生成模型的研发,在扩散模型领域,展现出了强劲实力 。
🌺优质专栏回顾🌺:
- 机器学习笔记
- 深度学习笔记
- 多模态论文笔记
- 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范式应用于高分辨率视频生成领域。过程如下:
- 首先仅在图像上预训练一个LDM;
- 然后,通过在潜在空间扩散模型中引入时间维度;
- 在编码后的图像序列(即视频)上进行微调,将图像生成器转变为视频生成器。
- 对扩散模型的上采样器进行时间对齐,将它们转变为时间一致的视频超分辨率模型。
本文中,作者专注于两个实际相关的应用:野外驾驶数据的模拟和基于文本到视频建模的创意内容创作。
这种情况下,可以通过训练一个时间对齐模型,结合预训练图像LDM(如SD系列模型),转变为一个高效且表现力强的文本到视频模型。
1. 引言
1.图像生成模型发展:因基础建模方法突破,图像生成模型备受关注,强大模型基于生成对抗网络、自回归变换器和扩散模型构建,其中扩散模型优势明显,训练目标稳健可扩展且,并且通常比基于变换器的模型参数更少。
2. 视频建模现状:图像领域进展巨大,但视频建模滞后。原因是视频数据训练成本高且缺乏合适数据集,多数视频合成工作只能生成低分辨率短视频,包括之前的视频扩散模型。
3. 研究内容:本文将视频模型应用于实际,生成高分辨率长视频,聚焦两个实际相关问题:一是高分辨率真实世界驾驶数据的视频合成,可用于自动驾驶模拟;二是用于创意内容生成的文本引导视频合成。
4. 研究基础与模型提出:本文基于潜在扩散模型(LDMs)展开研究,提出Video LDMs,将其应用于高分辨率视频生成任务,LDMs可减轻高分辨率图像训练的计算负担。
5. 模型构建方法:
先在大规模图像数据集在图像上预训练Video LDMs(或用现有预训练图像LDMs)。通过在潜在空间DM引入时间维度,固定预训练空间层的同时仅在编码后的图像序列(即视频)上训练这些时间层,将LDM图像生成器转变为视频生成器(图2);
图2. 时间视频微调。我们将预训练的图像扩散模型转变为时间一致的视频生成器。最初,模型合成的一批不同样本是相互独立的。在时间视频微调后,样本在时间上对齐,形成连贯的视频。图中可视化了一个一维玩具分布的扩散模型在微调前后的随机生成过程。为清晰起见,该图对应于像素空间中的对齐。在实践中,我们在LDM的潜在空间中进行对齐,并在应用LDM的解码器后获得视频(见图3)。我们还在像素或潜在空间中对扩散模型上采样器进行视频微调(第3.4节)。
-
微调LDM解码器:在像素空间中实现时间一致性(图3);
图3. 上:在时间解码器微调期间,我们使用固定的编码器处理视频序列,该编码器独立处理帧,并强制跨帧进行时间连贯的重建。我们还使用了一个视频感知判别器。下:在LDMs中,一个扩散模型在潜在空间中进行训练。它合成潜在特征,然后通过解码器将其转换为图像。请注意,下图是针对单个帧的可视化;关于生成时间一致的帧序列的视频微调框架,请见图2。
为了进一步提高空间分辨率,我们还对像素空间和潜在DM上采样器进行时间对齐,这些上采样器广泛用于图像超分辨率,将它们转变为时间一致的视频超分辨率模型。
-
模型优势与实验成果:Video LDMs 能够以计算和内存高效的方式生成全局连贯且长的视频。作者对方法进行了消融实验,实现了最先进的视频质量,并合成了长达几分钟的视频。
-
研究意义:通过对稳定扩散(Stable Diffusion)进行视频微调,将其转变为一个高效且强大的文本到视频生成器,分辨率高达1280×2048。由于在这种情况下我们只需要训练时间对齐层,因此可以使用相对较小的带字幕视频训练集。
贡献
- 提出高效视频生成方法:基于LDMs设计出训练高分辨率、长期一致视频生成模型的高效方式。核心在于借助预训练的图像扩散模型(DMs),插入能让图像在时间上保持一致的时间层,进而将其转化为视频生成器(相关原理参考图2和图3)。
- 优化超分辨率DMs:对常见的超分辨率DMs进行时间微调,提升其在视频处理中的性能表现。
- 驾驶场景视频合成突破:在真实驾驶场景视频的高分辨率合成领域达到当前最优水平,能够生成长达数分钟的视频,满足实际应用中对长时间、高质量驾驶场景模拟等的需求。
- 拓展文本到视频应用:成功将公开的稳定扩散文本到图像LDM改造为功能强大、表现力丰富的文本到视频LDM,极大拓展了模型的应用范围,为文本驱动的视频创作提供有力工具。
- 时间层的通用性验证:验证了学习到的时间层具有通用性,可以和不同的图像模型检查点(如DreamBooth)结合,为个性化视频生成等更多创新应用提供了可能 。
2. 背景
扩散模型(DMs)
扩散模型(DMs)的核心原理,建模与训练方法是DMs通过迭代去噪学习对数据分布 p d a t a ( x ) p_{data}(x) pdata(x)建模,使用去噪分数匹配法训练。过程如下:
- 扩散过程:给定样本 x ∼ p d a t a x \sim p_{data} x∼pdata,构建扩散后的输入 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)单调递减。
- 去噪器优化:去噪器模型 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}] Ex∼pdata,τ∼pτ,ϵ∼N(0,I)[∥y−fθ(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),简要介绍如下:
- 提升效率的原理:先训练压缩模型,把输入图像转换到复杂度较低的空间低维潜在空间,在此空间可高保真重建原始数据,以此提升计算和内存效率。
- 实现方式:实际通过正则化自动编码器(在传统自动编码器基础上引入正则化项,抑制模型过拟合,提升泛化能力)实现,该编码器包含编码器模块 ϵ \epsilon ϵ 和解码器 D D D ,通过 x ^ = D ( ϵ ( x ) ) ≈ x \hat{x}=D(\epsilon(x)) \approx x x^=D(ϵ(x))≈x重建输入图像(见图3)。
- 确保重建质量的方法:在自动编码器训练时添加对抗目标,利用基于补丁的判别器来确保逼真的重建效果。
- 潜在空间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}} x∈RT×3×Hˉ×Wˉ, x ∼ p d a t a x \sim p_{data} x∼pdata是一个包含 T T T个RGB帧的序列,帧的高度和宽度分别为 H ~ \tilde{H} H~和 W ˉ \bar{W} Wˉ。
3.1 将潜在图像转变为视频生成器
转变思路如下:
- 高效训练思路:高效训练视频生成模型的关键在于重用预训练且固定的图像生成模型(由参数 θ \theta θ参数化的LDM)。
- 模型现有结构:构成图像LDM并处理像素维度输入的神经网络层为空间层 l θ i l_{\theta}^{i} lθi( i i i是层索引)。
- 现有模型局限:虽能高质量合成单帧,但直接用于渲染 T T T个连续帧视频会失败,原因是模型无时间感知能力。
- 改进措施:引入额外时间神经网络层 l ϕ i l_{\phi}^{i} lϕi,与空间层 l θ i l_{\theta}^{i} lθi交错排列,学习以时间一致的方式对齐单个帧。
- 最终模型构成:额外时间层 { 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)=z∈RT×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) z′←rearrange(z,(b t) c h w→b c t h w)
z ′ ← l ϕ i ( z ′ , c ) z' \leftarrow l_{\phi}^{i}(z', c) z′←lϕ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) z′←rearrange(z′,b c t h w→(b t) c h w)
这里为了表述清晰,引入了批量维度 b b b。
- 空间层在批量维度 b b b中独立处理所有 B ⋅ T B \cdot T B⋅T个已编码的视频帧;
- 时间层 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} ϕargminEx∼pdata,τ∼pτ,ϵ∼N(0,I)[∥y−fθ,ϕ(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 T−S帧,其中 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=(mS∘z,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) Ex∼pdata,mS∼pS,τ∼pτ,ϵ[∥y−fθ,ϕ(zτ;cS,c,τ)∥22],(3)
其中 p S p_{S} pS表示(分类的)掩码采样分布。在实际应用中,我们训练的预测模型会基于0个、1个或2个上下文帧来设置条件,这样就可以实现如下所述的无分类器引导。
推理过程
在推理时,为了生成长视频,我们可以迭代地应用采样过程,将最新的预测结果作为新的上下文。过程如下:
- 最初的第一个序列是通过基础图像模型合成单个上下文帧,然后基于该帧生成下一个序列。
- 之后,以两个上下文帧作为条件来对运动进行编码(附录中有详细信息)。
- 为了稳定这个过程,作者发现使用无分类器扩散引导(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 s≥1表示引导尺度,为了可读性,这里省略了对 τ \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 高帧率的时间插值
高分辨率视频需兼具高空间分辨率和高时间分辨率(高帧率)。为此,将其合成过程分为两部分:
- 第3.1和3.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} Ex∼pdata,(τ,τγ)∼pτ,ϵ∼N(0,I)[ y−gθ,ϕ(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视频扩散模型新星:SVD——稳定扩散的Video模型
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍慕尼黑大学携手 NVIDIA 等共同推出视频生成模型 Video LDMs。NVIDIA 在 AI 领域的卓越成就家喻户晓,而慕尼黑大学同样不容小觑,…...
MySql面试宝典【刷题系列】
文章目录 一、Mysql 的存储引擎 myisam 和 innodb 的区别。二、MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?三、对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题?四、锁的优化策略…...
银河麒麟系统安装mysql5.7【亲测可行】
一、安装环境 cpu:I5-10代; 主板:华硕; OS:银河麒麟V10(SP1)未激活 架构:Linux 5.10.0-9-generic x86_64 GNU/Linux mysql版本:mysql-5.7.34-linux-glibc2.12-x86_64.ta…...
CTF-内核pwn入门1: linux内核模块基础原理
本文由A5rZ在2025-2-18-21:00编写 1.可加载内核模块是什么? 内核可加载模块(*.ko 文件)是内核的一种扩展机制,可以在不重启系统的情况下加载和卸载代码。它们允许动态地向内核添加新的功能或支持。 以下是一些内核模块常见的功能&…...
第4章 4.1 Entity Framework Core概述
4.1.1 什么是ORM ORM (object tralstional mapping ,对象关系映射)中的“对象”指的就是C#中的对象,而“关系”是关系型数据库,“映射”指搭建数据库与C#对象之间的“桥梁”。 比如使用ORM ,可以通过创建C#对象的方式把数据插入数据库而不需…...
【C语言】自定义类型:联合体和枚举
1. 联合体 1.1 联合体类型的声明 像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以是不同的类型。 但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。所以联合体也叫:共用体。 给联合…...
企业组网IP规划与先关协议分析
目录 一、IP编址 1、IP地址组成 2、IP地址表达 3、IP 地址分类 4、IP地址类型 5、IP网络通信 6、子网掩码 7、默认子网掩码 8、IP 地址规划 9、有类IP编制缺陷 10、VLSM 11、变长子网掩码案例 12、网关 13、无类域间路由 一、IP编址 网络层位于数据链路层与传输层之间…...
数据结构之【顺序表简介】
1.顺序表的概念 顺序表 是 用一段物理地址连续的存储单元 依次 存储数据元素的线性结构 一般情况下采用数组存储 2.顺序表的结构 既然顺序表可以用来存储数据元素, 那就少不了 增删查改 的操作 此时,单一地只创建数组满足不了上述操作 创建相应的结构…...
如何调用 DeepSeek API:详细教程与示例
目录 一、准备工作 二、DeepSeek API 调用步骤 1. 选择 API 端点 2. 构建 API 请求 3. 发送请求并处理响应 三、Python 示例:调用 DeepSeek API 1. 安装依赖 2. 编写代码 3. 运行代码 四、常见问题及解决方法 1. API 调用返回 401 错误 2. API 调用返回…...
一周学会Flask3 Python Web开发-flask3模块化blueprint配置
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们在项目开发的时候,多多少少会划分几个或者几十个业务模块,如果把这些模块的视图方法都写在app.py…...
vxe-table实现动态列
vxe-table实现动态列 1.动态列解释2.解决步骤2.1将后端返回的动态列表头,按照格式拼接在固定列表头上2.2将后端返回的列表数据按照键值对格式组装 1.动态列解释 正常列表是有固定的列;我的需求是,最初只知道表格的固定两列,查询数…...
day16_推荐系统和总结
文章目录 day16_推荐系统和总结一、推荐实现1、基于流行度推荐(掌握)1.1 近期热门商品推荐1.2 个人热门商品推荐 2、基于隐语义模型的协同过滤推荐(了解)2.1 ALS算法介绍2.2 推荐代码 3、基于物品的协同过滤推荐(了解&…...
Scifinder数据库专利检索实操教程
在上期的内容里,我为大家分享了查询专利的数据库。发出后有小伙伴问,怎么没有大佬Scifinder!这不,应大家的呼声,今天就来给大家好好讲讲 Scifinder专利检索!! SciFinder,由美国化学会…...
Linux下 <用户名> is not in the sudoers file
参考链接 https://blog.csdn.net/weixin_49192027/article/details/114702099 原因 当前的用户没有加入到sudo的配置文件里 解决方案 切换到root用户 su 编辑配置文件 vim /etc/sudoers 如果没有安装vim 运行命令 sudo apt-get install vim vim的使用教程 参考链接…...
Linux下基本指令(4)
Linux权限的概念 Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情。 超级用户的命令提示符是“#”,普通用户…...
【算法与数据结构】字典树(Trie)详解
目录 一,字典树的定义 二,字典树的代码实现 完整代码详细注释: 测试用例测试结果: 三,处理其他字符 四,内存优化与扩展 1. 内存优化 2. 扩展功能 五,扩展功能支持通配符匹配 六&…...
el-table树状表格,默认展开第一个节点的每一层
效果如图 <template><el-table:data"tableData"style"width: 100%":tree-props"{ children: children, hasChildren: hasChildren }":expand-row-keys"expandRowKeys"row-key"id"expand-change"handleExpan…...
RPA-实例(UiPath )
UiPath 是一个流行的机器人流程自动化(RPA)工具,用于自动化重复性任务。以下是一个简单的实例,展示如何使用 UiPath 自动化一个常见的任务:从 Excel 文件中读取数据并将其输入到网页表单中。 实例:从 Excel 读取数据并自动填写网页表单 步骤 1:准备工作 安装 UiPath S…...
【RabbitMQ业务幂等设计】RabbitMQ消息是幂等的吗?
在分布式系统中,RabbitMQ 自身不直接提供消息幂等性保障机制,但可通过业务逻辑设计和技术组合实现消息处理的幂等性。以下是 8 种核心实现方案及最佳实践: 一、消息唯一标识符 (Message Deduplication) 原理 每条消息携带全局唯一IDÿ…...
Spring Boot项目开发常见问题及解决方案(上)
启动相关问题 问题 1:项目启动时报错“找不到主类” 在使用 Spring Boot 打包成可执行 JAR 文件后启动,有时会遇到这个头疼的问题。通常是因为打包配置有误或者项目结构不符合要求。 解决方案: 首先,检查 pom.xml(Ma…...
具有整合各亚专科医学领域知识能力的AI智能体开发纲要(2025版)
整合各亚专科医学领域知识能力的AI代理的开发与研究 一、引言 1.1 研究背景 在科技飞速发展的当下,人工智能(AI)已成为推动各行业变革的关键力量,医疗领域也不例外。近年来,AI 在医疗行业的应用取得了显著进展,从医学影像诊断到疾病预测,从药物研发到个性化医疗,AI 技…...
Selenium实战案例1:论文pdf自动下载
在上一篇文章中,我们介绍了Selenium的基础用法和一些常见技巧。今天,我们将通过中国科学:信息科学网站内当前目录论文下载这一实战案例来进一步展示Selenium的web自动化流程。 目录 中国科学:信息科学当期目录论文下载 1.网页内…...
进程的介绍--进程状态/切换
1.冯 • 诺依曼体系结构 1.1 体系结构 冯•诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。数学家冯•诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成&#x…...
一文详解U盘启动Legacy/UEFI方式以及GPT/MBR关系
对于装系统的老手而说一直想研究一下装系统的原理,以及面对一些问题时的解决思路,故对以前的方法进行原理上的解释,主要想理解其底层原理。 引导模式 MBR分区可以同时支持UEFI和Legacy引导,我们可以看一下微pe制作的启动盘&#…...
【面试】Redis 常见面试题
一、介绍一下什么是 Redis,有什么特点? Redis 是一个高性能的 key-value 内存数据库。 不同于传统的 MySQL 这样的关系型数据库,Redis 主要使用内存存储数据(当然也支持持久化存储到硬盘上),并非是使用 “表” 这样…...
扩散模型中,Flow Matching的训练方式相比于 DDPM 训练方法有何优势?
在扩散模型中,Flow Matching(FM)相比DDPM(Denoising Diffusion Probabilistic Models)的训练方法具有以下核心优势: 1. 更简单的训练目标 DDPM:通过逐步预测噪声来间接优化数据分布的变分下界(ELBO),需要设计多步的噪声调度策略,训练目标依赖马尔可夫链的分解。Flow…...
Unity FBXExport导出的FBX无法在Blender打开
将FBX转换为obj: Convert 3D models online - free and secure...
【无标题】基于Unity写一个DelayInvoke方法
没想到来得这么块,程序员可能比司机先失业了。。。。。。。。 //测试过一定要这么调用??奇怪的是,不能(mono 直接引用)??///但AI还是给出了能用的代码 MonoBehaviourExtensions.DelayInvoke(this,()=> { },3); /* 方案一,使用示例(): public class ExampleUsag…...
JavaScript 语言基础之标签语句
标签语句的语法 label: statement label 表示标签名,可以是任何合法的标识符,但不能是 JavaScript 中的保留字。statement 表示被标记的语句块,可以是任何合法的 JavaScript 语句。 用法 标签语句的主要用途是在代码中进行跳转࿰…...
【网络编程】网络编程基础:TCP/UDP 协议
一、什么是网络? 网络是信息传输,接收和共享的虚拟世界,通过把网络上的信息汇聚在一起,将这些资源进行共享。 初衷:知识共享。这里不得不提到Internet 的历史-它其实是“冷战”的产物: 1957年…...
idea 部署 AJ-Report 启动的注意事项
AJ-Report 入门参考: AJ-Report 初学(入门教程) gitee 下载:https://gitee.com/anji-plus/report/releases 根据上面提供的 gitee 下载链接,点击直接下载 最上面的就是最新版本的,旧版本往下拉就可以找到,有三个下载…...
C# 生成二维码隐藏ASCII码
在 C# 中生成二维码时,如果需要隐藏或过滤掉 ASCII 码中的控制字符或不可见字符,可以在生成二维码之前对输入文本进行处理。以下是完整的实现步骤和代码示例: 1. 过滤 ASCII 码中的控制字符 ASCII 码中,0 到 31 以及 127 是控制字…...
python有没有不同精度的整型类型?
在 Python 中,不像 C、Java 等语言有明确的不同精度整型类型(如 int8、int16、int32、int64 等),Python 提供了统一的整数类型 int,它可以处理任意大小的整数,没有固定的精度限制。不过,Python …...
Python多线程编程理解面试题解析
一、多线程介绍 Python 的多线程是一种实现并发编程的方式,允许程序同时执行多个任务。然而,由于 Python 的全局解释器锁(GIL)的存在,多线程在某些场景下可能无法充分利用多核 CPU 的性能。以下是对 Python 多线程的理…...
网络协议相关知识有哪些?
前言 网络协议的基础是OSI和TCP/IP模型,这两个模型是理解协议分层的关键。 正文(仅是个人理解,如有遗漏望海涵) 网络协议是网络中设备间通信的规则和标准,涉及数据传输、路由、错误控制等多个方面。以下是网络协议相关知识的系统梳理: 一、网络协议分层模型 1、OSI七…...
【并发压测】高并发下Linux流量监控
在高并发环境下,Linux流量监控至关重要,可以帮助您确保网络性能和稳定性。以下是一些常用的Linux流量监控工具和方法: 1. **iftop**:iftop 是一款实时的网络流量监控工具,可以显示当前服务器上每个网络接口的流量使用情…...
Spring Boot项目中解决跨域问题(四种方式)
目录 一,跨域产生的原因二,什么情况下算跨域三,实际演示四,解决跨域的方法 1,CrossOrigin注解2,添加全局过滤器3,实现WebMvcConfigurer4,Nginx解决跨域5,注意 开发项目…...
革新之力:数字科技——重塑未来的超越想象之旅
在21世纪的科技浪潮中,数字科技如同一股不可阻挡的洪流,正以前所未有的速度和广度改变着我们的生活、工作乃至整个社会的结构。它不仅是技术的简单迭代,更是对人类社会认知边界的拓宽,对经济模式、社会治理、文化形态等多方面的深…...
matlab和java混合编程经验分享
最常用的就是可以查到再控制栏deploytool选择library complier打包,但是有问题就是比如果用了外部的求解器比如yalmip或者cplex的话用这个方法会找不到外部的求解器,网上找了很多,基本都大同小异。 后面分享一个亲测有效的打包方法࿰…...
rk3588/3576板端编译程序无法运行视频推理
图片推理可以,但是视频不行,运行视频推理报错:segment fault. 我遇到的问题原因是ffmpeg安装有问题,可以先在板端运行:ffmpeg -version ffmpeg version 4.2.4-1ubuntu1.0firefly6 Copyright (c) 2000-2020 the FFmpe…...
MATLAB在数据分析和绘图中的应用:从基础到实践
引言 股票数据分析是金融领域中的重要研究方向,通过对历史价格、成交量等数据的分析,可以帮助投资者更好地理解市场趋势和做出决策。MATLAB作为一种强大的科学计算工具,提供了丰富的数据处理和可视化功能,非常适合用于股票数据的…...
【CS285】高斯策略对数概率公式的学习笔记
公式介绍 在【CS285】中提到了高斯策略对数概率公式的公式如下: log π θ ( a t ∣ s t ) − 1 2 ∥ f ( s t ) − a t ∥ Σ 2 const \log \pi_{\theta}(\mathbf{a}_t | \mathbf{s}_t) -\frac{1}{2} \left\| f(\mathbf{s}_t) - \mathbf{a}_t \right\|_{\S…...
windows环境下用docker搭建php开发环境dnmp
安装WSL WSL即Linux子系统,比虚拟机占用资源少,安装的前提是系统必须是win10以上。 WSL的安装比较简单,网上有很多教程,例如:WSL简介与安装流程(Windows 下的 Linux 子系统)_wsl安装-CSDN博客&…...
区块链中的递归长度前缀(RLP)序列化详解
文章目录 1. 什么是RLP序列化?2. RLP的设计目标与优势3. RLP处理的数据类型4. RLP编码规则详解字符串的编码规则列表的编码规则 5. RLP解码原理6. RLP在以太坊中的应用场景7. 编码示例分析8. 总结 1. 什么是RLP序列化? 递归长度前缀(RLP&…...
PHP建立MySQL持久化连接(长连接)及mysql与mysqli扩展的区别
如果在 PHP 5.3 的版本以前想要创建MySQL的持久化连接(长连接),需要显式调用 pconnect 创建: $con mysql_pconnect($server[host], $server[username], $server[password]); if (!($con false)) { if (mysql_select_db($server[database], $con) fals…...
基于Python+Django+Vue的旅游景区推荐系统系统设计与实现源代码+数据库+使用说明
运行截图 功能介绍 前台功能包括:首页、详情页、订单、用户中心。后台功能包括:首页、轮播图管理、管理员、卖家管理、买家管理、景区管理、订单管理非开源功能(分类管理,地区管理,收藏管理,评论管理&a…...
架构学习第七周--Prometheus
目录 一、监控系统基础 二、Prometheus介绍 三、Prometheus单机部署 四、服务发现与告警功能 4.1,服务发现 4.2,告警功能实现 五、Prometheus与Kubernetes 5.1,Kubernetes指标 5.2,Prometheus集群部署 一、监控系统基础…...
基于Nanopi duo2的WiFi智能摄像头
1.固件包烧录 https://wiki.friendlyelec.com/wiki/index.php/NanoPi_Duo2/zh#.E8.BF.9E.E6.8E.A5WiFi 固件包链接以及烧录工具都在上面链接中 烧录过程 使用读卡器将SD卡插入到电脑,然后打开烧录工具 2.通过串口工具连接板子使其连接WiFi 对应的串口工具,就是这个HyperT…...
Hive Orc表数据导出和导入
导出到hdfs:hive执行 INSERT OVERWRITE DIRECTORY /test/hdfs_dir ROW FORMAT DELIMITED FIELDS TERMINATED BY \t STORED AS ORC SELECT * FROM hive_table; HDFS导出到本地:shell执行 hdfs dfs -get /test/hdfs_dis/file_name /linux_dir/xxx 本…...
Python爬虫实战:从零到一构建数据采集系统
文章目录 前言一、准备工作1.1 环境配置1.2 选择目标网站 二、爬虫实现步骤2.1 获取网页内容2.2 解析HTML2.3 数据保存 三、完整代码示例四、优化与扩展4.1 反爬应对策略4.2 动态页面处理4.3 数据可视化扩展 五、注意事项六、总结互动环节 前言 在大数据时代,数据采…...