深度解析Sora的核心技术

news2025/2/25 8:29:29

Sora要解决的核心问题

Sora面临的挑战是将不同类型的视觉信息,如视频、文本、图像和声音等,整合为一种共同的表征形式。这种转换是实现统一训练过程的关键,旨在将各类数据集中到一个训练框架中,以便于进行大规模的统一学习。简而言之,OpenAI的目标是将视频数据和其他多种类型的数据结合起来,在一个统一的训练环境中进行处理和学习。

AI视频思路1:

在视频生成领域,有一种方法是基于单帧图像内容进行扩展,即通过分析当前帧的图像来预测下一帧的内容。这种方法将每一帧视为前一帧的自然延伸,从而创建出连续的视频流。

在制作视频时,为了提高稳定性,通常的步骤是先使用文本描述生成初始的图像,然后再基于这些图像生成视频。然而,这个过程存在一个核心问题:由于AI从文本生成图像本身就具有一定的随机性,这种随机性在基于图像生成视频的过程中被放大,导致最终的视频结果难以预测和控制。

这种方法的局限性在于,生成的帧之间缺乏深层的语义理解和本质联系。由于每帧图像的生成相对独立,这使得在文本到视频或图像到视频的转换过程中难以实现精确的控制和稳定性。以stable diffusion体系下的animediff为例,这种技术常常产生出变幻莫测的效果,不适合用于需要稳定输出的视频生成。

尽管如此,这种方法在视频转视频的应用场景中表现出色。例如,在B站上,许多美女跳舞的视频就是通过逐帧重绘技术制作的。这种方法允许创作者轻松改变视频的风格,从而创造出多样化的视觉效果。

AI视频思路2:

在视频生成领域,另一种更为主流的方法是直接对视频本身进行训练。这种方法认识到,基于单帧推导的视频效果并不理想,因此转而关注于视频内容的整体训练。

这种主流方法的操作步骤是,每次选取一段4秒钟的视频片段,并告诉AI这段视频的内容是什么。通过大规模的训练,AI可以学会生成与训练片段相似风格的4秒钟视频。

选择4秒钟的时长主要是因为视频数据相对于图像来说非常大,而显卡的显存有限。在传统方法中,我们只能将有限的视频数据放入显存中进行训练。最初,AI视频的研究仅限于8帧或16帧的视频片段,随着技术的进步,这个时长逐渐扩展到了大约4秒钟。

在这方面,Runway和Pika这两家公司是该领域的代表,它们都能够完成从文本到视频和从图像到视频的生成任务。对于AI已经学习过的内容,它们在4秒内的表现效果较好。然而,由于每次训练只包含4秒钟的视频片段,AI学习到的是片段化的内容,这导致AI难以生成长视频,且视频的连续性和稳定性较差。

此外,由于AI只获得了片段化的记忆,它很难构建对现实世界的完整理解,其“知识量”非常有限,也没有涌现出新的能力。因此,当输入AI不熟悉的内容时,生成的效果可能会非常差。

为了突破AI视频生成的难题,我们必须解决这些核心问题,包括如何提高AI对视频内容的理解能力,如何增强视频生成的连续性和稳定性,以及如何扩展AI的知识量,使其能够处理更广泛的内容。

高效地训练大体量的视频数据

进一步考虑视频数据的多样性,我们发现视频可以呈现多种形式,包括横屏和竖屏格式,以及从4K高清到低分辨率的64x64像素马赛克图片等多种分辨率。这些视频数据来源多样,具有不同的分辨率、宽高比和属性,给AI训练带来了挑战。

为了应对这些挑战,必须开发一种统一的方法来对这些视频数据进行归一化处理,以便AI可以进行大规模训练。Sora的核心任务就是找到这样一种方法,它能够将不同类型的视觉数据转换为统一的表示形式,并实现集中训练。

Sora的工作重点是将海量的视频数据转换为适合Transformer架构处理的向量形式,以便进行后续的训练。为了实现这一目标,Sora采用了多种技术手段来逐步压缩和提炼视频中的核心内容,从而使得视频数据可以在统一的框架下进行有效的训练和学习。通过这种方式,Sora能够处理不同格式的视频数据,使其能够在AI训练过程中得到有效利用。

第一步:压缩原始视频,提炼视频特征

Sora的训练过程首先将原始视频数据转化为低维度的潜空间特征,这一步骤的目的是为了解决视频和图像数据在原始形式下体积过大的问题。在日常生活中,我们观看的视频和图片通常具有很高的分辨率,包含大量的像素信息。这些高分辨率的视频和图像数据对于计算机来说是非常庞大的,直接处理这样的数据会消耗大量的计算资源,包括内存和处理时间。

通过将视频数据转化为低维度的潜空间特征,Sora可以减少数据的复杂性,同时保留视频内容的关键信息。潜空间特征是一种压缩表示,它通过算法提取出数据中最显著和最重要的特征,并将其映射到一个维度更低的向量空间中。这个过程类似于将高维数据压缩到一个更加紧凑的形式,使得AI模型可以在更高效的计算环境中进行训练和推理。这种转换不仅提高了处理效率,还使得AI模型能够更容易地捕捉到视频内容的基本结构和动态变化,从而在保持数据有用性的同时,减少了存储和处理的需求。

对于AI来说,尤其是那些设计用于处理低维度向量的模型,直接处理这些原始的、像素级的数据是非常困难的,因为它们会消耗大量的计算资源,并且训练时间会非常长。为了解决这个问题,我们需要对原始视频进行“压缩”处理,这实际上是一个特征提取的过程。这个过程涉及将视频中的像素数据转换为一组更紧凑、更易于管理的特征信息。这些特征信息代表了视频内容的关键视觉元素,如边缘、纹理、颜色分布和运动模式等,而不需要保留每个像素的具体信息。通过这种方式,我们可以大大减少数据的大小,同时保留视频内容的核心信息。这种压缩后的特征表示可以有效地输入到AI模型中,使得模型能够更快地进行训练和推理,同时还能保持较高的视频理解和生成能力。

把原图提炼成一个潜空间特征,这样把需要处理的数据量大幅压缩了,只提取里面的浓缩的精华。之后,我们可以针对潜空间的特征信息进行各种操作,并生成新的图片。正是基于这个核心原理,才有了这一轮AI绘图的大爆发。在AI绘图时,先输入了一些关键词(prompt),而这些关键词就会形成一堆潜空间特征,最终AI通过vae编码器生成一大堆类似的AI图。比如Midjourney,一次性可以生成4张都符合你描述的特征,但又略有不同的图片,其实就是这个原理的最经典体现。 

从上面的例子我们可以理解,将原始的图片转化为潜空间特征,再进行处理,可以既保留原始图片的关键特征信息,同时又可以极大压缩数据量和信息量。

Sora很可能对Stable Diffusion体系下的图片VAE(变分自编码器)进行了升级,以支持视频数据的处理。这样,OpenAI就能够将大量的原始视频数据转化为低维度的潜空间特征。

这种转化过程可以类比为提炼视频的核心要点信息,这些信息能够有效地表示视频的关键内容。通过这种方式,视频被压缩至潜空间,而这些潜空间特征随后可以通过解码器还原为视频数据,类似于解压一个压缩文件。

然而,需要注意的是,这种压缩过程是有损的。这意味着将视频压缩至潜空间并再次解压,得到的视频将是原始视频的一个近似版本,而不是完全相同的副本。这种近似保留了视频的主要特征和内容,但可能会丢失一些细节信息。这种有损压缩是许多媒体处理技术中的一个常见权衡,它允许在存储和处理效率之间找到平衡。

第二步:将视频特征进一步拆分成时空图像块(spacetime patches)

在视频训练领域,为了进行大规模的视频处理和学习,我们需要定义视频训练中的基本单元,这类似于大型语言模型中的“token”。在语言模型中,token代表最小的文本单位,它可以是单词、词组或标点符号,是构成语言的基本拼图块。

将这个概念应用到视频领域,我们可以将视频想象成由一系列“patches”(补丁)组成的拼图游戏。每个patch是视频中的一个小块,它代表了视频帧中的一个局部区域,包含了时间上和空间上的信息。这些patches按照时间和空间顺序组合在一起,形成了连续的视频流。

在Sora的视频处理中,patch成为了AI视频训练的基本单元。Sora的主要任务就是预测视频序列中的下一个patch,这类似于GPT模型预测下一个token的工作。通过学习这些patches及其组合方式,Sora能够理解和生成视频内容,捕捉视频中的动态变化和关键特征。

使用patches作为基本单元的原因与语言模型中使用tokens类似,包括灵活性、效率、兼容性和提高理解力等方面:

  • 灵活性:通过将视频分解为patches,模型可以更灵活地处理不同类型的视频内容,无论是静态场景还是动态变化。
  • 效率:处理patches比处理整个视频帧更加高效,因为它允许模型专注于学习视频内容的关键部分。
  • 兼容性:使用patches作为基本单元,模型能够处理不同分辨率和格式的视频,因为patches可以根据视频的特定属性进行调整。
  • 提高理解力:通过学习大量的patches,模型能够把握视频的深层结构和时间上的连续性,从而更好地理解和生成视频内容。

总之,patches作为视频训练的基本单元,是Sora理解和生成视频内容的核心机制。通过这种方式,Sora能够在视频数据的大规模训练中发挥重要作用。

patches是图像块

由于图像通常具有较大的尺寸,直接使用这些图像进行训练并不切实际,尤其是在使用Transformer架构时。这是因为Transformer模型在处理序列数据时,期望输入的序列长度是固定的,而原始图像的像素尺寸往往过大,无法直接作为输入。

在Vision Transformer (ViT)这篇开创性的论文中,作者提出了一种将图像转换为适合Transformer处理的格式的方法。这个思路包括以下几个关键步骤:

  • 图像分割:将原始图像分割成一系列固定大小的图像块(patches)。这些图像块通常是正方形的,面积相同。
  • 线性嵌入:将每个图像块展平并通过一个线性层(即全连接层)转换成一个固定维度的向量。这个步骤将每个图像块映射到一个连续的特征空间中。
  • 位置编码:由于Transformer模型本身不具有处理序列顺序的能力,因此需要将位置信息编码到图像块的向量中。这通常通过添加位置嵌入(position embeddings)来实现,这些位置嵌入是与图像块向量相加的固定数值,表示了每个图像块在原始图像中的位置。
  • 分类嵌入:在处理图像块序列之前,通常会添加一个额外的分类嵌入(class token),这个嵌入的目的是为了在后续的模型训练中,能够区分图像的不同类别或进行其他分类任务。
  • Transformer处理:将经过上述处理的图像块向量序列作为输入,送入Transformer模型进行处理。Transformer模型利用其自注意力机制,能够同时处理这些向量,捕捉图像块之间的关系,并最终理解整个图像的内容。

通过这种方式,Vision Transformer (ViT)成功地将Transformer架构应用于图像识别任务,并且取得了与传统卷积神经网络相媲美甚至更好的性能。ViT的这种设计理念为后续的视觉Transformer模型奠定了基础,并在各种视觉任务中得到了广泛应用和发展。

在处理图像时,特别是在为Transformer架构准备数据时,一个常见的做法是将图像分割成多个面积相同的图像块,这些图像块通常被称为patches。每个图像块都是原始图像的一个局部区域,包含了图像的一部分信息。

这些图像块随后会被序列化,即按照一定的顺序排列成一条线性序列。在序列化的过程中,每个图像块通常会被转换成一个固定长度的向量,这个向量可以简单理解为一串数字,它代表了图像块的特征。这个过程可以通过卷积神经网络(CNN)或其他特征提取方法来实现。

在形成最终的训练向量时,不仅图像块的特征会被包含进去,而且还会记录每个图像块在原始图像中的位置信息。这样,当模型处理这些向量时,它不仅能够了解每个图像块的内容,还能知道这些块在图像中的相对位置,这对于理解图像的整体结构和上下文是非常重要的。

通过这种方式,复杂的图像数据被转换成了Transformer架构能够处理的形式,即一系列的向量。Transformer模型利用其自注意力机制,可以同时处理这些向量,捕捉图像块之间的关系,并最终理解整个图像的内容。这种处理方法使得AI能够有效地学习和生成具有高度复杂性和多样性的图像内容。

spacetime patches是时空图像块

对于视频数据的处理,仅仅将图像分割成静态的图像块是不够的,因为视频包含了时间维度上的连续性。为了更有效地处理视频,Sora采用了时空图像块(spacetime patches)的概念,这是一种专为视频数据设计的处理技术。

时空图像块不仅包含了每个图像块的空间信息,如尺寸、颜色和纹理,还包含了这些图像块随时间的变化信息。这样,每个时空图像块实际上是一个立方体,它在空间维度上是一个小区域,在时间维度上则包含了连续几帧的信息。

通过将视频分割成时空图像块,Sora能够捕捉到视频中的动态变化和事件的发展。这些时空图像块随后被转换成一系列的向量,每个向量不仅携带了图像块的视觉信息,还包括了它们在视频中的时间和空间位置信息。这样做使得模型能够理解每个图像块的内容及其在整个视频中的相对位置和随时间的演变。

将时空图像块作为视频处理的基本单元,使得Sora能够利用Transformer架构的优势,同时处理空间和时间上的信息。这种处理方法为视频理解、生成和转换提供了强有力的工具,使得AI能够在处理视频数据时更加高效和有效。

因此,spacetime patches(时空图像块)的引入是为了同时捕捉视频中的空间信息(即图像的细节)和时间信息(即图像如何随时间变化)。这种技术允许AI模型更全面地理解和处理视频数据。

具体来说,一个spacetime patch是一个立方体,它不仅包含了视频帧中的一小块空间区域,还包含了这一区域在连续几帧中的变化。这样,每个时空图像块就携带了视频在特定时间间隔内的动态信息。通过这种方式,AI模型能够学习到视频中的运动模式、对象行为的连续性以及场景的动态变化。

在处理视频时,将这些时空图像块作为输入,AI模型可以更加深入地分析视频内容,从而在视频理解、分类、分割、生成等任务中取得更好的性能。这种方法对于处理具有复杂时间和空间关系的视频数据尤为重要,因为它能够帮助模型捕捉到视频中的关键特征和事件。

以一个跳动的心形图案视频为例,使用spacetime patches(时空图像块)可以帮助Sora捕捉到心形图案随时间跳动的动态变化。当视频被划分为时空图像块时,每个patch不仅包含了心形图案的空间细节,比如颜色、形状和纹理,还包含了这些细节随时间的变化信息。例如,一个时空图像块可能会捕捉到心形图案从收缩到膨胀再到收缩的过程,从而包含了整个跳动周期的一部分。

通过分析这些时空图像块,Sora能够学习到心形图案的跳动节奏、速度和模式,以及它与背景或其他对象的互动。这样,Sora不仅能够理解视频中的静态图像内容,还能够理解这些内容随时间的变化和动态。利用这种技术,Sora能够生成新的视频内容,其中可以包含具有丰富空间细节和时间动态的跳动心形图案。例如,它可以生成一个视频,展示不同大小、颜色和节奏的跳动心形图案,或者在不同的背景上以不同的速度跳动。

总之,时空图像块技术使Sora能够深入理解和生成视频中的时空动态,从而在视频处理和生成任务中实现更高的灵活性和表现力。

灵活的时空图像块

时空图像块的概念为我们提供了一种灵活的方式来处理视频数据,它允许我们根据需要捕捉不同尺度的时间和空间动态。这种切片可以是局部微小的细节,比如猫咪轻轻飘动的毛发;也可以是广阔的场景,比如航拍长镜头中的大范围运动。Sora利用这种灵活性来生成从连续长镜头到局部细节的各种视频内容。

在实现时空图像块的过程中,Sora可能确实参考了先前的研究和技术,如Vision Transformer(ViT)中固定尺寸图像块的思路。然而,Sora可能也采用了更先进的技术,如Navit中的“Patch n’ Pack”,以处理不同分辨率和宽高比的输入。

“Patch n’ Pack”技术允许在训练过程中灵活处理不同尺寸和比例的图像。这意味着,无论是哪种宽高比或分辨率的内容,都可以被拆分成图像块,并且这些图像块可以根据不同的需求调整大小。此外,这种技术还允许将来自不同图像的图像块打包到同一个序列中,从而使得不同分辨率和宽高比的内容可以灵活组合,形成一个统一的训练数据集。

通过这种方式,Sora能够处理和生成具有不同细节层次的视频内容,同时保持高效和稳定的表现。这种能力使得Sora在视频理解和生成任务中表现出色,能够处理从宏观场景到微观细节的广泛内容。

另外,“spacetime patches”技术在视频处理中扮演着至关重要的角色,它提供了一种高效的方式来处理视频数据,尤其是在训练阶段。由于视频中的帧与帧之间往往存在大量的重复信息,这种技术可以识别并丢弃这些雷同的图像块,从而减少训练所需的计算资源和时间。

“spacetime patches”类似于语言模型中的单词或词组(token),成为构成视频或图像的基本单元。通过将视频或图像分解成多个patch,我们实际上是将连续的视觉信息转换成了一系列可以被模型处理的离散单元。这种方法使得模型能够处理和生成各种分辨率、持续时间和宽高比的视频,因为模型学习的是视频的基本构成单元——时空图像块的表示,而不是整个视频的全貌。

Sora通过一个视频压缩网络将视频数据压缩成一个低维的潜在空间表示,这个过程既减少了视频在时间上的维度(比如减少帧数),也减少了空间上的维度(比如降低分辨率)。然后,这个压缩后的视频被分解成一系列的“时空patch”,这些patch成为了模型学习和生成的基础。

基于patch的表示方法有几个重要的好处:

  • 灵活性:模型可以处理不同分辨率、不同持续时间和不同宽高比的视频和图像,因为无论原始视频或图像的规模如何,都可以通过调整patch的数量和布局来适配。
  • 效率:通过将视频和图像转换成patch,模型可以更高效地学习视觉数据的复杂特征,因为每个patch都包含了局部的信息,这些信息是生成或理解整个视频和图像的关键。
  • 扩展性:类似于语言模型可以通过学习大量文本token来掌握语言的复杂性,基于patch的视觉模型也可以通过学习大量视觉patch来掌握视觉世界的复杂性。

通过这种方式,Sora能够以一种高效和灵活的方式处理视频数据,从而在视频理解和生成任务中实现高性能。

Sora训练过程

通过上述解释,我们现在可以理解Sora是如何将原始视频转换为最终可训练的时空向量的。这个过程可以概括为以下几个步骤:

  • 序列帧提取:首先,原始视频被转换为一系列的帧,这些帧代表了视频在时间上的连续性。
  • 特征压缩与提炼:这些序列帧图片随后通过OpenAI训练的模型进行压缩和提炼,转换成时空潜空间特征(spacetime latent features)。这些特征代表了视频内容的关键视觉元素,是视频的压缩表示。
  • 时空图像块分割:时空潜空间特征进一步被分割成时空图像块(Spacetime patches)。每个时空图像块包含了视频在特定时间间隔内的空间信息及其变化。
  • 向量转化:最后,这些时空图像块被转化为可训练的一维空向量。这些向量代表了视频内容的基本构成单元,可以被Diffusion扩散模型所处理和训练。

通过这种方式,Sora能够将原始视频数据转换为适合Diffusion扩散模型训练的格式。这种基于时空图像块的方法不仅提高了训练的效率,还增强了模型处理不同类型视频内容的能力。最终,这种转换使得Sora能够在视频生成、编辑和其他相关任务中展现出强大的性能。

视频文本描述

OpenAI 在视频理解和生成领域取得了一项重要进展,他们开发了一种新的技术,名为 DALL·E 3,这项技术能够将简短的文本提示转化为对视频内容的详细描述。这类似于 GPT-4V,一个被微调的模型,它能够清晰地按照规范来描述视频中的内容,包括视频的主要内容、角色动作、环境背景、细节以及风格等。这些描述内容比视频原始的标题信息更加详细,为视频的生成和编辑提供了丰富的上下文信息。

此外,这些描述内容可以与前面提到的时空图像块技术相结合,用于视频的训练和生成。在训练阶段,视频数据被转换成时空图像块,这些图像块不仅包含了视频的空间信息,还包含了时间变化信息。这些时空图像块随后被转化为适合 Transformer 架构处理的一维向量,用于模型的训练。在生成阶段,AI 模型利用训练好的时空图像块,结合详细的文本描述,生成高质量的视频内容。

这种结合了文本描述和时空图像块的技术,不仅提高了视频处理的效率,还增强了 AI 模型对视频内容的理解和生成能力。OpenAI 的这一技术为视频内容的创作和编辑提供了新的可能性,有望在视频制作、媒体内容生成等领域发挥重要作用。

Diffusion Transformer训练

视频的文本描述与时空图像块转换成的向量被匹配在一起,用于训练最终的Diffusion模型。在这个过程中,Sora对原始Diffusion模型的Unet结构进行了替换,采用了Transformer架构。这一部分的实现细节基于Dit的架构(参考文献:https://arxiv.org/abs/2212.09748)。

尽管在骨干网络架构上进行了替换,但Sora的基本原理与经典的Diffusion扩散模型仍然非常相似。这种方法在大体量数据训练上表现出色,数据量越大,模型的效果越好。

通过结合文本描述和时空图像块,Sora能够在视频生成、编辑和其他相关任务中展现出强大的性能。这种结合了视觉和文本信息的方法,为视频内容的创作和编辑提供了新的可能性,有望在视频制作、媒体内容生成等领域发挥重要作用。

OpenAI 利用其强大的计算资源,对 Sora 进行了大规模的训练。这一训练过程涉及到大量的视频数据和复杂的模型架构,需要极高的计算能力和内存资源。通过这种大规模的训练,OpenAI 能够使得 Sora 模型在视频理解和生成方面达到更高的准确性和灵活性。

Sora 的训练和优化过程是 OpenAI 团队的重要工作之一。他们通过不断的调整和优化模型架构,以及采用最新的技术和算法,使得 Sora 模型在视频处理和生成方面取得了显著的进展。

OpenAI 的这种训练方式,充分利用了其在计算资源和技术方面的优势,使得 Sora 模型在视频理解和生成领域取得了重要的突破。这种训练方式也为其他研究团队提供了一种新的思路和方法,有望推动整个视频处理和生成领域的发展。

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

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

相关文章

机器学习 深度学习资料 资源machine learning

Kaggle入门,看这一篇就够了 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/25686876 day1-1.什么是机器学习_哔哩哔哩_bilibiliday1-1.什么是机器学习是10天学会机器学习从入门到深度学习的第1集视频,该合集共计62集,视频收藏或关注UP主&a…

3.网络游戏逆向分析与漏洞攻防-游戏启动流程漏洞-游戏启动流程的分析

内容参考于:易道云信息技术研究院VIP课 上一个内容:项目搭建 首先下图红框里是游戏启动的程序 游戏启动之后的名字(fxgame.exe) 一般游戏启动的架构: 第一种:登录器程序启动游戏主程序,然后游…

【快速搞定Webpack5】基本配置及开发模式介绍(二)

在开始使用webpack之前么,我们需要对Webpack的配置有一定的认识。 一、5大核心概念 1. enty(入口) 指示webpack从哪个文件开始打包 2. output(输出) 指示webpack打包完的文件输出到哪里去,如何命名等 …

说一下 JVM 有哪些垃圾回收算法?

一、标记-清除算法 标记无用对象,然后进行清除回收。 标记-清除算法(Mark-Sweep)是一种常见的基础垃圾收集算法,它将垃圾收集分为两个阶段: 标记阶段:标记出可以回收的对象。清除阶段:回收被标…

【C++】C++11下线程库

C11下线程库 1. thread类的简单介绍2.线程函数参数3.原子性操作库(atomic)4.mutex的种类5. RAII风格加锁解锁5.1Lock_guard5.2unique_lock 6.condition_variable 1. thread类的简单介绍 在C11之前,涉及到多线程问题,都是和平台相关的,比如wi…

Nginx服务介绍与部署配置

目录 一、Nginx相关介绍 1. 概述 2. 优缺点 3. 零拷贝技术 4. I/O模型相关概念 5. 网络I/O模型 5.1 阻塞型I/O模型 5.2 非阻塞型I/O模型 5.3 多路复用I/O型 5.4 信号驱动式I/O模型 5.5 异步I/O模型 6. 事件驱动模型 7. Nginx与Apache区别 二、Nginx部署和使用 1…

网贷大数据查询多了对征信有影响吗?

网贷大数据在日常的金融借贷中起到很重要的风控作用,不少银行已经将大数据检测作为重要的风控环节。很多人在申贷之前都会提前了解自己的大数据信用情况,那网贷大数据查询多了对征信有影响吗?本文带你一起去看看。 首先要说结论:那就是查询网…

ubuntu 22.04 图文安装

ubuntu 22.04.3 live server图文安装 一、在Vmware里安装ubuntu 22.04.3 live server操作系统 选择第一个选项开始安装 选择English语言 选择中间选项不更新安装,这是因为后续通过更换源之后再更新会比较快 键盘设计继续选择英文,可以通过语言选择…

单链表(上)

1. 链表的概念 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表 中的指针链接次序实现的。 链表的结构也可以想像为一列火车,每节车厢都是一个成员,它们互补影响,但又通过一个装…

时间获取、文件属性获取 2月20日学习笔记

执行两次代码&#xff0c;打印出两次执行过程中新增的文件及删除的文件 #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <fcntl.h> #include <stdio.h> #include <string.h> #include <dirent.h>#def…

Redis篇----第十一篇

系列文章目录 文章目录 系列文章目录前言一、Redis 如何做内存优化?二、Redis 回收进程如何工作的?三、都有哪些办法可以降低 Redis 的内存使用情况呢?四、Redis 的内存用完了会发生什么?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下…

LabVIEW风力机智能叶片控制系统

​LabVIEW风力机智能叶片控制系统 介绍了一种风力机智能叶片控制系统的开发。通过利用LabVIEW软件与CDS技术&#xff0c;该系统能够实时监测并调整风力机叶片的角度&#xff0c;优化风能转换效率。此项技术不仅提高了风力发电的稳定性和效率&#xff0c;而且为风力机的智能化管…

Pandas时间序列数据补全

一、问题 时间序列数据缺失&#xff0c;将其补全。 如下图所示&#xff0c;数据存在缺失秒级的情况 二、方法 1、需要将时间戳字段设置成 df 的索引 2、使用df.resample()方法 (1)上采样&#xff08;将上一条数据作为当前缺失数据&#xff09; resample()中的参数&#x…

内核移植学习

内核移植 内核移植就是指将RT-Thread内核在不同的芯片架构、不同的板卡上运行起来。 移植可分为CPU架构移植和BSP板级支持包移植两部分。 CPU架构移植 在嵌入式领域有多种不同CPU架构&#xff0c;例如Cortex-M、ARM920T、MIPS32、RISC-V等等。 为了使RT-Thread能够在不同C…

【软件架构】01-架构的概述

1、定义 软件架构就是软件的顶层结构 RUP&#xff08;统一过程开发&#xff09;4 1 视图 1&#xff09;逻辑视图&#xff1a; 描述系统的功能、组件和它们之间的关系。它主要关注系统的静态结构&#xff0c;包括类、接口、包、模块等&#xff0c;并用于表示系统的组织结构…

Android基础Adapter适配器详解

一、概念 Adapter是后端数据和前端显示UI的适配器接口。常见的View如ListView、GridView等需要用到Adapter. BaseAdapter&#xff1a;抽象类&#xff0c;实际开发中继承这个类并且重写相关方法&#xff0c;用得最多的一个Adapter&#xff01; ArrayAdapter&#xff1a;支持泛型…

Gradle统一管理依赖

背景 随着项目越来越大&#xff0c;module 越来越多&#xff0c;依赖的库也越来越多&#xff0c;依赖管理也越来越混乱。 我们一般会有以下需求&#xff1a; 1. 项目依赖统一管理&#xff0c;在单独文件中配置 2. 不同 Module 中的依赖版本号统一 管理 Gradle 依赖 说明&a…

Vue3学习——标签的ref属性

在HTML标签上&#xff0c;可以使用相同的ref名称&#xff0c;得到DOM元素ref放在组件上时&#xff0c;拿到的是组件实例&#xff08;组件defineExpose暴露谁&#xff0c;ref才可以看到谁&#xff09; <script setup lang"ts"> import RefPractice from /compo…

C++/C函数指针及函数指针数组

文章目录 什么是函数指针函数指针的使用为什么要使用函数指针&#xff1f;回调函数函数指针数组及使用阅读两段有趣的代码指向成员函数的指针&#xff08;C特有&#xff09; 什么是函数指针 首先它是一个指针&#xff0c;一个指向函数的指针&#xff0c;在内存空间中存放的是函…

Camunda快速入门(五):设计一个带DMN业务规则的流程

接上一篇文章&#xff1a;Camunda快速入门&#xff08;四&#xff09;&#xff1a;设计一个带网关的流程 在本节中&#xff0c;您将学习如何使用 BPMN 2.0 业务规则任务和 DMN 1.3 决策表将决策自动化添加到流程中。 1、将业务规则任务添加到流程 使用 Camunda Modeler 打开…