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

AIGC视频生成模型:Stability AI的SVD(Stable Video Diffusion)模型

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍Stability AI的视频生成模型SVD(Stable Video Diffusion)模型,这家公司在图像生成领域富有盛名,开发并维护了知名开源项目SD系列图像生成模型。SVD是他们在视频生成领域的尝试,主要贡献是:系统的视频数据整理工作流程,支持文本到视频、图像到视频生成和3D合成(物体从单一视角到多视角的转化)。

在这里插入图片描述

🌺优质专栏回顾🌺:

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

文章目录

    • 论文
    • 摘要
    • 引言
      • 现状
      • 本文研究
      • 研究结果
      • 总结
    • 研究背景
      • 潜在视频扩散模型
      • 数据整理
    • 为高质量视频合成整理数据
      • 数据处理与标注
        • 数据集及其处理
        • 字幕合成
        • 其他处理
      • 阶段I:图像预训练
      • 阶段II:整理视频预训练数据集
        • 视频数据整理的系统方法
        • 整理后的训练数据提升性能
        • 数据整理在大规模数据集上的作用
      • 阶段III:高质量微调
    • 大规模训练视频模型
      • 预训练基础模型
      • 高分辨率文本到视频模型
      • 高分辨率图像到视频模型
        • 相机运动LoRA
      • 帧插值
      • 多视图生成
    • 结论

论文

论文地址:https://static1.squarespace.com/static/6213c340453c3f502425776e/t/655ce779b9d47d342a93c890/1733935148453/stable_video_diffusion.pdf

项目地址:https://github.com/Stability-AI/generative-models

摘要

论文提出了稳定的潜在视频扩散模型(Stable Video Diffusion),这是一种用于高分辨率、最先进的文本到视频和图像到视频生成的视频扩散模型。

最近的视频生成模型中,常见的手段是在二维图像的潜在扩散模型中插入时间层,并在小规模高质量视频数据集上进行微调,进而转化为视频生成模型。这些方法训练方法差异很大整理视频数据的策略并未达成共识,这是本文主要解决的问题之一。

在本文中,评估了训练视频潜在扩散模型(LDMs)的三个不同阶段

  1. 文本到图像预训练
  2. 视频预训练
  3. 高质量视频微调

此外,还证明了精心整理的预训练数据集对于生成高质量视频的必要性,并提出了一种系统的视频数据整理过程来训练强大的基础模型,包括字幕生成过滤策略

作者提出他们的基础模型有如下的优势:

  1. 可以与闭源视频生成模型相媲美。
  2. 为下游任务(如图像到视频生成)提供了强大的运动表示,对特定于相机运动的LoRA模块具有适应性。
  3. 提供了强大的多视图3D先验,可以作为微调多视图扩散模型的基础。能够以前馈方式联合生成物体的多个视图,在计算预算仅为基于图像的方法的一小部分的情况下,性能优于这些方法。

引言

现状

受扩散模型在生成式图像建模领域进展的推动,生成式视频模型都取得了显著进展。总体而言,这些模型分为两种:

  1. 从头开始训练(如:Imagen Video);
  2. 要么是在预训练图像模型的基础上(部分或全部)微调,并插入额外的时间层(如Meta的Emu video)。

Imagen Video 由一个冻结的 T5 文本编码器、一个基础视频扩散模型以及由空间和时间超分辨率扩散模型交错组成的级联(包括 3 个时间超分辨率和 3 个空间超分辨率组件)构成。后续可能会讲,敬请期待。
Emu video 请参考:AIGC视频生成模型:Emu Video模型

训练过程通常会结合图像和视频数据集进行。上述研究均未探讨数据选择的影响,本研究针对这些此前未探索的领域展开。

本文研究

在当前的视频研究领域,其视频数据选择的重要性已得到广泛认可,但是未得到充分体现。

首先作者确定了对模型良好性能至关重要的三个不同视频训练阶段

  • 文本到图像预训练;
  • 大规模低分辨率视频数据集上的视频预训练;
  • 小规模但视频质量更高的数据集上进行的高分辨率视频微调。

作者基于简单的潜在视频扩散基线模型(Video LDMs),固定其架构和训练方案,并且引入了一种系统的大规模视频数据整理方法,并对视频预训练过程中数据整理的效果进行了实证研究发现:在精心整理的数据集上进行预训练,即使在高质量微调之后,也能显著提升模型性能。

这里的Video LDMs是指NVIDIA等推出的潜在视频扩散模型,
论文名:Align your Latents: High-Resolution Video Synthesis with Latent Diffusion Models;
论文链接:https://arxiv.org/pdf/2304.08818

研究结果

基于这些发现,作者使用他们提出的数据整理方案应用于一个大型视频数据集,训练出一个强大的预训练文本到视频基础模型,并在较小的高质量数据集上对基础模型进行微调,用于高分辨率的下游任务,得到的模型性能优于当前最先进的图像到视频模型。模型效果如下:
在这里插入图片描述
文本到视频(图1顶行)和图像到视频(见图1中行,从单个条件图像预测一系列帧)。

此外,作者还证明了两个亮点

  1. 他们的模型提供了强大的多视图先验(3D),可作为微调多视图扩散模型的基础。
  2. 通过使用运动线索专门提示时间层,以及在仅包含特定运动的数据集上训练LoRA模块,他们的模型能够实现明确的运动控制,这些LoRA模块可高效地插入到模型中

总结

本文证明了预训练的视频扩散模型可以转变为强大的多视图生成器,这有助于克服3D领域中常见的数据稀缺问题。的核心贡献主要体现在三个方面:

  • 第一,提出了一种系统的数据整理工作流程,能够将大规模未经整理的视频集合转化为适用于生成式视频建模的高质量数据集。
  • 第二,利用第一点的工作流程,我们训练出了最先进的文本到视频和图像到视频模型,性能超越了以往所有模型。
  • 第三,通过进行特定领域的实验,我们探究了模型在运动和3D理解方面的强大先验

研究背景

最近的大多数视频生成研究都依赖扩散模型,从文本或图像条件中联合合成多个连贯的视频帧。扩散模型通过学习逐步对来自正态分布的样本进行去噪,实现迭代优化过程,已成功应用于高分辨率文本到图像和视频合成。

在本研究中,作者在他们的视频数据集上训练了一个潜在视频扩散模型。接下来,我们简要概述使用潜在视频扩散模型(Video-LDMs)的相关研究:

潜在视频扩散模型

Video-LDMs在潜在空间中训练生成模型。大多数相关研究利用预训练的文本到图像模型,并在预训练架构中插入各种形式的时间混合层。Ge等人在论文Preserve your own correlation: A noise prior for video diffusion models.中还利用时间相关噪声来提高时间一致性,降低学习难度。

在本研究中,我们采用论文Align your Latents提出的架构,在每个空间卷积和注意力层之后插入时间卷积和注意力层,并且对整个模型进行微调

  • 论文Align your Latents原文仅训练时间层
  • 论文:Text2video-zero则完全无需训练

在文本到视频合成方面的研究分为两种路径:

  1. 直接根据文本提示对模型进行条件设定(如Align your Latents),在训练过程中,模型学习文本特征与视频内容特征之间的关联,建立起从文本到视频的映射关系。
  2. 利用额外的文本到图像先验(如Meta的Make-A-VideoEmu Video)。先利用已有的文本到图像模型,将文本转换为图像表示,再基于这些图像表示进一步生成视频。

在本研究中,采用前一种方法,并证明最终得到的模型是一个强大的通用运动先验,可轻松微调为图像到视频或多视图合成模型。

此外,还有如下优化策略:

  1. 引入了基于帧率的微条件设定(参考文献[60])。
  2. 采用了EDM框架(参考文献[48]),并将噪声调度显著向更高噪声值调整,这对高分辨率微调至关重要。

TODO:待补充

数据整理

在图像生成领域:利用像CLIP这样高效的语言 - 图像表征方式,数据整理成功应用于生成式图像建模领域。

在图像生成领域:视频生成相关的文献中,缺少数据整理策略,所采用的数据处理和筛选策略往往是临时拼凑的。现状如下:

在公开的视频数据集中,颇受欢迎的WebVid - 10M数据集带有水印且规模并非最优。WebVid - 10M数据集常常与图像数据结合使用,以实现图像 - 视频联合训练,这加大了区分图像数据和视频数据对最终模型影响的难度。

为了克服这些不足,本研究对视频数据整理方法提出了一种适用于生成式视频模型的通用三阶段训练策略,从而打造出了一个当前最先进的模型。

为高质量视频合成整理数据

在本节中,作者介绍一种在大规模视频数据集上训练最先进的视频扩散模型通用策略,确定生成式视频建模的三种不同训练模式:

  • 阶段I:图像预训练:即二维文本到图像扩散模型(如Meta的Emu模型、SD系列模型等)。
  • 阶段II:视频预训练:在大量视频上进行训练。
  • 阶段III:视频微调:在高分辨率下,对一小部分高质量视频进行模型优化。

数据处理与标注

数据集及其处理

作者收集了一个由长视频组成的初始数据集,作为视频预训练阶段的基础数据。为避免剪辑和淡入淡出效果影响合成视频,我们在三个不同的帧率级别上采用级联方式应用剪辑检测管道
在这里插入图片描述

图2. 我们的初始数据集包含许多静态场景和画面切换,这对生成式视频模型的训练不利。左图:经过我们处理前后,每个视频的平均片段数量对比,结果显示我们的处理流程检测出了大量额外的画面切换。右图:我们展示了在处理之前,其中一个子集的平均光流分数分布情况,该子集包含许多静态视频片段。

图2(左)展示了进行剪辑检测的必要性:应用剪辑检测管道后,我们得到的视频片段数量大幅增加(约为原来的 4 倍),这表明未经处理的数据集中,许多视频片段包含的画面切换次数比从元数据中获取的要多。

字幕合成

在这里插入图片描述
在论文中,作者使用三种不同的合成字幕方法为每个视频片段添加字幕:

  1. 首先,作者使用图像字幕生成器CoCa(参考历史文章:多模态论文笔记——Coca)对每个视频片段的中间帧进行注释,
  2. 使用V-BLIP(https://github.com/yukw777/VideoBLIP)获得基于视频的字幕。
  3. 最后,我们通过基于大语言模型(LLM)对前两个字幕进行总结,生成视频片段的第三种描述。

由此得到的初始数据集,我们称之为大视频数据集(Large Video Dataset,LVD),它由5.8亿个带注释的视频片段对组成,内容时长总计212年。

其他处理

进一步研究发现,该数据集包含可能会降低最终视频模型性能的示例,如运动较少的视频片段、文本过多的视频片段或整体美学价值较低的视频片段。因此,我们还使用密集光流对数据集进行注释,我们以2FPS的帧率计算光流,并通过去除平均光流幅度低于特定阈值的视频,过滤掉静态场景。实际上,当通过光流分数考虑LVD的运动分布时(见图2,右),我们识别出了其中接近静态的剪辑子集。

光流是指图像中物体运动在图像平面上产生的表观运动。密集光流则是对图像中所有像素点的光流进行计算和估计,得到一个密集的光流场,其中每个像素都有对应的运动矢量,包含了该像素在水平和垂直方向上的运动速度信息。

此外,作者还处理了:

  1. 应用光学字符识别去除包含大量文字的视频片段。
  2. 使用CLIP(参考历史文章:多模态论文笔记——CLIP)嵌入对每个剪辑的第一帧、中间帧和最后一帧进行注释,并据此计算美学分数(参考文献[76])以及文本图像相似度。

阶段I:图像预训练

图像预训练为训练流程的第一阶段。作者与当前视频模型的研究一致,也是将初始模型建立在预训练的图像扩散模型,本文中为Stable Diffusion 2.1。相比于模型权重的随机初始化,经过图像预训练的模型在质量和提示跟随方面更受青睐。

在这里插入图片描述

图像预训练在 LVD - 10M 数据集上进行视频预训练的影响:如上图 a 所示,由预训练图像模型初始化空间层的视频模型,明显优于空间权重随机初始化的类似模型。

  • “w/ image Pretraining” = “with image Pretraining” ;
  • “w/o image Pretraining” = “without image Pretraining” 。

阶段II:整理视频预训练数据集

视频数据整理的系统方法

作者使用下面描述的不同方法对 “大型视频数据集(LVD)” 进行子集筛选,
然后基于人类偏好对在这些数据集上训练的潜在视频扩散模型进行排序,进而根据排名选出合适的子集。

更具体地说,对于“字幕合成”中介绍的每种注释类型(即CLIP分数、美学分数、OCR检测率、合成字幕、光流分数),作者进行了如下处理:

  • 从LVD中未经过滤、随机采样的980万个样本子集LVD-10M开始。
  • 系统地去除排名靠后的12.5%、25%和50%的示例。
  • 对于合成字幕,不使用上面的去除排名靠后方法。而是评估不同字幕方法的Elo排名,以获取人类偏好投票,之后为每种注释类型选择性能最佳的过滤阈值。

将这种过滤方法应用于LVD后,得到了一个包含1.52亿个训练示例的最终预训练数据集,我们将其称为LVD-F(1/4大小的子集),如下表:
在这里插入图片描述

整理后的训练数据提升性能

在本节中,作者使用了:

  1. 上述过滤策略得到的子集LVD-10M-F
  2. 未整理的LVD-10M

分别训练了一个遵循标准架构的基线模型并进行了比较,并评估其视觉质量和提示视频对齐的偏好分数。
在这里插入图片描述

数据筛选对在 LVD - 10M 数据集上进行视频预训练的影响:如图 3b 强调了数据筛选对于预训练的重要性,在 LVD - 10M 数据集经过筛选的子集上进行训练,效果优于在未经筛选的整个 LVD - 10M 数据集上进行训练。

在这两个类别中,在小得多的LVD-10M-F上训练的模型更受青睐。

作者还将在LVD-10M-F上训练的模型与在WebVid-10M(最受认可的视频数据集)和InternVid-10M(专门为高美学价值筛选的数据集)上训练的类似视频模型进行比较。尽管LVD-10M-F也比这些数据集小四倍,但如图4b所示,相应的模型在时空质量和提示对齐方面更受人类评估者的青睐。
在这里插入图片描述

图4. 对阶段I和阶段II研究结果的总结:在经过筛选的数据集上进行预训练,无论是在小规模(图4a和图4b)还是大规模(图4c和图4d)的视频预训练过程中,都能持续提升生成式视频模型的性能。值得注意的是,即使在高质量数据上进行了5万步的视频微调之后,这种性能提升的效果依然存在(图4e)。

数据整理在大规模数据集上的作用

为了验证上述数据整理策略在更大、更具实际相关性的数据集上也同样有效,作者重复了上述实验,在一个包含5000万个示例的过滤子集和相同大小的未整理子集上训练视频扩散模型。

作者还进行了一项人类偏好研究,并在图4c中总结了研究结果,可以看到数据整理的优势在更大数量的数据上也得以体现。最后,作者在图4d中展示了在整理后的数据上训练时,数据集大小也是一个关键因素,在相同训练步数下,在5000万个整理后样本上训练的模型优于在LVD-10M-F上训练的模型。

阶段III:高质量微调

本节,作者探究了第二阶段后的这些差异如何转化为第三阶段后的最终性能。在这里,我们借鉴潜在图像扩散建模(如SD系列和Emu模型)的训练技术,提高训练示例的分辨率。此外,我们使用了一个较小的微调数据集,该数据集包含 25 万个配有字幕的高视觉保真度视频片段

作者微调了三个相同的模型,它们仅初始化方式不同

  • 第一个模型使用预训练的图像模型初始化权重,并跳过视频预训练,这是近期许多视频建模方法中的常见选择(如:Make-A-Video、Align your Latents)。
  • 其余两个模型使用上一节中潜在视频模型的权重进行初始化,具体来说,是在5000万个整理后未整理视频片段上训练得到的模型权重。

作者对所有模型进行50000步的微调,并在微调早期(10000步)和结束时评估人类偏好排名,以衡量性能差异在微调过程中的变化。并且在图4e中展示了获得的结果,其中绘制了相对于排名最后的模型(即从图像模型初始化的模型)的用户偏好Elo改进。此外,从整理后预训练权重恢复微调的模型在排名上始终高于从未整理训练后的视频权重初始化的模型。

由此,作者得出结论:

  • 视频模型训练分为视频预训练视频微调两个阶段,有利于微调后最终模型的性能提升;
  • 视频预训练最好在大规模、整理后的数据集上进行,因为预训练后的性能差异在微调后依然存在。

大规模训练视频模型

作者通过消融实验得出的最优数据策略,训练一个分辨率为320×576的强大基础模型。然后进行微调,以得到针对不同任务的多个强大的最先进模型,如下面的文本到“视频模型”、“图像到视频模型”和“帧插值模型”。

最后,在“多视图生成”中通过对图像到视频模型进行多视图生成调整,证明了作者的视频预训练可以作为强大的隐式3D先验,并且在多视图一致性方面优于同期研究,特别是Zero123XL和SyncDreamer。

预训练基础模型

本文的视频模型基于Stable Diffusion 2.1。在训练图像扩散模型时,采用噪声调度策略至关重要,对于更高分辨率的图像,需要增加噪声,步骤如下所示:

  1. 图像模型预处理:运用Karras等人([48])的网络预处理法,将图像模型中固定离散噪声调度调整为适用于256×384图像的连续噪声,并插入时间层。
  2. 模型训练:使用LVD-F数据集,在分辨率256×384的14帧图像上训练模型。采用标准EDM噪声调度([48]),进行150,000次迭代,批次大小为1536。
  3. 模型微调:对模型微调使其生成14帧320×576的图像,进行100,000次迭代,批次大小为768。此阶段将噪声调度向更高噪声调整很关键,与Hoogeboom等人([42])在图像模型中的研究结论相符。
  4. 模型成果:该模型被称为基础模型,能轻松微调以适应多种任务,学习到了强大的运动表示,在UCF-101([84])零样本视频生成任务中显著优于所有基线模型,评估细节见附录E,更多训练细节见附录D。

高分辨率文本到视频模型

作者在约包含100万个样本的高质量视频数据集上,对基础文本到视频模型进行微调。数据集中的样本通常包含大量的物体运动、稳定的相机运动,并且字幕与视频内容匹配良好,整体视觉质量较高。我们在分辨率为576×1024的情况下,对基础模型进行50,000次迭代微调(再次将噪声调度向更高噪声调整),批次大小为768。图5展示了一些样本:
在这里插入图片描述

高分辨率图像到视频模型

除了文本到视频任务,作者还对基础模型进行微调以用于图像到视频生成,在这个任务中,视频模型以静态输入图像作为条件。相应地,我们将输入到基础模型的文本嵌入替换为条件图像的CLIP图像嵌入。此外,我们将经过噪声增强(参考文献[37])的条件帧按通道连接到UNet(参考文献[69])的输入中。

作者不使用任何掩码技术,而是简单地将帧沿时间轴复制。我们微调了两个模型,一个预测14帧,另一个预测25帧;实现和训练细节见附录D。

作者发现,标准的无分类器引导(参考文献[34])可能会导致伪影:引导强度过低可能导致与条件帧不一致,而引导强度过高则可能导致过饱和。作者发现,**不使用恒定的引导尺度,而是沿帧轴线性增加引导尺度(从小到大)**更有帮助。具体细节见附录D。图5展示了一些样本,更多样本见附录E。

在后面的“多视图生成”中,作者将模型与最先进的闭源视频生成模型,特别是GEN-2(参考文献[21, 70])和PikaLabs(参考文献[51])进行比较,结果表明,在视觉质量方面,我们的模型更受人类评估者的青睐。实验细节以及更多图像到视频的样本见附录E。

相机运动LoRA

为了在图像到视频生成中实现可控的相机运动,我们在模型的时间注意力块中训练了多种相机运动LoRA(参考文献[30]);具体实现细节见附录D。我们在一个包含丰富相机运动元数据的小型数据集上,训练这些额外的参数。具体来说,我们使用三个数据子集,其中相机运动分别被分类为**“水平移动”、“缩放”和“静态”**。图7展示了三个模型在相同条件帧下的样本;更多样本见附录E。

帧插值

为了在高帧率下获得平滑的视频,作者将高分辨率文本到视频模型微调为帧插值模型。本文和Align your Latents的方法,通过掩码将左右帧连接到UNet的输入中。模型学习在两个条件帧之间预测三帧,有效地将帧率提高了四倍。令人惊讶的是,我们发现很少的迭代次数(约10,000次)就足以得到一个性能良好的模型。细节和样本分别见附录D和附录E。

多视图生成

为了同时获得物体的多个新视图,作者在多视图数据集上对图像到视频的SVD模型进行微调

  • 数据集:作者在两个数据集上对SVD模型进行微调,SVD模型输入单张图像输出一系列多视图图像
    • Objaverse 的一个子集,含 15 万个整理后的 CC 许可合成 3D 物体,每个物体用随机 HDRI 环境地图和 [-5°, 30°] 仰角渲染 21 帧 360° 轨道视频,在 50 个 GSO 数据集采样物体的未见测试集评估。
    • MVImgNet,由普通家庭物体多视图视频组成,分约 20 万训练视频和 900 测试视频,将纵向帧旋转为横向。
  • 模型:微调后的多视图模型为SVD-MV。进行消融研究,比较SVD-MV(基于视频先验)、SD2.1-MV(基于图像先验)、Scratch-MV(随机初始化),还与Zero123、Zero123XL、SyncDreamer等先进模型比较。
  • 指标:使用峰值信噪比(PSNR)、LPIPS以及在50个GSO测试物体上,生成帧与真实帧之间的CLIP相似度分数(CLIP-S)作为标准指标。
  • 训练:我们使用8个80GB的A100 GPU,总批次大小为16,学习率为1e-5,对所有模型训练12,000步(约16小时)。
  • 结果
    • 图9(a)显示SVD-MV性能优于SD2.1-MV和Scratch-MV,且少量迭代(约12,000次)就能有良好性能,训练时间更短(16小时)却与先进技术有竞争力。
    • 图9(b)展示不同微调模型收敛情况,SVD-MV仅1000次迭代CLIP-S和PSNR分数就远超对应模型。
    • 图8、图10分别展示GSO和MVImgNet测试物体上多视图生成结果的定性比较,生成帧多视图下一致且逼真。更多细节和样本见附录E。

结论

  • 提出了Stable Video Diffusion(SVD),这是一种用于高分辨率、最先进的文本到视频和图像到视频合成的潜在视频扩散模型。
  • 提出了一种整理大量视频数据的方法,将庞大且嘈杂的视频集合转化为适用于生成式视频模型的数据集。
  • 引入了视频模型训练的三个不同阶段,并分别分析了它们对最终模型性能的影响。
  • 视频扩散模型的多视图微调进行了开创性研究,结果表明SVD构成了强大的3D先验。

相关文章:

AIGC视频生成模型:Stability AI的SVD(Stable Video Diffusion)模型

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍Stability AI的视频生成模型SVD(Stable Video Diffusion)模型,这家公司在图像生成领域富有盛名,开发并维护了知名开源项目SD系列…...

Linux 系统错误处理简介

Linux 系统错误处理简介 1. errno:错误代码的载体2. strerror():错误信息的翻译官3. perror():便捷的错误信息输出4. 系统调用与库函数的区别5. 错误处理的最佳实践 在 C/C 程序开发中,我们经常需要处理各种错误情况 Linux 系统提…...

systemC示例

main.cpp #include <memory> using namespace std; #include "top.h" int sc_main(int i, char *av[]) { // 关闭关于 IEEE 1666 标准中过时特性的警告 sc_report_handler::set_actions("/IEEE_Std_1666/deprecated", SC_DO_NOTHING); cout <…...

C++打字模拟

改进于 文宇炽筱_潜水 c版的打字效果_c自动打字-CSDN博客https://blog.csdn.net/2401_84159494/article/details/141023898?ops_request_misc%257B%2522request%255Fid%2522%253A%25227f97863ddc9d1b2ae9526f45765b1744%2522%252C%2522scm%2522%253A%252220140713.1301023…...

国产低功耗带LCD驱动和触摸按键功能的MCU

以下是国产低功耗、集成LCD驱动和触摸按键功能的MCU精选型号及其核心特性&#xff0c;结合性能、功耗和适用场景进行综合推荐&#xff1a; 1.灵动微MM32L0130系列 257 核心特性&#xff1a;低功耗&#xff1a;待机模式功耗低至100nA&#xff0c;支持多种低功耗模式。 LCD驱动&a…...

在 imx93 平台调试 nau88c10 声卡

一、环境介绍 linux 版本&#xff1a;6.6.52 soc&#xff1a;imx9331 codec&#xff1a;nau88c10 使用的内核文件为 Image&#xff0c;dtb 文件为&#xff1a;imx93-11x11-evk.dtb 二、硬件检查 i2s 信号线要接对 i2c 控制信号建议为 4.7k 上拉 codec 供电可以按参考设计…...

机器学习-分类算法评估标准

一. 准确率 accuracy 将预测结果和测试集的目标值比较&#xff0c;计算预测正确的百分比 准确率越高说明模型效果越好 from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier #加载鸢尾花…...

美区TikTok解封后如何回归使用?

随着2025年初美区TikTok解封的消息引起了广泛关注&#xff0c;许多用户纷纷开始重新关注这一全球最受欢迎的短视频平台。在经历了数月的禁用期后&#xff0c;TikTok在美国市场的回归&#xff0c;代表了这一平台的巨大潜力和挑战。从用户的使用习惯&#xff0c;到平台的内容策略…...

行人识别检测数据集,yolo格式,PASICAL VOC XML,COCO JSON,darknet等格式的标注都支持,准确识别率可达99.5%

作者简介&#xff1a; 高科&#xff0c;先后在 IBM PlatformComputing从事网格计算&#xff0c;淘米网&#xff0c;网易从事游戏服务器开发&#xff0c;拥有丰富的C&#xff0c;go等语言开发经验&#xff0c;mysql&#xff0c;mongo&#xff0c;redis等数据库&#xff0c;设计模…...

grafana + Prometheus + node_exporter搭建监控大屏

本文介绍生产系统监控大屏的搭建&#xff0c;比较实用也是实际应用比较多的方式&#xff0c;希望能够帮助大家对监控系统有一定的认识。 0、规划 grafana主要是展示和报警&#xff0c;Prometheus用于保存监控数据&#xff0c;node_exporter用于实时采集各个应用服务器的事实状…...

【腾讯云】docker创建网络遇到Unable to enable SKIP DNAT rule

docker创建网络遇到Unable to enable SKIP DNAT rule 背景 今天打算在服务器上安装es,但是在创建网络时&#xff0c;提示 Error response from daemon: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER…...

DeepSeek R1模型解读与使用

DeepSeek在推出R1预览版两个月后&#xff0c;发布了R1的正式版本&#xff0c;并且开源了模型&#xff0c;开放了API调用。我们直接来解读一下这款模型。 这是官方的性能评测图。从左到右分别是DeepSeek-R1&#xff0c;o1正式版&#xff0c;32B蒸馏版R1&#xff0c;o1-mini&…...

AI新玩法:Flux.1图像生成结合内网穿透远程生图的解决方案

文章目录 前言1. 本地部署ComfyUI2. 下载 Flux.1 模型3. 下载CLIP模型4. 下载 VAE 模型5. 演示文生图6. 公网使用 Flux.1 大模型6.1 创建远程连接公网地址 7. 固定远程访问公网地址 前言 在这个AI技术日新月异的时代&#xff0c;图像生成模型已经成为了创意工作者和开发者手中…...

api开发如何确保通过非官方库解析口令的合法性?

通过非官方库解析淘宝口令可能存在违反淘宝平台规则以及法律法规的风险&#xff0c;很难完全确保其合法性。如果确实有需求&#xff0c;可从以下几个方面尽量降低风险&#xff0c;提高合法性&#xff1a; 了解法律法规 《中华人民共和国网络安全法》&#xff1a;需确保解析行为…...

第6章 ThreadGroup详细讲解(Java高并发编程详解:多线程与系统设计)

1.ThreadGroup 与 Thread 在Java程序中&#xff0c; 默认情况下&#xff0c; 新的线程都会被加入到main线程所在的group中&#xff0c; main线程的group名字同线程名。如同线程存在父子关系一样&#xff0c; Thread Group同样也存在父子关系。图6-1就很好地说明了父子thread、父…...

如何使用Python脚本将本地项目上传到 GitHub

前言 这里我们通过创建一个新的github仓库&#xff0c;来测试我们的脚本能否上传我们本地的项目&#xff0c;并且进行更新。首先你需要先安装 Git&#xff0c;关于这部分我好像没有记录过&#xff0c;这里我搜索看了一下&#xff0c;这篇博客写的Git安装详解应该是比较齐全的&…...

css动画水球图

由于echarts水球图动画会导致ios卡顿&#xff0c;所以纯css模拟 展示效果 组件 <template><div class"water-box"><div class"water"><div class"progress" :style"{ --newProgress: newProgress % }"><…...

Shellcode

什么是shellcode shellcode通常是软件漏洞利用过程中使用一小段机器代码 作用 1.启动shell&#xff0c;进行交互 2.打开服务器端口等待连接 3.反向连接端口 4.。。。 如何编写shellcode 1.设置rdi指向/bin/sh 2.rsi0,rdx0 3.rax0x3b 4.syscall进行系统调用 64位系统…...

Element使用表单重置如果不使用prop,重置无法生效

文章目录 为什么需要 prop&#xff1f;示例&#xff1a;使用 prop 的正确方式关键点总结 在 element-ui 的 el-form 组件中&#xff0c; prop 属性是与表单验证和表单字段绑定密切相关的&#xff0c;尤其在使用 resetFields() 重置表单数据时。 如果不使用 prop&#xff0…...

[Qt]系统相关-网络编程-TCP、UDP、HTTP协议

目录 前言 一、UDP网络编程 1.Qt项目文件 2.UDP类 QUdpSocket QNetworkDatagram 3.UDP回显服务器案例 细节 服务器设计 客户端设计 二、TCP网络编程 1.TCP类 QTcpServer QTcpSocket 2.TCP回显服务器案例 细节 服务器设计 客户端设计 三、HTTP客户端 1.HTTP…...

两台局域网电脑通过飞秋传输大文件失败的解决方案

问题描述&#xff1a; 局域网两台电脑之间传输大文件&#xff08;超过20G&#xff09;&#xff0c;不想太复杂&#xff0c;就各装个飞秋。但是通过直接发送文件发现总是失败&#xff0c;一会就中断了。 解决方法&#xff1a; 主界面上有一个文件共享的按钮&#xff0c;通过文…...

安卓程序作为web服务端的技术实现(二):Room 实现数据存储

已经实现web服务器安卓程序作为web服务端的技术实现&#xff1a;AndServer 实现登录权限拦截-CSDN博客 现在需要和正常web项目类似&#xff0c;那么就需要操作数据库 一般web项目都是选择较为重型的数据库如MySQL&#xff0c;SQL server等 这里是安卓项目&#xff0c;我目前…...

代码工艺:实践 Spring Boot TDD 测试驱动开发

TDD 的核心理念是 “先写测试&#xff0c;再写功能”&#xff0c;其过程遵循一个严格的循环&#xff0c;即 Red-Green-Refactor&#xff1a; TDD 的流程 1. Red&#xff08;编写失败的测试&#xff09; 根据需求&#xff0c;先编写一个测试用例&#xff0c;描述期望的行为。…...

MySQL命令及用法(精华版)

目录 DDL&#xff08;数据定义语言&#xff09; 数据库操作 表操作 DML&#xff08;数据操作语言&#xff09; DQL&#xff08;数据查询语言&#xff09; 基本查询 条件查询 聚合函数 分组查询 排序查询 分页查询 DCL&#xff08;数据控制语言&#xff09; 用户…...

73,【5】BUUCTF WEB [网鼎杯 2020 玄武组]SSRFMe(未解出)

进入靶场 又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码 <?php // 检查 URL 是否为内部 IP 地址 function check_inner_ip($url) {// 使用正则表达式检查 URL 格式是否以 http、https、gopher 或 d…...

修改word的作者 最后一次保存者 总编辑时间 创建时间 最后一次保存的日期

作者&#xff1a; 1.打开word文件 2.点击左上角的文件 3.选项 4.用户信息 5.将用户信息中的 姓名改为你需要的名字 最后一次保存者 1.word重命名为.zip文件 2.docProps中有个core.xml 3.用记事本打开有个lastModifiedBy标签&#xff0c;将里面内容改为你需要的名字 总编辑时…...

深入MapReduce——引入

引入 前面我们已经深入了HDFS的设计与实现&#xff0c;对于分布式系统也有了不错的理解。 但HDFS仅仅解决了海量数据存储和读写的问题。要想让数据产生价值&#xff0c;一定是需要从数据中挖掘出价值才行&#xff0c;这就需要我们拥有海量数据的计算处理能力。 下面我们还是…...

Formality:不可读(unread)的概念

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482https://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 在Formality中有时会遇到不可读(unread)这个概念&#xff0c;本文就将对此…...

leetcode刷题记录(八十一)——236. 二叉树的最近公共祖先

&#xff08;一&#xff09;问题描述 236. 二叉树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09;236. 二叉树的最近公共祖先 - 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科 [https://baike.baidu.com/item/%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B…...

C++:将字符数组rkpryyrag,每个字母转换为其前面第13个字母后输出,如果超过a则从z再继续接着数。例如:b前面第1个字母是a。a前面第3个字母是x。

代码如下&#xff1a; #include <iostream> #include <string> using namespace std;int main(){string str "rkpryyrag";for (int i 0; i < str.length(); i){if (str[i] > a && str[i] < z){if (str[i] - a < 13){cout <<…...

特征选择(机器学习)

目录 1. 为什么需要特征选择2. 常见的特征选择方法2.1 过滤式&#xff08;Filter Methods&#xff09;小示例&#xff08;用 Python 伪代码表达&#xff09;&#xff1a; 2.2 包裹式&#xff08;Wrapper Methods&#xff09;小示例&#xff08;RFE 伪代码示例&#xff09;&…...

基于微信小程序的个人健康管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

Windows系统提示RunDLL PcaWallpaperAppDetect错误修复方法

最近&#xff0c;Win11 24H2预览版和Win10 LTSC 2025功能更新偶尔会触发RunDLL错误弹窗 具体表现为 //英文提示 Error in C:\WINDOWS\system32\PcaSvc.dll Missing entry: PcaWallpaperAppDetect//中文提示 C:\WINDOWS\system32\PcaSvc.dll出错 丢失条目:PcaWallpaperAppDe…...

文件上传漏洞详解

第一关&#xff08;JS绕过&#xff09; 1.1使用bp进行绕过 先将要上传的php文件的后缀改为png&#xff0c;然后在上传时抓包&#xff0c;将png后缀再改为php&#xff0c;发包&#xff0c;此时上传成功 1.2使用js进行绕过 打开浏览器的检查&#xff0c;将其中的checkFile函数…...

mysql的mvcc

快速搞懂mvcc 全称 multi-version concurrency control 多版本并发控制。自动开启事务undo log读视图(read_view)结果过滤mvcc只在读已提交和可重复读隔离级别下运作读已提交隔离级别下&#xff0c;可重复读隔离级别下&#xff0c;总的来说mvcc是为了提高数据库并发性能而设计的…...

漏洞情报:为什么、要什么和怎么做

漏洞一直是网络攻防的焦点所在&#xff0c;因为漏洞直接或间接影响安全性的核心方面——权限。攻击者挖掘和利用漏洞&#xff0c;获取非授权的权限&#xff1b;防御方定位和消除漏洞&#xff0c;监测和阻断漏洞的利用&#xff0c;使攻击者无法利用漏洞达到其目的。漏洞信息本质…...

kotlin的协程的基础概念

Kotlin的协程是一种用于简化异步编程的强大工具。 理解协程的基础概念可以帮助开发者有效地利用其能力。 以下是Kotlin协程的一些关键基础概念&#xff1a; 协程&#xff08;Coroutines&#xff09; &#xff1a; 协程是一种用于处理并发任务的编程模型&#xff0c;它可以在单…...

C语言教程——动态内存管理(2)

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据 总结 前言 我们之前学了动态内存管理分配函数&#xff0c;也是熟悉了动态内存分配函数&#xff0c;基于动态内存分配我把之前的通讯录做了修改&#xff0c;上传到了gitee上&#xff0c;这篇文章接着…...

LeetCode刷题 -- 45.跳跃游戏 II

题目 C代码 int jump(int* nums, int numsSize) {int i 0;int j 0;int last_i 0;int last_can 0;int max_i 0;int max_can 0;int min_jump 0;if (numsSize < 2) {//注意点1&#xff1a;数组小于两个的时候&#xff0c;只需要跳转0次&#xff1b;goto end;}// 注意点…...

谈谈RTMP|RTSP播放器视频view垂直|水平反转和旋转设计

技术背景 我们在做RTMP|RTSP播放器的时候&#xff0c;有这样的技术诉求&#xff0c;有的摄像头出来的数据是有角度偏差的&#xff0c;比如“装倒了”&#xff0c;或者&#xff0c;图像存在上下或者左右反转&#xff0c;这时候&#xff0c;就需要播放器能做响应的处理&#xff…...

vulnhub靶场【kioptrix-1靶机】

前言 靶机&#xff1a;kioptrix-1&#xff0c;IP地址为192.168.1.104 攻击&#xff1a;kali&#xff0c;IP地址为192.168.1.16 都采用虚拟机&#xff0c;网卡为桥接模式 文章中涉及的靶机&#xff0c;来源于vulnhub官网&#xff0c;想要下载&#xff0c;可自行访问官网下载&…...

PyQt5之QCalendarWidget

十八、QCalendarWidget 1.描述 提供了一个基于每月日历控件&#xff0c;允许用户选择一个日期。 继承自QWidget 2.功能作用 (1) 构造函数 QCalendarWidget(parent: QWidget None)(2) 日期范围 setMinimumDate(QDate date) minimumDate() -> QDate setMaximumDate(QD…...

【Qt】窗口

窗口 菜单栏 QMenuBar给菜单设置快捷键添加子菜单添加分割线设置图标 工具栏 QToolBar状态栏 QStatusBar浮动窗口 QDockWidget对话框自定义对话框通过代码方式通过图形化方式 模态对话框 Qt 内置对话框消息对话框 QMessageBox颜色对话框 QColorDialog文件对话框 QFileDialog字体…...

初阶5 排序

本章重点 排序的概念常见排序的算法思想和实现排序算法的复杂度以及稳定性分析 1.排序的概念 排序: 所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。稳定性: 假定在待排序的记录序列中&#xff0…...

备赛蓝桥杯之第十五届职业院校组省赛第二题:分享点滴

提示&#xff1a;本篇文章仅仅是作者自己目前在备赛蓝桥杯中&#xff0c;自己学习与刷题的学习笔记&#xff0c;写的不好&#xff0c;欢迎大家批评与建议 由于个别题目代码量与题目量偏大&#xff0c;请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题&#xff0…...

qml ColumnLayout详解

1、概述 ColumnLayout 是 QML 中用于在垂直方向上排列子元素的一种布局管理器。它继承自 Item 并提供了简单的布局机制&#xff0c;使得子元素能够按照从上到下的顺序自动排列。ColumnLayout 通常用于创建具有垂直层次结构的用户界面。 2、重要属性 layoutDirection 类型&…...

Qt 5.14.2 学习记录 —— 십팔 对话框

文章目录 1、Qt对话框2、自定义对话框1、代码方式2、图形化方式 3、模态对话框4、QMessageBox5、QColorDialog6、QFileDialog7、QFontDialog8、QInputDialog 1、Qt对话框 Qt的对话框用QDialog类来表示&#xff0c;可以自定义一些类来实现自定义对话框&#xff0c;但需要继承自…...

AI 编程工具—Cursor进阶使用 Rules for AI

AI 编程工具—Cursor进阶使用 Rules for AI 这里配置是给所有的会话和内嵌模式的,你可以理解为是一个全局的配置 下面的代码是之前Cursor 给我们生成的,下面我们开始配置Rules ,来让Cursor生成的代码更加符合我们的编程习惯 def quick_sort(arr):"""使用快…...

SpringBoot 实现动态管理定时任务 Job的动态操作(添加、修改、启停、执行、删除)以及界面展示和具体Job的创建与执行示例

SpringBoot 实现动态管理定时任务 Job的动态操作&#xff08;添加、修改、启停、执行、删除&#xff09;以及界面展示和具体Job的创建与执行示例 关键接口类&#xff1a; CronTaskRegistrar SchedulingRunnable . 添加定时任务注册类&#xff0c;用来增加、删除定时任务 impo…...

FPGA中场战事

2023年10月3日,英特尔宣布由桑德拉里维拉(Sandra Rivera)担任“分拆”后独立运营的可编程事业部首席执行官。 从数据中心和人工智能(DCAI)部门总经理,转身为执掌该业务的CEO,对她取得像AMD掌门人苏姿丰博士类似的成功,无疑抱以厚望。 十年前,英特尔花费167亿美元真金白银…...